Aller au contenu

Tuer une application que l'on vient de démarrer


ErGo_404

Recommended Posts

Bonjour !

Je suis face au problème suivant, je souhaite tuer une activity que j'ai démarré depuis un service avec la méthode startActivity().

Je cherche à faire une application qui démarre une activity, et après un certain temps qui la tue, ainsi que tous les services que cette activity aurait démarré.

L'exemple le plus simple est le lecteur musical, j'aimerais le démarrer, que l'utilisateur choisisse sa musique, l'écoute, et que l'activity de musique mais aussi le service de lecture se coupe au bout du temps désiré, pour couper la musique. Je veux que ça soit le plus générique possible, cad que ça fonctionne avec n'importe quel programme, donc les solutions pour mettre en pause la musique ne me suffisent pas.

Je ne sais pas trop comment faire malheureusement.

J'ai trouvé trois méthodes :

  • killProcess() : je ne sais pas comment récupérer le pid du processus que j'ai démarré avec startActivity().
  • ApplicationManager.killBackgroundProcesses() : cette méthode ne tue apparemment pas l'activity démarrée, d'après mes tests
  • finishActivity() : je lance mon activity depuis un service et je n'ai donc pas accès à la méthode startActivityForResult. Je ne peux donc pas utiliser cette méthode

Il existe des gestionnaires de tâches sur Android, ça doit donc être faisable, mais je ne sais pas comment.

Sauriez-vous comment faire ?

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Personne ? :'(

Je suis vraiment bloqué sur ce sujet, d'un coté j'ai lu des tonnes de choses sur pourquoi c'est pas bien de tuer une application (et j'en comprends tout à fait les conséquences), mais c'est le dernier bout de mon programme, et je sais que c'est techniquement faisable vu le nombre de task killers sur le market.

Lien vers le commentaire
Partager sur d’autres sites

Personne ? :'(

Je suis vraiment bloqué sur ce sujet, d'un coté j'ai lu des tonnes de choses sur pourquoi c'est pas bien de tuer une application (et j'en comprends tout à fait les conséquences), mais c'est le dernier bout de mon programme, et je sais que c'est techniquement faisable vu le nombre de task killers sur le market.

Bonjour

Attention à ne pas confondre Activity, Service et process. Plusieurs activités et services d'une même application Androïd tournent dans le même process mais peuvent avoir plusieurs threads ... :emo_im_foot_in_mouth:

Pour ton problème le mieux est d'envoyer un message (Intent) de ton service à ton activity (qui attends le message via un BroadcastReceiver). Quand tu recois le messages émis par le service dans ton activité tu appèles la méthode finish() qui va fermer ton activité (fenêtre).

Frédéric

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...