标签:android-service background-process root android android-8-0-oreo
根据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_WHITELIST
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS
Settings.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-service,background-process,root,android,android-8-0-oreo 来源: https://codeday.me/bug/20191024/1922668.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。