进程在棉花糖上被杀死,但在棒棒糖上却没有

Gru*_*kes 7 android android-6.0-marshmallow

有一个现有的应用程序(几年前)在设备启动时启动.在Lollipop上一切都很好,但是在Marshmallow上,应用程序启动后大约10或20秒左右,这个过程正在被杀死.在logcat中没有任何迹象表明存在任何异常,当进程被终止时唯一记录的是这一行:

"我/ ActivityManager:杀戮3100:com.company.E/u0a85(adj 15):空#17"

知道什么是"空#17"可能意味着什么是重要的.或者我有什么建议可以找出它被杀的原因?

Sni*_*kow 11

与@CommonsWare评论一样,这意味着您的流程没有正在运行的组件.ActivityManager将保持空进程以加速将来的启动,但只有有限数量 - 在您的设备上默认32/2 = 16.你的应用程序是#17,所以它被杀了.

超过30分钟的空白应用程序的最大数量也有(下限)限制.但这会给你一个"为X s 空"的原因字符串,而不是"空#X ".

这不是Marshmallow的新功能.不知道为什么你以前没有经历过.也许你有,但你没有注意到它.也许它发生得太晚了,你有时间完成你的工作.或者您的设备的Lollipop/Marshmallow构建可能在某种程度上有所不同(例如,在引导时启动并且变为空的进程数量增加,或ProcessList.java中的不同限制配置?).

无论如何,如果您没有活动组件,则无法依赖您的进程保持活动状态.为您的工作启动服务 - 确保在完成后停止服务.