如何实现线程保活

有两种方案:

第一种:提升优先级,降低进程被杀死的概率

     线程的优先级 (a.前台进程 b.可见进程 c.服务进程 d.后台进程 e.空进程)

1.利用Activity提升权限:监听手机锁屏事件,在屏幕锁屏的时候启动一个1像素的Activity,在用户解锁时将Activity销毁,注意要设置成透明状态.

2.利用Notification提升权限:AndroidService的优先级是4,我们可以通过setForeground接口将后台Service设置为前台Service,这样进程的优先级会变成2,进程的优先级仅仅低于用户当前正在交互的进程,与可见进程一样,进程被杀死的概率就小了.

第二种:在进程被杀死后,进行拉活

  1. 利用系统广播拉活:在发生特定系统事件时,系统会发出响应的广播,通过在 AndroidManifest 静态注册对应的广播监听器,就可以在发生响应事件的时候拉活。
  2. 利用系统Service进行拉活:将 Service 设置START_STICKY,利用系统机制在 Service 挂掉后自动拉活(有五秒延迟)。
  3. 利用JobSchedule机制拉活:Android5.0 以后系统对 Native 进程等加强了管理,Native 拉活方式失效。系统在 Android5.0 以上版本提供了 JobScheduler 接口,系统会定时调用该进程以使应用进行一些逻辑操作。

你可能感兴趣的:(如何实现线程保活)