2017-09-30 6 views
3

Récemment, je travaille sur une application qui doit exécuter un service tous les jours à un moment donné.Android Studio - Le fonctionnement de 'AlarmManager'

Pour ce faire, j'utilise AlarmManager.

Ma question est la suivante: Après avoir activé le AlarmManager (du Service), puis-je détruire le Service, et le AlarmManager m'appellera encore à temps?

Sinon, est-il possible à un moment donné de m'envoyer BroadcastRecerver, sans exécuter un service tout le temps dans le système d'exploitation?

apprécierait l'aide

Répondre

2

La réponse courte à votre question: le service peut encore être démarré à partir du gestionnaire d'alarme chaque fois que le récepteur d'alarme est en mesure d'exécuter. La réponse longue: généralement, il est bon d'essayer d'utiliser les planificateurs de travail. Ils peuvent tous les deux décider d'un meilleur moment pour s'exécuter, tout en s'assurant que vous disposez des ressources nécessaires pour fonctionner avec succès, comme le réseau ou la batterie haute parmi d'autres critères.

Les gestionnaires d'alarmes sont seulement raisonnablement fiables avant Nougat. Il a été annoncé depuis longtemps que les développeurs devraient cesser de l'utiliser, et commencer à utiliser les planificateurs de travail pour la plupart des cas d'utilisation. Ils sont destinés à remplacer à la fois la configuration de l'alarme et le récepteur, et permettent au téléphone d'économiser plus de batterie en mettant le téléphone en mode veille plus longtemps et se réveiller et de faire plusieurs tâches en même temps.

Même si le gestionnaire d'alarme fonctionne sur votre téléphone particulier, google est de moins en moins fiable avec chaque version du système d'exploitation. Il y a des cas très spécifiques où les alarmes sont encore la voie à suivre, mais à moins que vous soyez certain d'être dans l'un d'entre eux, essayez d'utiliser des planificateurs de travail pour tous les périphériques exécutant sucette et plus tard. Vous pouvez toujours utiliser le gestionnaire d'alarmes de manière fiable pour kitkat et plus ancien, où les planificateurs de travail n'existent pas. Plus de détails sur: https://developer.android.com/training/monitoring-device-state/doze-standby.html

Dans les deux cas, je pense que vous devez écouter le démarrage du téléphone afin que vous puissiez enregistrer votre planificateur d'alarme/emploi: https://developer.android.com/training/scheduling/alarms.html

info planificateur d'emploi: https://developer.android.com/topic/performance/scheduling.html

Pour les problèmes de fiabilité : Android AlarmManager not working on some devices when the app is closed


+0

Merci pour votre réponse et liens – Elyash