2017-03-24 3 views
0

Je suis actuellement en train d'essayer de faire une application Android qui ne se termine jamais (redémarrage lorsque gelé/arrêté/glissé/tué etc ..) pour un certain usage. Donc, j'utilise le service d'arrière-plan avec onTaskRemoved() pour redémarrer le service lorsqu'il est supprimé de la liste des applications récentes. Aussi START_STICKY pour le garder en arrière-plan.android service d'arrière-plan s'arrêtant lors de l'exécution d'autres applications

Mon application répond bien à ma voix (elle montre du toast) quand il n'y a pas beaucoup de nouvelles applications en cours d'exécution. Mais quand il y a un peu de temps ou qu'il y a 3 ~ 4 applications en cours d'exécution, ça gèle (ça ne répond pas à ma voix).

Existe-t-il un moyen de faire en sorte que mon application soit toujours au dessus des autres applications (comme toujours en haut de la liste des applications récentes qui s'affiche lorsque vous appuyez sur le bouton accueil)?

S'il vous plaît aidez-moi. Je sais que cela peut sembler bizarre d'essayer de créer une application qui ne se termine jamais, mais si vous m'aidez, ce sera une aide précieuse pour mon projet.

Merci :)

Répondre

0

pour Android ne vous arrêtez pas le service que vous pouvez appeler startForeground()

Cependant, certains services ne seront pas atteints par l'utilisateur si elles mystérieusement disparaissent. Par exemple, l'application de lecteur de musique par défaut qui expédie avec Android utilise un service pour la lecture de musique. De cette façon, l'utilisateur peut écouter de la musique tout en continuant à utiliser son téléphone pour à d'autres fins. Le service s'arrête uniquement lorsque l'utilisateur entre et appuie sur le bouton d'arrêt dans l'activité du lecteur de musique. Si ce service devait être arrêté de façon inattendue, l'utilisateur pourrait se demander ce qui est erroné.

Les services de ce type peuvent se déclarer comme faisant partie du "premier plan". Cela entraînera leur priorité à augmenter et les rendre moins susceptibles d'être vidés de leur mémoire. Le compromis est que le service doit maintenir une notification, de sorte que l'utilisateur sache que ce service fait partie du premier plan. Et, idéalement, que la notification fournit un chemin d'accès facile à une activité où l'utilisateur peut arrêter le service. Pour ce faire, dans onCreate() de votre service (ou ailleurs dans la vie du service cela aurait du sens), appelez startForeground(). Ce prend une notification et un entier local unique, tout comme la méthode notify() sur NotificationManager. Il provoque l'apparition de la notification et déplace le service dans la priorité au premier plan. Plus tard, peut appeler stopForeground() pour revenir à la priorité normale.