即使在关闭应用程序的情况下,我也要在服务中按特定的时间间隔调用方法;当应用程序在后台运行时,即使应用程序在后台运行也可以正常工作,但是当我从后台关闭应用程序时,它停止了。即使关闭应用程序,我也要保持运行状态,该如何实现?
在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();
}
}
答案 0 :(得分:0)
您需要使用类似WorkManager
,JobScheduler
或通过AlarmManager
发出的警报,以便在关闭应用程序时执行某些事件。如果您要定位较新的设备并希望向后兼容,则应查看WorkManager
:
https://developer.android.com/topic/libraries/architecture/workmanager/basics
JobScheduler
和AlarmManager
是Android中较旧的技术,需要特定于API的编码才能正常运行。 WorkManager
将自动为您处理。