Sobes.tech
Junior — Middle

Jak można zwiększyć czas działania BroadcastReceiver w Android?

sobes.tech AI

Odpowiedź od AI

BroadcastReceiver w Android domyślnie działa bardzo krótko — dopóki wykonywana jest metoda onReceive(). Aby wydłużyć czas działania, można:

  • Uruchomić usługę w tle (Service) z onReceive(), która będzie wykonywać długotrwałe operacje.
  • Używać goAsync() wewnątrz onReceive(), aby uzyskać PendingResult i zakończyć obsługę później, wywołując finish() po zakończeniu.

Przykład z goAsync():

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

W ten sposób można uniknąć ograniczenia czasowego w onReceive() i wykonywać zadania dłużej.