Démystifier l'utilisation d'AlarmManager dans Android
AlarmManager est un outil puissant sous Android qui permet aux développeurs de planifier des tâches à exécuter à des moments précis . C'est particulièrement utile lorsqu'une application doit effectuer certaines actions même lorsqu'elle n'est pas en cours d'exécution. Cependant, comprendre ses subtilités peut être intimidant pour ceux qui découvrent le développement Android.
Question :
En difficulté avec AlarmManager, puis-je obtenir un exemple fonctionnel pour déclencher du code après 20 minutes ?
Solution :
Configuration AlarmManager pour une tâche retardée implique plusieurs étapes. Voici un extrait de code complet qui démontre son utilisation :
// Get the AlarmManager instance from the Android system AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); // Create an Intent to be triggered for the alarm Intent intent = new Intent(context, OnAlarmReceiver.class); // Convert the Intent into a PendingIntent to pass it to the AlarmManager PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); // Set up a repeating alarm based on elapsed real-world time, with a trigger every 20 minutes mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 20 * 60 * 1000, pendingIntent);
Dans cet exemple, nous créons une alarme répétitive qui se déclenche toutes les 20 minutes à l'aide de la méthode setRepeating(). Le premier paramètre spécifie la base de temps, qui dans ce cas est le temps réel écoulé (depuis le démarrage de l'appareil). Le deuxième paramètre représente l'heure actuelle. Le troisième paramètre indique l'intervalle entre les alarmes, et le quatrième paramètre est le PendingIntent qui encapsule l'intention à déclencher.
Veuillez noter qu'il est crucial de considérer attentivement la base de temps lors de l'utilisation d'AlarmManager, car elle peut avoir un impact l'exactitude de la planification. Par exemple, utiliser AlarmManager.RTC_WAKEUP au lieu de ELAPSED_REALTIME_WAKEUP utiliserait l'heure réelle de l'appareil, qui peut être affectée par des ajustements tels que l'heure d'été.
De plus, il convient de mentionner que AlarmManager peut ne pas garantir les heures d'exécution exactes, en particulier en modes d'économie d'énergie. Si votre application nécessite un timing précis, explorez des solutions alternatives telles que JobScheduler.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!