根据Android Oreo之后的this thread,Google引入了一些后台限制,因此无法始终在后台运行Service而不显示用户通知.
可以使用root特权来实现吗?
编辑:我看到人们投票结束我的问题,因为它看起来似乎太广泛了,但是我正在运行lineageOS,如果可能的话,我想将我的应用程序作为系统服务运行,我认为这将是在不修改源代码的情况下可行.例如,在安装 *** 作系统时,我可以刷新GApp,但是它是可选的,并且它们似乎具有我在说的功能.我也不希望您为我做所有的研究,我愿意接受为我指明正确方向的答案.
解决方法:
确实有一个未记录的shell命令,可以通过将其添加到全局location_background_throttle_package_whiteList(我尚未对其进行测试)来将其列入白名单.
settings put global location_background_throttle_package_whiteList "package1,package2,package3"
^这是用于定位服务的,但可能还有更多的background_throttle设置可用:
settings List global | grep background_throttle
资料来源:XDA Developers.
同样在source code中,我仅找到以下设置:
Settings.Global.LOCATION_BACKGROUND_THRottLE_PACKAGE_WHITEListSettings.Global.LOCATION_BACKGROUND_THRottLE_PROXIMITY_ALERT_INTERVAL_MSSettings.Global.LOCATION_BACKGROUND_THRottLE_INTERVAL_MS
documentation明确表明某些服务已添加到临时白名单中.为了找出实际上将这些服务列入白名单的内容,必须进一步挖掘.这些后台服务限制实际上是在Context.java中描述的,而用@UnsupportedAppUsage注释的方法是仅系统使用的方法.
Firebase WorkManager仍然是最好的选择-或底层的JobIntentService仍将作为常规后台服务运行< AndroIDO.刷新AndroID N或lineage OS 14.1将是一种解决方法,几乎没有考虑过.root权限将提供超级权限的假设可能是一个误解.允许不受限制的位置访问仍然非常有限,甚至Google自己的服务也只是暂时列入白名单.被这些后台执行限制排除的唯一服务将是用C编写的linux system services(在JVM外部运行)-这与用Java编写的AndroID后台服务(在JVM内部运行,以及所有扩展相同的受限Service类).
总结以上是内存溢出为你收集整理的在Android上始终以root用户身份在后台运行服务全部内容,希望文章能够帮你解决在Android上始终以root用户身份在后台运行服务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)