要想使Service存活下来,我们就必须保证Service所在的进程不被杀掉,一般来说有以下方法:
在onStartCommand回调方法中返回START_STICKY,那么该进程被杀掉后系统会试图重启它
设置配置文件中application的persistent属性,把应用提升为系统级别应用,免疫low memory killer
前台进程>可使进程>次要服务进程>后台进程>内容供应节点>空进程在Service的onDestroy方法中重启该Service,不过如果进程被直接杀掉这种方法就无效了
通过监听特殊的系统广播(如屏幕变化、电量变化、网络变化等)去不断重启Service
使用AlarmManager定时重复开启Service
通过设置Service的process属性,把Service放在子进程中,避免与主进程一起被回收
开启一个另外的进程与Service进程互相监视,双方要是有任意一方被杀掉则重启