Sobes.tech
Junior — Middle

Comment augmenter la durée de fonctionnement du BroadcastReceiver dans Android?

sobes.tech IA

Réponse de l'IA

BroadcastReceiver dans Android fonctionne par défaut très peu de temps — tant que la méthode onReceive() est en cours d'exécution. Pour augmenter la durée, vous pouvez :

  • Démarrer un service en arrière-plan (Service) depuis onReceive(), qui effectuera des opérations longues.
  • Utiliser goAsync() à l'intérieur de onReceive() pour obtenir un PendingResult et terminer le traitement plus tard, en appelant finish() après la fin.

Exemple avec goAsync() :

public void onReceive(Context context, Intent intent) {
    final PendingResult pendingResult = goAsync();
    new Thread(() -> {
        // Opération longue
        // ...
        pendingResult.finish();
    }).start();
}

Ainsi, il est possible d'éviter la limite de temps dans onReceive() et d'exécuter des tâches plus longues.