Sobes.tech
Junior — Middle

Kako povećati trajanje rada BroadcastReceiver-a u Androidu?

sobes.tech АИ

Одговор од АИ

BroadcastReceiver u Androidu podrazumevano radi vrlo kratko — dok traje metoda onReceive(). Da biste produžili trajanje, možete:

  • Pokrenuti pozadinsku uslugu (Service) iz onReceive(), koja će obavljati duge operacije.
  • Koristiti goAsync() unutar onReceive() da biste dobili PendingResult i završili obradu kasnije, pozivajući finish() nakon završetka.

Primer sa goAsync():

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

Na ovaj način, možete izbeći vremensko ograničenje u onReceive() i obavljati zadatke duže vreme.