我正在使用如下所示的AlarmManager,并且它在Android O及以下版本上也可以正常工作。
AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(context, PeriodicChecksService.class);
PendingIntent pi=PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + firstGoOffTime, frequencyInMS , pi);
但是在Android P中,Logcat中出现以下错误:
不允许后台启动:服务意图{flg = 0x4 cmp = com.app.appname / .PeriodicChecksService(有其他功能)}到 来自pid = -1 uid = 10321的com.app.recorder / .PeriodicChecksService pkg = com.app.appname startFg?= false
我相信是因为启动服务时必须使用startForegroundService
。我们如何在AlarmManager中做到这一点?
答案 0 :(得分:0)
在Android O之后,您可以使用PendingIntent.getForegroundService
。
检索将启动前台服务的PendingIntent,例如调用Context.startForegroundService()。提供给服务的起始参数将来自Intent的其他内容。