Android实现双进程守护的时候启动多个进程,做过android开发的人应该都知道应用会在系统资源匮乏
的情况下被系统杀死!当后台的应用被系统回收之后,如何重新恢复它呢?
1.提高优先级
这个办法对普通应用而言,应该只是降低了应用被杀死的概率,但是如果真的被系统回收了,
还是无法让应用自动重新启动!
2.让service.onStartCommand返回START_STICKY
通过实验发现,如果在adb shell当中kill掉进程模拟应用被意外杀死的情况(或者用360手机卫士进行清理操作),
如果服务的onStartCommand返回START_STICKY,在eclipse的进程管理器中会发现过一小会后被杀死
的进程的确又会出现在任务管理器中,貌似这是一个可行的办法。但是如果在系统设置的App管理中
选择强行关闭应用,这时候会发现即使onStartCommand返回了START_STICKY,应用还是没能重新启动
起来!
3.android:persistent="true"
网上还提出了设置这个属性的办法,通过实验发现即使设置了这个属性,应用程序被kill之后还是不能重新启动起来的!
4.让应用成为系统应用
实验发现即使成为系统应用,被杀死之后也不能自动重新启动。但是如果对一个系统应用设置了
persistent="true",情况就不一样了。实验表明对一个设置了persistent属性的系统应用,
即使kill掉会立刻重启。一个设置了persistent="true"的系统应用,在android中具有core service
优先级,这种优先级的应用对系统的low memory killer是免疫的!
文章来源:www.itlanbao.com