到目前为止,我一直使用“alertmanager”来执行后台任务。这在新的android版本上已经不能正常工作了。必须每15秒启动一次,在任何情况下都不能被系统停止。重新启动手机时,后台任务也必须启动。现在后台任务只启动了一次,然后就什么也没发生了。
有解决办法吗?
我就是这样计划我的任务的:
主活动.java
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent startServiceIntent = new Intent(context, hintergrundModus.class);
PendingIntent startServicePendingIntent = PendingIntent.getService(context,0,startServiceIntent,0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
if(alarmManager != null)
alarmManager.set(AlarmManager.RTC_WAKEUP,hintergrundModus.timeHintergrundmodus,startServicePendingIntent);
1条答案
按热度按时间6uxekuva1#
对于较新版本的android,您需要替换
IntentService
与androidx.core.app.JobIntentService
. (别忘了删除IntentService#onBind(Intent)
,否则您的服务将永远无法启动)将成为
对于
AlarmManager
,您也不再直接使用PendingIntent#getService
,但将创建一个中介BroadcastReceiver
当调用时,它可以将您的工作排队。然后可以引用
PendingIntent#getBroadcast
```Intent launcherReceiverIntent = new Intent(context, ServiceLaunchReceiver.class);
PendingIntent startServicePendingIntent = PendingIntent.getBroadcast(context, 0, launcherReceiverIntent, 0);