代码之家  ›  专栏  ›  技术社区  ›  Srihari Karanth

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

  •  0
  • Srihari Karanth  · 技术社区  · 6 年前

    我使用的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中,am在logcat中得到以下错误:

    不允许后台启动:服务意图{flg=0x4 cmp=com.app.appname/.periodicchecksservice(has extras)}到 com.app.recorder/.periodicchecksservice from pid=-1 uid=10321 pkg=com.app.appname开始吗?=假

    我相信这是因为我们必须使用 startForegroundService 启动服务时。我们在AlarmManager中如何做到这一点?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dewey Reed    6 年前

    在android o之后,您可以使用 PendingIntent.getForegroundService .

    检索将启动前台服务的PendingEntent,如调用Context.StartForegroundService()。提供给服务的开始参数将来自意图的附加值。