Réveil en Android avec Kotlin : analyse complète d'Alarm Manager pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment fonctionne Alarm Manager en Android ? Analyse complète en Kotlin avec un exemple réel

\n\n

Avez-vous déjà réfléchi à la façon dont fonctionnent les réveils sur votre téléphone ? Ou comment une application de notes vous rappelle un rendez-vous exactement à 14h30 ? En Android, c'est un puissant service système qui en est responsable : Alarm Manager. Bien que son nom se traduise par « gestionnaire de réveils », il s'agit en réalité d'un planificateur de tâches universel qui permet d'exécuter du code à un moment précis, même si votre application est réduite ou que le téléphone est en mode veille.

\n\n

Le sujet Alarm Manager Example est l'une des requêtes les plus populaires sur StackOverflow (des milliers de vues et des dizaines de questions). Et ce n'est pas surprenant : les débutants se perdent souvent avec PendingIntent, BroadcastReceiver et les nombreuses méthodes comme set(), setRepeating() ou setExact(). Dans cet article, nous allons analyser un exemple fonctionnel réel en Kotlin que vous pourrez immédiatement appliquer dans votre projet. Pas de blabla – seulement du code et des explications.

\n\n

Qu'est-ce qu'Alarm Manager et à quoi sert-il ?

\n\n

Alarm Manager est un service système Android qui permet à votre application d'effectuer des actions à un moment donné. Sa principale caractéristique est qu'il fonctionne indépendamment du cycle de vie de votre application. Vous pouvez définir une alarme, fermer l'application, éteindre l'écran – et Alarm Manager exécutera quand même la tâche au moment voulu.

\n\n

Scénarios d'utilisation typiques :

\n
    \n
  • Rappels d'événements (réunions, anniversaires)
  • \n
  • Synchronisation périodique des données avec le serveur
  • \n
  • Notifications différées (par exemple, « N'oubliez pas de boire de l'eau dans 2 heures »)
  • \n
  • Exécution de tâches en arrière-plan selon un planning
  • \n
\n\n

Il est important de comprendre : Alarm Manager n'est pas un minuteur précis pour des intervalles de millisecondes. Pour cela, il existe Handler ou Coroutines. Alarm Manager est optimisé pour fonctionner au niveau système en tenant compte des économies d'énergie.

\n\n

Composants principaux : PendingIntent et BroadcastReceiver

\n\n

Avant d'écrire du code, comprenons deux concepts clés sans lesquels Alarm Manager ne fonctionne pas.

\n\n

PendingIntent est une « intention différée ». Vous n'exécutez pas l'action immédiatement, mais vous l'emballez dans un conteneur spécial qu'Alarm Manager exécutera dans le futur. Imaginez que vous donnez à un coursier une enveloppe scellée avec une instruction : « Ouvre-la exactement à 15h00 ». L'enveloppe est le PendingIntent.

\n\n

BroadcastReceiver est un récepteur de messages de diffusion. Lorsqu'Alarm Manager se déclenche, il envoie un message de diffusion (broadcast) que votre BroadcastReceiver intercepte. C'est dans celui-ci que vous écrivez le code qui doit s'exécuter au moment de l'alarme.

\n\n

Exemple pas à pas : création d'un réveil en Kotlin

\n\n

Écrivons une application simple qui affiche une notification 10 secondes après avoir appuyé sur un bouton. Cet exemple est basé sur du code réel issu d'une réponse populaire sur StackOverflow.

\n\n

Étape 1. Création du BroadcastReceiver

\n\n

Créez une nouvelle classe qui gérera le déclenchement de l'alarme :

\n\n
import android.content.BroadcastReceiver\nimport android.content.Context\nimport android.content.Intent\nimport android.widget.Toast\n\nclass AlarmReceiver : BroadcastReceiver() {\n    override fun onReceive(context: Context, intent: Intent) {\n        // Ce code s'exécutera lorsque l'alarme se déclenchera\n        Toast.makeText(context, "L'alarme a sonné !", Toast.LENGTH_LONG).show()\n    }\n}
\n\n

Pour l'instant, nous affichons simplement un Toast. Dans une application réelle, cela pourrait être la création d'une notification, le lancement d'un service ou tout autre code.

\n\n

Étape 2. Enregistrement du BroadcastReceiver dans le manifeste

\n\n

Pour que le système connaisse notre récepteur, il faut l'enregistrer dans AndroidManifest.xml :

\n\n
<receiver android:name=".AlarmRecei                

Blogs

Book Recommendations