Android 推送保活
作者:
黑色海鸥 | 来源:发表于
2018-04-14 14:42 被阅读66次大体分类
理想
* 接入厂商推送服务
* 靠用户黏性自己长时间使用
* 和厂商合作,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 推送保活
本文链接:https://www.haomeiwen.com/subject/fxtlkftx.html
网友评论