即使关闭应用程序,在服务中重复执行任务

时间:2019-04-09 16:02:18

标签: android service handler runnable

即使在关闭应用程序的情况下,我也要在服务中按特定的时间间隔调用方法;​​当应用程序在后台运行时,即使应用程序在后台运行也可以正常工作,但是当我从后台关闭应用程序时,它停止了。即使关闭应用程序,我也要保持运行状态,该如何实现?

在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 :(得分:0)

您需要使用类似WorkManagerJobScheduler或通过AlarmManager发出的警报,以便在关闭应用程序时执行某些事件。如果您要定位较新的设备并希望向后兼容,则应查看WorkManager

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

JobSchedulerAlarmManager是Android中较旧的技术,需要特定于API的编码才能正常运行。 WorkManager将自动为您处理。