Sobes.tech
Junior — Middle

Come si può aumentare la durata del BroadcastReceiver in Android?

sobes.tech AI

Risposta dell'AI

BroadcastReceiver in Android funziona di default per un tempo molto breve — finché viene eseguito il metodo onReceive(). Per aumentare la durata, si può:

  • Avviare un servizio in background (Service) da onReceive(), che esegua operazioni prolungate.
  • Usare goAsync() all’interno di onReceive() per ottenere un PendingResult e completare l’elaborazione più tardi, chiamando finish() al termine.

Esempio con goAsync():

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

In questo modo, si può evitare il limite di tempo in onReceive() e eseguire task più lunghi.