美文网首页android学习笔记
安卓保活学习笔记

安卓保活学习笔记

作者: heheworld | 来源:发表于2020-03-17 13:15 被阅读0次
    • 进程优先级
    1. 前台进程,(用户可见,并可以交互的那种,最上层)
    2. 可见进程,(用户可见,但不可操作,譬如一个被对话框遮住的activity)
    3. 服务进程,(service)
    4. 后台进程,(不在前台的一些页面,譬如打开了b应用,但没有退出之前的a应用,)
    5. 空进程
    • LMK
      LowMemoryKiller,内存不足时,会清理优先级低的应用,依据是oom_adj(或者oom_score),一般值越大,越容易被清理
    • 常见保活方法
    1. activity 提权, (1px的activity,需要监听到锁屏解锁的广播,性能一般)
    2. service 提权, 创建一个前台服务用于提高app在按下home键之后的进程优先级,startForeground(ID,Notification),使Service成为前台Service。 前台服务需要在通知栏显示一条通知
    3. 广播拉活 ,监听系统广播,但新版本,不太容易收到相关系统广播了。
    4. Service机制(Sticky)拉活 ,将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活。只要 targetSdkVersion 不小于5,就默认是 START_STICKY。
      但是某些ROM 系统不会拉活。并且经过测试,Service 第一次被异常杀死后很快被重启,第二次会比第一次慢,第三次又会比前一次慢,一旦在短时间内 Service 被杀死4-5次,则系统不再拉起。
    5. JobScheduler拉活,JobScheduler允许在特定状态与特定时间间隔周期执行任务。可以利用它的这个特点完成保活的功能,效果即开启一个定时器,与普通定时器不同的是其调度由系统完成。效果还不错,但就是依赖系统,定时时机不好掌控,另外7.0以上需要单独适配下。
    6. 双进程守护,两个进程共同运行,如果有其中一个进程被杀,那么另外一个进程就会将被杀的进程重新拉起,这个还可以,注意的是,启动的时候需要先startService,再bindService,因为跨进程了,直接bind肯定是不行的。

    其他
    账户同步拉活,据说不稳定
    Native拉活,在5.0以上不好用。
    推送拉活,需要适配终端,小米用小米推送,华为用华为推送...
    全家桶拉活,白名单,大厂才有的资格。

    相关文章

      网友评论

        本文标题:安卓保活学习笔记

        本文链接:https://www.haomeiwen.com/subject/ycqtyhtx.html