参考

进程等级

  1. 前台进程 (Foreground process)

  2. 可见进程 (Visible process)

  3. 服务进程 (Service process)

  4. 后台进程 (Background process)

  5. 空进程 (Empty process)                                                                                                                                                                 

方法1.利用Activity提升权限

方案设计思想:监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的 Activity,在用户解锁时将 Activity 销毁掉。注意该 Activity 需设计成用户无感知。

通过该方案,可以使进程的优先级在屏幕锁屏时间由4提升为最高优先级1。主要思路是用户锁屏时激活用户解锁时关闭,该活动为像素级大小活动,且透明,android.intent.action.USER_PRESENT理解见ndroid.intent.action.USER_PRESENT

 

 

方法2. 利用 Notification 提升权限

方案设计思想:Android 中 Service 的优先级为4,通过 setForeground 接口可以将后台 Service 设置为前台 Service,使进程的优先级由4提升为2,从而使进程的优先级仅仅低于用户当前正在交互的进程,与可见进程优先级一致,使进程被杀死的概率大大降低。

方案实现挑战:从 Android2.3 开始调用 setForeground 将后台 Service 设置为前台 Service 时,必须在系统的通知栏发送一条通知,也就是前台 Service 与一条可见的通知时绑定在一起的。

对于不需要常驻通知栏的应用来说,该方案虽好,但却是用户感知的,无法直接使用。

方案挑战应对措施:通过实现一个内部 Service,在 LiveService 和其内部 Service 中同时发送具有相同 ID 的 Notification,然后将内部 Service 结束掉。随着内部 Service 的结束,Notification 将会消失,但系统优先级依然保持为2。

如果API<18,则可以启用sevice传入Notification(),如果API>18,则创建内部类InterService,类里面有 Notification,开启一个Notification,再在内部类中开启一个Notification,随后将InterService 关掉,此时不会有通知栏但是还有一个Notification在运行,进程不易被Kill

 

方法3 进程死后拉活的方案

方案适用范围:适用于全部 Android 平台。但存在如下几个缺点:

  1. 广播接收器被管理软件、系统软件通过“自启管理”等功能禁用的场景无法接收到广播,从而无法自启。

  2. 系统广播事件不可控,只能保证发生事件时拉活进程,但无法保证进程挂掉后立即拉活。

因此,该方案主要作为备用手段。

 

利用系统Service机制拉活

方案设计思想:将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活

  1. Service 第一次被异常杀死后会在5秒内重启,第二次被杀死会在10秒内重启,第三次会在20秒内重启,一旦在短时间内 Service 被杀死达到5次,则系统不再拉起。

  2. 进程被取得 Root 权限的管理工具或系统工具通过 forestop 停止掉,无法重启。

更多相关文章

  1. android service的使用(一)
  2. Android中与外部进程通信和调用外部程序
  3. Android中persistent属性用法详解
  4. android 内存泄漏原因及解决方案
  5. Android(安卓)Root方法原理解析及Hook(四) GingerBreak
  6. Android之通过ContentProvider实现两个app(进程间)间通信以及函
  7. android开发退出程序的几种方式
  8. Android(安卓)Studio 打包国际化报错以及解决方案
  9. Android(安卓)ISurface PostBuffer 处理流程

随机推荐

  1. 箭头的使用
  2. android利用数字证书对程序签名
  3. 升级到Android(安卓)Studio 3.2.1,报The s
  4. java服务端与ios,android实现简单数据加密
  5. android中设置AlertDialog的大小
  6. Android中BLE连接出现“BluetoothGatt st
  7. android电子书大全 下载
  8. android 更改TextView部分字体颜色、大小
  9. android搜索热词(热门标签)流式布局的实
  10. Android两级嵌套ListView滑动问题的解决