Sobes.tech
Junior — Middle

Jak prodloužit dobu běhu BroadcastReceiver v Androidu?

sobes.tech AI

Odpověď od AI

BroadcastReceiver v Androidu ve výchozím nastavení funguje velmi krátce — dokud je spuštěna metoda onReceive(). Pro prodloužení doby můžete:

  • Spustit z onReceive() službu na pozadí (Service), která bude provádět dlouhotrvající operace.
  • Použít goAsync() uvnitř onReceive() k získání PendingResult a dokončení zpracování později, voláním finish() po dokončení.

Příklad s goAsync():

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

Tímto způsobem lze zabránit časovému omezení v onReceive() a provádět úkoly déle.