Alarme Exemple De Gestionnaire De
Je veux mettre en œuvre une planification en fonction de mon projet. J'ai donc Googlé pour une Alarme gestionnaire de programme, mais je ne peux pas trouver des exemples.
Quelqu'un peut m'aider avec une base alarme gestionnaire de programme?
- Vous n'avez vérifiez l'API de démos, de droit?
- lien ce lien fonctionne pour la version 4.0 testé
Vous devez vous connecter pour publier un commentaire.
C'est du code qui fonctionne. Il se réveille CPU toutes les 10 minutes jusqu'à ce que le téléphone s'éteint.
Ajouter à Manifest.xml:
Code dans votre classe:
Réglage de l'Alarme de Service:
Si vous souhaitez régler l'alarme de répéter au téléphone de temps de démarrage:
Ajouter la permission et le service à Manifest.xml:
Et de créer une nouvelle classe:
am.setInexactRepeating(...)
de sorte que le téléphone n'est pas inutilement réveillé à cause du service. D'autres programmeurs devraient prendre note de ce fait. 2. Au lieu de créer un nouveauAlarm
dansAutoStart
lors de la réception de laRECEIVE_BOOT_COMPLETED
intention, il pourrait faire plus de sens à commencerYourService
deAutoStart
, comme illustré ici: stackoverflow.com/a/5439320/198348Alarm
dansAutoStart
lors de la réception de laRECEIVE_BOOT_COMPLETED
intention ?startService(new Intent(UltilityActivity.this, SyncService.class));
Intent i = new Intent("com.example.abc2.SyncService"); startService(i);
aussi ne peut pas fonctionneralarm.SetAlarm(context);
contexte venir?alarm.SetAlarm(context);
, puis le onstartcommand sera appelé, c'est mon problème stackoverflow.com/questions/22050535/...WakefulBroadcastReceiver
depercated deAndroid O
J'ai essayé la solution de XXX et s'il n'a dans un premier temps, à un certain moment, il a cessé de travailler. Le
onReceive
ne l'ai jamais appelé de nouveau. J'ai passé des heures à essayer de comprendre ce qu'elle pourrait être. Ce que je suis venu à réaliser est que leIntent
pour quelque mystérieuse raison n'était plus appelé. Pour contourner ce problème, j'ai découvert que vous avez vraiment besoin de définir une action pour le récepteur dans le manifeste. Exemple:Notez que le nom est
".Alarm"
avec la période. Dans XXXsetAlarm
méthode, créer laIntent
comme suit:La
START_ALARM
message peut être ce que vous voulez qu'il soit. J'ai juste donné ce nom à des fins de démonstration.Je n'ai pas vu les récepteurs défini dans le manifeste sans un filtre d'intention qui spécifie l'action. La création de la voie XXX a précisé, il semble sorte de faux. En spécifiant le nom de l'action, Android sera obligé de créer une instance de la
BroadcastReceiver
à l'aide de la classe qui correspond à l'action. Si vous comptez sur le contexte, sachez que Android a plusieurs différents objets qui sont TOUS appelés contexte et ne peut aboutir à l'obtention de votreBroadcastReceiver
créé. Forcer Android pour créer une instance de votre classe en utilisant uniquement le message d'action est beaucoup mieux que de compter sur une terrible cadre que peut-être jamais.PendingIntent.getBroadcast
documentation,For security reasons, the Intent you supply here should almost always be an explicit intent, that is specify an explicit component to be delivered to through Intent.setClass
.Voici une assez autonome exemple. Il tourne un bouton rouge après 5sec.
Rappelez-vous cependant que le AlarmManager feux, même lorsque l'application n'est pas en cours d'exécution. Si vous appelez cette fonction et de frapper le bouton d'Accueil, attendez 5 secondes, puis revenir en arrière dans votre application, le bouton sera allumé en rouge.
Je ne sais pas quel genre de comportement que vous obtiendriez si votre application n'est pas en mémoire à tous, donc soyez prudent avec ce genre d'état vous essayez de préserver.
MainActivity.java
MyBroadcastReceiver.java
AndroidManifest.xml
Ce code va vous aider à faire une répétition de l'alarme. La répétition de fois pouvez définir par vous.
activity_main.xml
MainActivity.java
Si vous avez besoin d'un signal d'alarme, pour une seule fois, puis remplacer
avec
•
AlarmManager
en combinaison avecIntentService
Je pense que le meilleur modèle pour l'utilisation de
AlarmManager
est sa collaboration avec unIntentService
. LeIntentService
est déclenchée par leAlarmManager
et gère les actions requises par le biais de la réception de l'intention. Cette structure n'a pas d'impact sur les performances comme l'utilisation deBroadcastReceiver
. J'ai développé un exemple de code pour cette idée dans la kotlin qui est disponible ici:MyAlarmManager.kt
MyIntentService.kt
manifest.xml
Utilisation:
Si vous souhaitez annuler la date prévue de l'alarme, essayez ceci:
J'ai fait ma propre mise en œuvre pour ce faire sur la façon la plus simple possible.
La seule étape suivante, la mettre en œuvre.
J'aime travailler avec cette mise en œuvre, mais une autre bonne façon, c'est de ne pas faire la
AbstractSystemServiceTask
classe abstraite, et de le construire par un Constructeur.J'espère que cela vous aidera.
Mis à JOUR
Amélioré afin de permettre à plusieurs
BackgroundTaskListener
sur le mêmeBroadCastReceiver
.Alarm Manager:
Ajouter À XML de Mise en page (*init ces vue sur créer en activité principale)
Ajouter À Manifester (à l'Intérieur de l'application tag && en dehors de l'activité)
Créer AlarmBroadcastManager Classe(héritage de BroadcastReceiver)
Dans l'Activité Principale (Ajouter ces Fonctions):
Voici un exemple avec une Alarme à l'aide de Gestionnaire de Kotlin: