Android 推送保活
2018-04-14 本文已影响66人
黑色海鸥
大体分类
理想
* 接入厂商推送服务
* 靠用户黏性自己长时间使用
* 和厂商合作,app加入白名单
技术手段
提高进程优先级;通过服务不被轻易杀死提高推送服务存活时间
针对被kill场景做优化;
提高进程优先级
- 前台进程 (Foreground process)
- 可见进程 (Visible process)
- 服务进程 (Service process)
- 后台进程 (Background process)
- 空进程 (Empty process)
进程其实有一种具体的数值,称作oom_adj,注意:数值越大优先级越低
进场被Kill的场景
- 点击home键使app长时间停留在后台,内存不足被kill
处理这种情况前提是你的app至少运行了一个service,然后通过Service.startForeground() 设置为前台服务,可以将oom_adj的数值由4降低到1,大大提高存活率。 - 在大多数国产手机下,进入锁屏状态一段时间,省电机制会kill后台进程
注册广播监听锁屏和解锁事件, 锁屏后启动一个1像素的透明Activity,这样直接把进程的oom_adj数值降低到0,0是android进程的最高优先级。 解锁后销毁这个透明Activity - 用户手动释放内存:包括手机自带清理工具,和第三方app(360,猎豹清理大师等)清理内存软件会把 优先级低于 前台进程(oom_adj = 0)的所有进程放入清理列表,而当我们打开了清理软件就意味着其他app不可能处于前台。所以说理论上可以kill任何app。
因此这类场景唯一的处理办法就是加入 手机rom 白名单