当前位置: 首页 > 知识库问答 >
问题:

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

公冶子安
2023-03-14

我正在使用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(具有额外功能)}到com。应用程序。记录器/。来自pid的PeriodicChecksService=-1 uid=10321 pkg=com。应用程序。appname startFg=错误

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

共有1个答案

齐铭
2023-03-14

在Android O之后,您可以使用PendingContent。getForegroundService。

检索将启动前台服务的挂起内容,如调用上下文。startForegroundService()。提供给服务的start参数将来自意图的额外部分。

 类似资料:
  • 但还是没用。有什么帮助吗

  • 在异步HTTP SERVER中使用服务 全局方法service_center() 使用service_center($service)获取服务地址,然后使用call()方法调用公开的服务方法 $service = (yield service_center('User')); $user = (yield $service->call("User::getUser", ['id'

  • Ble是广告,在BluetoothGattServer中添加广告数据,广告完成,设备连接。在连接之后,也调用discoverServices(),但是没有发现服务,即没有触发onserviceinstovered()回调。 //回调以处理所有Gatt客户端连接以处理读写请求 //广告数据 //日志总结 `//服务uuid和特性uuid将进入广告数据{onGetService()-device=65

  • 我的要求是 Android应用程序必须发送用户位置详细信息(纬度 我采用的方法是使用报警管理器,我以配置的间隔调用我的服务,无论应用程序是否正在运行,它都将向服务器发送位置详细信息。 这是一个好方法吗?

  • 服务调用监控 KernalEvent::SERVICE_CALL事件 在框架层,调用servcie时,会抛出KernalEvent::SERVICE_CALL事件,你可以监听该事件,做数据上报处理,请以异步方式上报 <?php namespace src\Web\Listeners; use Listener; use Event; class Servic

  • 问题内容: 我很难找到有关如何使用Android调用标准SOAP / WSDL Web服务的良好信息。我所能找到的只是非常复杂的文档和对“ kSoap2”的引用,然后是一些有关使用SAX手动解析它们的内容。好的,很好,但是是2008年,所以我认为应该有一些好的库来调用标准Web服务。 Web服务基本上只是在NetBeans中创建的一种。我希望IDE支持生成管道类。我只需要最简单/最优雅的方法就可以