2009-11-14 4 views
4

Mon application utilise un service distant pour lire de l'audio. Je fais cela pour que aucune activité ne possède la lecture de l'audio - l'utilisateur peut déclencher certains audio pour être joué à partir d'une activité, et l'audio continuera à jouer pendant qu'ils naviguent autour de l'application. Je veux, cependant, dire au service de mettre en pause ou d'arrêter la lecture de l'audio lorsque l'utilisateur «décharge» l'application soit en reculant, en verrouillant l'affichage, soit en appuyant sur Accueil. Lorsque l'application était une seule activité , je le faisais dans onPause. Donc, je suppose que je suis essentiellement à la recherche de "onPause" au niveau de l'application/tâche. Une telle chose existe-t-elle ? Si ce n'est pas le cas, quelle est la meilleure façon d'être informé (e) que la tâche a été mise en attente par l'utilisateur ou qu'elle a été désactivée par l'utilisateur ?Android: Tâche ou application équivalente à onPause

Répondre

5

Hmmmm ... malheureusement, je suppose qu'il n'y a pas de réponse facile là-bas. Je pense que c'est la raison pour laquelle le lecteur multimédia intégré et Pandora utilisent une notification pour que l'utilisateur puisse facilement revenir à l'application pour la fermer.

Si le flux d'activité est relativement linéaire, le retrait de l'application revient à annuler l'activité initiale.

Une astuce que j'ai utilisée dans un scénario consistait à demander à chaque activité de notifier le service au onPause() et au onResume(). Le service les surveillera, et s'il a obtenu un onPause() sans onResume() après un certain temps, il a été supposé que l'utilisateur était parti (HOME, appel téléphonique entrant, message texte entrant, répondant à une application via une notification, etc.).

Vous pouvez également regarder ACTION_SCREEN_OFF diffuser Intents, pour gérer ce scénario.

Je suis désolé de ne pas avoir une meilleure réponse miracle - peut-être que quelqu'un d'autre aura une meilleure idée.

+0

Voici quelques solutions créatives. J'ai un problème similaire, que si la réponse pouvait se combiner avec votre solution pour être parfait pour moi. Je pourrais aussi aller avec le ACTION_SCREEN_OFF aussi ... une excellente suggestion. S'il vous plaît laissez-moi savoir ce que vous pensez de ce qui suit: http://stackoverflow.com/questions/1735245/overriding-the-activity-task-behavior-in-android Merci! – Rich

+0

Désolé, je ne plaisante pas avec les piles d'activité. – CommonsWare

+0

Pas de soucis. Ma solution finira par être l'un ou l'autre de ce que vous avez suggéré (notification comme Pandora ou maintenir l'état d'activité dans le service et écouter les émissions appropriées). – Rich

1

J'ai été dans une situation quelque peu similaire, et essentiellement j'ai fait ce que Mark a suggéré; Plutôt qu'une notification séparée, j'ai simplement demandé au service de compter les appels à mes API registerCallback() et unregisterCallback(), ce que chaque activité devait faire de toute façon.

Questions connexes