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.