Android 推送保活

大体分类

理想
* 接入厂商推送服务
* 靠用户黏性自己长时间使用
* 和厂商合作,app加入白名单
技术手段
提高进程优先级;通过服务不被轻易杀死提高推送服务存活时间
针对被kill场景做优化;

提高进程优先级
  • 前台进程 (Foreground process)
  • 可见进程 (Visible process)
  • 服务进程 (Service process)
  • 后台进程 (Background process)
  • 空进程 (Empty process)

进程其实有一种具体的数值,称作oom_adj,注意:数值越大优先级越低

查看https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650825271&idx=1&sn=2f71bc9a6a5f3b638cb561c777b713b3&chksm=80b7b6a9b7c03fbfc0b72341f1b0dd4e014acddbd49152914a5360a6f72cd7c8803e50021d68&mpshare=1

进场被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 白名单

你可能感兴趣的:(Android 推送保活)