美文网首页我爱编程
Android 推送保活

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