Effectuer des opérations en cours d'exécution à long lors de la réception de SMS sur l'API <21

voix
0

Je construis une application qui écoute les messages SMS entrants, effectuer certaines opérations en cours d'exécution et potentiellement à long renvoyer une réponse si certaines conditions sont remplies.

J'ai la partie d'écoute de travail en utilisant un BroadcastReceiver, mais je ne suis pas sûr de savoir comment / où effectuer les opérations en cours d' exécution qui peut être longue. La documentation Android Developer affirme que

Après OnReceive (), le système peut arrêter le processus à tout moment pour récupérer la mémoire, et, ce faisant, il se termine le filetage engendré en cours d'exécution dans le processus. Pour éviter cela, vous devez soit appeler goAsync () (si vous voulez un peu plus de temps pour traiter l'émission dans un thread d'arrière-plan) ou programmer un Jobservice du récepteur à l'aide du JobScheduler, de sorte que le système sait que le processus continue d'effectuer actif travail.

Et aussi:

Appel goAsync () dans la méthode OnReceive () de votre récepteur et passer le BroadcastReceiver.PendingResult à un fil d'arrière-plan. Cela permet de maintenir l'émission actif après le retour de OnReceive (). Cependant, même avec cette approche, le système vous attend de terminer avec la diffusion très rapidement (moins de 10 secondes). Il ne vous permet de déplacer le travail à un autre thread pour éviter glitching le thread principal.

De plus, JobSchedulerne sont pas disponibles sur l' API <21.

Alors, comment pourrais-je atteindre cet objectif sur l'API 16 - 20?

Créé 19/09/2018 à 13:34
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Il suffit de commencer un Servicedans votre BroadcastReceiverpour effectuer l'opération de longue durée et renvoyer le résultat. Vous pouvez utiliser un IntentServiceou régulier Service.

Créé 25/09/2018 à 10:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more