1

J'ai construit une application qui implémente un certain nombre de récepteurs de diffusion et les enregistre dans un service basé sur les paramètres de l'utilisateur. Le service est lié à une activité qui appelle certaines de ses méthodes. Lorsqu'un récepteur de diffusion est appelé, il lance le service (ou appelle le service s'il est déjà en cours d'exécution) et lui transmet une chaîne indiquant au service ce qu'il doit faire. Mon problème est que lorsque l'activité est détruite (bouton de retour), le service est également détruit ce qui à son tour tue les récepteurs de diffusion.Android - Arrêter le récepteur de diffusion étant tué avec le service

Je sais que je peux enregistrer les destinataires dans le manifeste ce qui signifierait faire une vérification lorsqu'ils sont appelés pour voir si l'utilisateur a sélectionné cette option. Cependant, l'un des récepteurs critiques pour l'application est 'android.intent.action.HEADSET_PLUG' qui ne peut être enregistré que par programmation. Donc, ma question est la suivante: y a-t-il un moyen de garder ce récepteur de radiodiffusion actif lorsque le service est détruit? Si non, quelqu'un peut-il trouver une solution de contournement pour ce problème?

Merci, Rob

+0

Référez-vous à: http://stackoverflow.com/a/4806091/1317740 Peut aider. – Niranjan

Répondre

2

Mon problème est lorsque l'activité est tué le service est tué à son tour tue les récepteurs de radiodiffusion. Si par "tué" vous voulez dire que l'utilisateur a terminé votre application avec un tueur de tâche ou "Force Stop" dans l'application Paramètres, alors "tué" est le verbe approprié. Cependant, tout votre processus est "tué" - il ne suit pas la chaîne d'événements que vous décrivez ici. Si "tué" signifie que l'utilisateur a quitté votre activité via le bouton RETOUR, c'est parce que vous avez choisi de vous lier au service plutôt que de le démarrer. Si vous souhaitez que le service continue à s'exécuter après la fin de l'activité, vous devez utiliser startService(), et assurez-vous qu'il existe un chemin par lequel l'utilisateur peut indiquer qu'il ne veut plus ce service, vous savez donc quand appeler stopService(). Donc, ma question est la suivante: y a-t-il un moyen de garder ce récepteur de radiodiffusion actif lorsque le service est tué?

No.

Si vous ne pouvez voir une solution de contournement quiconque pour cette question?

Commencez votre service au lieu de (ou éventuellement en plus de) vous connecter au service.

Questions connexes