怎么让 Android 程序一直后台运行,像 QQ 同样不被杀死

转自:https://blog.csdn.net/javazejian/article/details/52709857java

 

做者:闭关写代码
连接:https://www.zhihu.com/question/29826231/answer/71207109
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

工具

强烈建议不要这么作,不单单从用户角度考虑,做为Android开发者也有责任去维护Android的生态环境。如今不少Android开发工程师,主力机竟然是iPhone而不是Android设备,感到至关悲哀。.net

从技术角度归纳一下如今广泛的防杀方法
    1. Service设置成START_STICKY,kill 后会被重启(等待5秒左右),重传Intent,保持与重启前同样
    2. 经过 startForeground将进程设置为前台进程,作前台服务,优先级和前台应用一个级别,除非在系统内存很是缺,不然此进程不会被 kill
    3. 双进程Service:让2个进程互相保护,其中一个Service被清理后,另外没被清理的进程能够当即重启进程
    4. QQ黑科技:在应用退到后台后,另起一个只有 1 像素的页面停留在桌面上,让本身保持前台状态,保护本身不被后台清理工具杀死
    5. 在已经root的设备下,修改相应的权限文件,将App假装成系统级的应用(Android4.0系列的一个漏洞,已经确承认行)
    6. Android系统中当前进程(Process)fork出来的子进程,被系统认为是两个不一样的进程。当父进程被杀死的时候,子进程仍然能够存活,并不受影响。鉴于目前提到的在Android-Service层作双守护都会失败,咱们能够fork出c进程,多进程守护。死循环在那检查是否还存在,具体的思路以下(Android5.0如下可行)
      1. 用C编写守护进程(即子进程),守护进程作的事情就是循环检查目标进程是否存在,不存在则启动它。
      2. 在NDK环境中将1中编写的C代码编译打包成可执行文件(BUILD_EXECUTABLE)。
      3. 主进程启动时将守护进程放入私有目录下,赋予可执行权限,启动它便可。
    7. 联系厂商,加入白名单
相关文章
相关标签/搜索