在我的Android应用中,我有一项服务,每隔 n 分钟在后台运行。 我从以下代码(简化)开始:
Intent intent = new Intent(context, MyBroadcast.class);
PendingIntent sender = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
long l = //timestamp - when execute the service
if(am!=null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, l, sender);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
am.setExact(AlarmManager.RTC_WAKEUP, l, sender);
} else {
am.set(AlarmManager.RTC_WAKEUP, l, sender);
}
}
然后在MyBroadcast.class
中,我这样做:
Intent service = new Intent(context, MyService.class);
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {
context.startForegroundService(service);
} else {
context.startService(service);
}
然后,在MyService.class
中,经过一些操作,我重用了第一个代码以重新启动该过程。
问题:在装有Android 9 Pie的设备上,从最近的应用程序中删除我的应用程序后,该服务已关闭/停止。我已经尝试在onTaskRemoved
中使用onDestroy
和MyService.class
,但是它们不起作用。
有什么想法吗?我该怎么办?