Sobes.tech
Junior — Middle

Как да удължим времето за работа на BroadcastReceiver в Android?

sobes.tech AI

Отговор от AI

BroadcastReceiver в Android по подразбиране работи много кратко — докато се изпълнява методът onReceive(). За да увеличите продължителността, можете:

  • Да стартирате фонова услуга (Service) от onReceive(), която ще изпълнява дълги операции.
  • Да използвате goAsync() вътре в onReceive(), за да получите PendingResult и да завършите обработката по-късно, като извикате finish() след приключване.

Пример с goAsync():

public void onReceive(Context context, Intent intent) {
    final PendingResult pendingResult = goAsync();
    new Thread(() -> {
        // Дълга операция
        // ...
        pendingResult.finish();
    }).start();
}

По този начин можете да избегнете ограничението по време в onReceive() и да изпълнявате задачи по-дълго.