Повторение задачи в службе, даже когда приложение закрыто - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу вызывать метод с определенным интервалом в службе, даже когда приложение закрыто. Оно работает нормально, когда приложение работает, даже когда приложение работает в фоновом режиме, но оно остановилось, когда я закрывал приложение из фона.Я хочу, чтобы он работал, даже когда приложение закрыто, как я могу этого добиться?

Я сталкиваюсь с этой проблемой в API 28, и он работает нормально.

Вот мой код.

public class ReminderHandlerService extends Service {


private Handler handler;

@Override
public IBinder onBind(Intent intent) {
    return null;
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    handler = new Handler();
    startReminderService();
    return START_STICKY;
    //return super.onStartCommand(intent, flags, startId);
}

@Override
public void onCreate() {
    super.onCreate();
}

Runnable runReminder = new Runnable() {
    @Override
    public void run() {
        try {

            Intent reminderServiceIntent = new Intent(ReminderHandlerService.this, ReminderService.class);
            reminderServiceIntent.putExtra("mydata", "this is my data");
            startService(reminderServiceIntent);

        } finally {

            handler.postDelayed(runReminder, 10000);
        }
    }
};

void startReminderService() {
    runReminder.run();
}

}

1 Ответ

0 голосов
/ 09 апреля 2019

Вам нужно будет использовать что-то вроде WorkManager, JobScheduler или сигнал тревоги через AlarmManager, чтобы выполнить событие, когда ваше приложение закрыто. Если вы ориентируетесь на новые устройства и хотите иметь обратную совместимость, вы должны посмотреть на WorkManager:

https://developer.android.com/topic/libraries/architecture/workmanager/basics

JobScheduler и AlarmManager являются более старыми технологиями в Android и требуют правильного кодирования API для правильной работы. WorkManager автоматически обработает это для вас.

...