Android APP杀不死(最大存活方法)

前言:
有很多APP和需求,需要让APP不被系统杀死。然而,我在这里,必须明确的跟各位安卓开发者说的就是,这个需求就跟让物理学家发明永动机一样,是不可行的。然而,我们却可以尽最大的可能性让APP存活下来。实现最大存活有多种方式,网上的各位大牛,也有列出方法,我也想在这里,系统的总结一下。但暂时没能一下就全列出来,后面,想到哪个就再补上来,或者如果您有好的建议,直接在评论处给个建议,我会将您的建议列入。

一、接入不同厂商的推送。

这一条,是迄今为止,老夫找到的,保活率最高的方法,看官请稍候,且听我一一道来。
话说安卓大势,分久必合,合久必分。推送之道,久为极光、友盟所占。时至今日,各厂商的霸权意识,已经渐渐生起。
当今之势,各厂商的推送主要有(点击,下面的XX推送,可跳转到相应的推送接入文档页):

1、信鸽推送
2、小米推送
3、华为推送
4、魅族推送
5、VIVO推送
6、OPPO推送

本博主,亲测,存活率相当高,可信(人较穷,机型较少,但在有限资源下,存活率最高)。

二、针对6.0+系统,忽略电池优化功能。优点是锁屏后,还能让APP一直运行。缺点是,用户可能不同意。

/**
 * 忽略电池优化
 */
public void ignoreBatteryOptimization(Activity activity) {

    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    
    boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(activity.getPackageName());
    //  判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
    if(!hasIgnored) {
          Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
        intent.setData(Uri.parse("package:"+activity.getPackageName()));
        startActivity(intent);
    }
}
// 在AndroidManifest.xml里加入以下权限。
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

三、接入极光、友盟等第三方SDK,实现互拉。
这些第三方SDK,普遍有“互拉”的功能。特别是友盟,居然连UC都有。UC现在,普及程度不比微信低多少。接入这些第三方SDK的优点是,实现互拉,可以大大的增加APP存活机率,哪怕APP被killed了,也能被拉起来。但是,弊端也有。就是有些Android系统,已经出现了禁止互拉功能的选项了,不过,用户一般不会去操作吧。

四、双进程守护应用。
开一个后台服务,通过设置android:process属性,来让这个后台与APP处于不同进程,来达到互相监听,互相唤醒。然而实际情况呢?优点是,在部分机子上,确实可以。。但部分机子上,当APP被杀后,这些“处于不同进程的服务“也照样被杀。据说,有些机子杀APP是直接把APP相关的进程池都清空掉。所以,这种方法,不一定行得通。

相关文献:
1、双进程守护应用保活方法

五、维持一个Socket长连接。
一个Socket长连接可以让你的后台服务长时间的运行。甚至,在杀死APP的一瞬间,还会出现复活的现象。

相关文献:
1、微信Android客户端后台保活经验分享
2、微信Android客户端架构演进之路

六、维持一个在消息栏的通知。
像某狗一样。这种,也可以避免被杀。这种可能比较恶心人,除非功能性的需求,不然不建议这样做。像某狗这种音乐型APP,是比较适合这种。但其它APP,慎重考虑。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值