android学习笔记

安卓保活学习笔记

2020-03-17  本文已影响0人  heheworld
  1. 前台进程,(用户可见,并可以交互的那种,最上层)
  2. 可见进程,(用户可见,但不可操作,譬如一个被对话框遮住的activity)
  3. 服务进程,(service)
  4. 后台进程,(不在前台的一些页面,譬如打开了b应用,但没有退出之前的a应用,)
  5. 空进程
  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以上不好用。
推送拉活,需要适配终端,小米用小米推送,华为用华为推送...
全家桶拉活,白名单,大厂才有的资格。

上一篇 下一篇

猜你喜欢

热点阅读