Sobes.tech
Junior — Middle

Kaip galima padidinti BroadcastReceiver veikimo trukmę Android?

sobes.tech AI

Atsakymas iš AI

Android BroadcastReceiver pagal nutylėjimą veikia labai trumpą laiką — kol vykdomas onReceive() metodas. Norint padidinti veikimo laiką, galima:

  • Paleisti foninę paslaugą (Service) iš onReceive(), kuri atliks ilgalaikes operacijas.
  • Naudoti goAsync() viduje onReceive(), kad gauti PendingResult ir užbaigti apdorojimą vėliau, iškviečiant finish() po darbo pabaigos.

Pavyzdys su goAsync():

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

Taip galima išvengti laiko apribojimo onReceive() ir atlikti užduotis ilgiau.