L'exécution de la répétition d'une tâche en arrière-plan sur une application en temps réel
Je suis en train d'écrire une application qui est en permanence à l'écoute et de la vérification des capteurs (presque tous disponibles) et en enregistrant les données dans la base de données dans l'appareil.
J'ai besoin de faire quelques calculs de toutes les X seconde avec des données et de lancer un nouvel événement, si les calculs de vérifier le dit.
Je suis en train de réfléchir demandant de l'appareil branché lors de l'utilisation de l'application (concernant le drainage de la batterie).
Quelle est la meilleure approche pour la tâche à effectuer les calculs et de les jeter à l'événement? Minuterie? Les Threads? AsynkTask? AlarmManager? Une autre approche?
Je veux continuer à recevoir des capteurs de données et de les enregistrer dans la base de données si malgré l'application n'est pas sur le premier plan...il doit enregistrer les valeurs tant que l'application n'est pas arrêté par l'utilisateur.
Une option qui est de réveiller les verrous (PARTIAL_WAKE_LOCK, qui garde la CPU en cours d'exécution).
J'aimerais entendre des opinions différentes.
Merci à l'avance! Guillermo.
- Jeff Atwood déjà fermé l'original de cette question, donc je suppose que nous devrions garder cette un ouvert.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
AlarmManager
pour l'installation de la répétition des tâches (c'est de l'Android préféré une manière de mettre de l'avenir/répétition des tâches). Pour réaliser les calculs, utiliser unService
(si vous pensez que les calculs vont être cher, alors pensez à les déplacer vers un autre thread de travail ou de l'utilisationIntentService
).Concernant le sillage de verrouillage (à partir de la AlarmManager de référence):
C'est une modification de l'extrait d'un service que j'ai écrit pour le journal de la fréquence du PROCESSEUR il y a quelques temps. Il manque de la
Application
et laActivity
partie, mais illustre la façon dont j'ai écrit leService
pour garder la journalisation de toutes les dix secondes. Il n'enregistre pas quand le téléphone se met en veille profonde, donc si vous voulez vous connecter, sans interruption, alors vous aurez besoin d'acquérirPARTIAL_WAKE_LOCK
s, mais de considérer que la vie de la batterie sera fortement réduite par qui.