有一个现有的应用程序(几年前)在设备启动时启动.
在Lollipop上一切都很好,但是在Marshmallow上,应用程序启动后大约10或20秒左右,这个过程正在被杀死.
在logcat中没有任何迹象表明存在任何异常,当进程被终止时唯一记录的是这一行:
在Lollipop上一切都很好,但是在Marshmallow上,应用程序启动后大约10或20秒左右,这个过程正在被杀死.
在logcat中没有任何迹象表明存在任何异常,当进程被终止时唯一记录的是这一行:
“我/ ActivityManager:杀戮3100:com.company.E / u0a85(adj 15):空#17”
知道什么是“空#17”可能意味着什么是重要的.或者我有什么建议可以找出它被杀的原因?
解决方法
与@CommonsWare评论一样,这意味着您的流程没有正在运行的组件. ActivityManager将保持空进程以加速将来的启动,但只有
a limited number of them – 设备上默认的32/2 = 16.你的应用是#17,so it is killed.
对于最大数量apps that have been empty for more than 30 minutes,还有一个(下限)限制.但这会给你一个“为X s为空”的原因字符串,而不是“空#X”.
这不是Marshmallow的新功能.不知道为什么你以前没有经历过.也许你有,但你没有注意到它.也许它发生得太晚了,你有时间完成你的工作.或者您的设备的Lollipop / Marshmallow构建可能在某种程度上有所不同(例如,在引导时启动并且变为空的进程数量增加,或ProcessList.java中的不同限制配置?).
无论如何,如果您没有活动组件,则无法依赖您的进程保持活动状态.为您的工作启动服务 – 确保在完成后停止服务.