我不介意让应用程序被Android操作系统杀死,我正在尝试调试为什么在内存不足的情况下杀死应用程序后重新启动。我正在使用
adb shell dumpsys activity processes
要阅读“处理LRU列表(按oom_adj排序):”
我当前的问题是当我执行以下步骤并在每个步骤之后都读取dumpsys时。
Proc #)13: adj=fore /FA trm= 0 6124:com.thisoldthing (top-activity)
Proc #20: adj=bak /B trm= 0 6124:com.thisoldthing (started-bg-ui-services)
Proc #13: adj=svc /B trm=15 8488:com.thisoldthing (started-services)
现在,当设备进入低内存状态时,应用程序不会被杀死。更令人担忧的是,我想知道为什么重新启动。
Android将尝试使您的服务保持尽可能长的生命周期。Context.startService()的文档说:“如果服务进程中发生任何错误,它将自动重新启动。” 我的理解和经验让我相信,无论您以startService()还是bindService()开始,这种情况都会发生,但是最后一个没有提及。
因此,如果您不想重新启动服务,则需要先关闭绑定连接,然后再终止它。不幸的是,应用程序不能依赖在终止条件下调用onDestroy(),因此任何unbindService()调用都将取决于应用程序的生命周期。您将需要自己处理。
最后,绑定连接并非旨在永久保留。他们应该连接,完成工作并解除绑定。牢记这一点,android正确地考虑了使用绑定连接重新启动服务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句