我们可以从Work Manager启动前台服务吗



我正在从工作管理器doWork方法启动前台服务。

  1. 这样做可以吗?

  2. startForegroundService应在5秒内调用startForeground,否则将发生异常。如何防止这种情况发生?(注意,我在onCreate of Service中添加了startForeground(

    override fun doWork(): Result {
    val intent = Intent()
    intent.setClassName(App.context.packageName, "com.xyz.MySerivce")
    intent.putExtra("sync_service_initiate", true)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    applicationContext.startForegroundService(intent)
    applicationContext.stopService(intent)
    } else {
    applicationContext.startService(intent)
    }
    return Result.success()
    }
    

在Android 12及以上版本中,您无法从后台线程启动前台服务,因此由于此限制,这是不可能的。工作管理器将在第一次执行前景服务时启动前景服务,但由于工作人员每15分钟执行一次,因此当它第二次尝试执行前景服务后,您将收到警告或错误,即工作人员无法从后台线程启动前景服务。

最新更新