防止Service因进程被杀死而销毁解决方法调查

一般情况下一个服务没有自己独立的进程,它一般是作为一个线程运行于它所在的应用的进程中

  1. 有些Intent无法静态注册导致如果由Service来启动广播接收者进而广播接收者动态注册相应Intent来处理事件的话,这种情况下Service如果被kill掉,那么广播接收者只能监听到静态注册的intent
  2. 提高Service的存活率
    1.前台Sevice,需要设置notification,不一样所有应用都适合做这种操作,即使是透明背景的notification也会被用户发现
    2.在onDestroy的时候重启自身,只能保证用户手动关闭服务的时候重启,强制杀死整个进程的话是不会调用这个函数的
    3.使自己的程序变为系统级应用程序,设置android:persistent=”true”,还需设置FLAG_SYSTEM,此时需要使用adb命令来将应用放在/system/app/目录下,不可行,而且这种做法会存在如果该种应用过多而系统崩溃的问题
  3. android:process=”:remote”设置该属性使service在指定进程上运行,无效,原因应该是虽然是在另一个进程运行,但是用户使用强制关闭所有进程时该进程也会被结束掉,未尝试系统进程,但是会有兼容性问题,不同厂商的系统进程名不一定一样

版权声明

![Creative Commons BY-NC-ND 4.0 International License](/images/cc.png)

Lam’s Blog by Binghe Lin is licensed under a Creative Commons BY-NC-ND 4.0 International License.
林炳河创作并维护的Lam’s Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证

本文首发于Lam’s Blog - Knowledeg as Action,版权所有,侵权必究。

本文永久链接:http://linbinghe.com/2017/e812f72b.html