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.