用于在Android P中调用服务的AlarmManager:startForegroundService

时间:2018-12-13 09:40:46

标签: android android-service alarmmanager

我正在使用如下所示的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中做到这一点?

1 个答案:

答案 0 :(得分:0)

在Android O之后,您可以使用PendingIntent.getForegroundService

  

检索将启动前台服务的PendingIntent,例如调用Context.startForegroundService()。提供给服务的起始参数将来自Intent的其他内容。