流行的思路以下【2015-11-20更新】:html
1.让Service杀不死。Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身。android
2.让Service从后台变成前置。在Android 2.0之前有效,借助setForeground(true)。缓存
3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程)。add android:persistent="true" into the <application> section in your AndroidManifest.xml 。切记,这个 不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。 经过实验发现即便设置了这个属性,应用程序被force kill以后仍是不能从新启动起来的,应该是只对low memory killer免疫。app
4.提高Service优先级。在AndroidManifest.xml文件中对于intent-filter能够经过android:priority = "1000"这个属性设置最高优先级,避免Service被系统回收。spa
5.定时唤醒,经过AlarmManager。(在Android 4.0以前有效,4.0以后被强杀的APP没法唤醒 参考 http://www.android100.org/html/201305/06/2430.html)。.net
6.当应用升级以后,即便用户不点开APP,也要重启服务。由于升级APP时会发送ACTION_PACKAGE_RESTARTED,AlarmManager做为系统服务,会接受这个事件,而后startService。xml
7.让Service开机启动。不过如今不少手机会禁止开机启动。htm
8.守护进程。
参考1:http://www.bubuko.com/infodetail-474019.html
参考2:http://blog.csdn.net/hellogv/article/details/46765387blog