关于android service 重启
现在有这样的需求,防止自己的app被其他的应用程序(比如qq手机管家)杀死,该怎么实现呢。我们知道app都是运行在进程中的,android是怎样管理这些进程的呢。要想app不被杀死,只要做到进程不被结束就解决了问题。但是不幸的是,第三方app很容易利用系统的api(比如killBackProgress())轻易杀死其他进程。那该怎么办呢?
目前有这样的解决方案。在本进程被其他应用程序杀死后,就立即重启,这样就可以间接防止进程被结束(其实已结束了,只重新开启)。至今为止,还未知道怎样完全防止第三方结束本进程,正在寻找中。。。。。。。。。。。。。
现在问题又来了,自己的应用怎么知道什么时候被杀死了,杀死之后又怎么重启呢?答案是,无法知道,自己也无法重启。幸好android提供了service,android规范中指出进驻有service的进程的优先级别很高,除非是本应用自己调用stopService结束服务,否则即使第三方应用杀死该进程,而后进程也会自己重启(服务也重启)
所以说,要想进程被杀死后能自动重启,那么只需要在该进程中开启某个服务就可以了。
补充:
1、通过 设定-》应用程序-》运行 结束某个进程或服务,这样进程或服务不会重启。
2、如果采用bindService()方法启动服务,那么在 设定-》应用程序-》运行是看不到此项服务信息的。这样的服务也可被”qq手机管家“永远杀死,不在重启。
结论:无法防止其他应用程序杀死自己进程或服务(系统自带的服务管理外),但是可以在杀死后重启。
另外,可以设置service属性: