Comment utiliser Android AlarmManager avec de petits intervalles de 1 minute?
Je veux faire de l'externe moniteur de service et être informé sur les problèmes aussi vite que possible.
J'ai essayé de mettre en place AlarmManager
avec 1-2 minutes d'intervalle, mais on dirait qu'il tire au hasard toutes les quelques minutes.
Bien sûr, je veux être sûr de tuer ma tâche en arrière-plan par android, ce qui permettrait d'arrêter de surveiller si je viens d'utiliser Service
.
Est-il possible d'utiliser AlarmManager
dans de petits intervalles précis?
Quelles approches sont utilisés dans des applications comme Facebook, Gmail notifier à propos des nouveaux messages?
Serait-il mieux de faire des Service
avec startForeground
et partielle WakeLock
?
OriginalL'auteur Piotr Müller | 2014-06-17
Vous devez vous connecter pour publier un commentaire.
Depuis que vous avez décidé de ne pas montrer comment vous "mettre en place AlarmManager avec 1 à 2 minutes d'intervalle, il sera difficile pour quiconque de vous aider. Veuillez lire la documentation de
AlarmManager
et note la valeur par défaut-l'imprécision du comportement nouveau à Android 4.4.AlarmManager
ne résout pas tous les problèmes à cet égard. Par exemple, si l'utilisateur choisit de force-arrêt de votre application (par exemple, via les Paramètres), vos alarmes sont supprimés.Utilisation
setRepeating()
sur Android 1.0-4.3 etsetExact()
sur Android 4.4+. AvecsetExact()
, dans le cadre du traitement d'un événement d'alarme, vous aurez besoin pour planifier le prochain événement d'alarme.Uniquement si votre appareil est toujours branché sur le secteur (par exemple, le processus industriel du moniteur).
Correct. Cependant, il ya beaucoup de facteurs impliqués dans le choix d'un
targetSdkVersion
. Savvy programmeurs prennent en compte le fait que, un jour, ils ont besoin pour élever leurstargetSdkVersion
et fera oublier son impact sur les alarmes. Ces programmeurs vont donc optersetExact()
au moment de l'élaboration de nouveauxAlarmManager
code, où l'exactitude des alarmes sont nécessaires.targetSdkVersion
est surtout de faciliter la transition pour les déjà-code existant, et non pas comme une licence pour ignorer les modifications lors de la rédaction d'un nouveau code.J'avoue que l'approche était PARESSEUX et de courte durée.
Va accepter, mais je ne peux pas arriver à 1 minute d'intervalle, même sur adroid 3 cible SDK. Cela peut être lié à ce que je suis en utilisant MIUI Android, il semble que il ya une limite interne est égale exactement à 5 minutes comme le plus petit intervalle d'alarme
J'ai utilisé
AlarmManager
pour des manifestations aussi bas que cinq secondes, donc c'est certainement capable de faire ça. MaisAlarmManager
est un domaine où les fabricants d'appareil de faire des changements pour essayer de prolonger la vie de la batterie, de sorte qu'il ne me surprendrait pas si votre appareil est la source de votre problème. Vous pourriez comparer à l'encontre de l'émulateur x86, ou d'un autre appareil, ou quelque chose.OriginalL'auteur CommonsWare
L'affichage d'un extrait de code que nous avons utilisé.Veuillez modifier selon vos besoins. Nous l'utilisons pour toutes les 15 secondes et ça fonctionne.
Remarque deux choses: 1) Départ à l'API de 19, toutes les alarmes sont inexactes; 2) Dans l'ordre pour que cela fonctionne sur de longues périodes de temps, le récepteur de radiodiffusion doit être enregistré dans le manifeste, pas dynamique
OriginalL'auteur Nishanthi Grashia
OriginalL'auteur Manikandan