安卓6.0以后忽略电池优化

 安卓一个永恒的话题“进程保活”,想要仅仅从代码层面让你的app保活,基本是不可能的,必须还要配合很多用户的操作。当然能编译系统源码的大佬就当我没说。而代码层面要做的事也很多,什么startForeground,传说中的1像素大法,双service互相拉起,还有就是本文要说的针对安卓6.0之后要做的一件事,忽略电池优化,也有叫添加电池优化白名单。做法很简单,就两步:

一、声明权限

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

二、添加申请代码

 public void ignoreBatteryOptimization(Activity activity) {

        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            //  判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
            if (!powerManager.isIgnoringBatteryOptimizations(activity.getPackageName())) 
  {
                Intent intent = new 
                Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + activity.getPackageName()));
                //跳转之前判断intent是否存在,否则有的机型会报找不到activity
                if (intent.resolveActivity(getPackageManager()) != null) {
                    startActivityForResult(intent, BATTERY_REQUEST);
                }else{
                    //TODO
                }
            } else {
                //TODO
            }
        } else {
            //TODO
        }


    }

需要注意的是其中跳转之前intent.resolveActivity(getPackageManager()) != null这个判断不能忘了,因为并不是所有的6.0系统都有这么个功能,如果不加这一句,有的机型就会报找不到activity,报错,闪退,很危险。关于resolveActivity大家可以百度下,还有其它替代方法。我也是因为上线后客户反馈才加上这句的,所以记录下。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值