我正在开发一个需要从后台启动前台服务的 SDK。因为它使用后台定位和蓝牙相关的作品。如果应用程序被杀死,则监控在后台执行。这就是我使用前台服务的原因。有一个条件是从后台启动前台服务。
目前,我的 SDK 使用Service来处理这项工作。但是Android 12 on-words 不支持从后台启动服务。
我正在尝试从引发以下异常的后台启动服务。
ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false
我如何使用WorkManager 来解决这个问题,我的所有处理都由 Service 类完成,我如何将 Service 对象传递给Worker类并在 Worker 类中启动这项工作。
实际上,我的项目是基于信标技术的。信标信号用于向用户展示不同的推荐。
在我目前的实现中,如果应用程序被用户杀死,并且还接受前台服务,SDK 将在后台运行。并检测信标并提供适当的操作。
我的实现是,如果应用程序使用前台服务“关闭”初始化我的 SDK,那么稍后,当应用程序处于后台并尝试从后台启动前台服务时,会抛出此异常。与前台服务相关的决策由服务器端 API 持有。我会定期检查服务器端值是否更改,如果值更改,则更改的操作会反映在 SDK 中。