android 1像素保活方案 一像素保活(保证代码有效)

需要完整有效代码的粉丝,加我上面的绿泡泡。

之前有做过1像素保活

1像素保活后台服务

现在2021年了,很多保活方式其实已经过时了

谷歌对于这方面的掌控也越来越严

而且作为开发者,其实也不建议应用长时间的驻留内存

搞得和流氓软件一样。

但一些实际场景,的确是需要进程保活的功能的

比如跑步,聊天,外卖软件等等

这几天也在搜集相关的知识

最后整理了下

发现有三种方式,还是比较能够提升app的存活率的

而且都是提示用户手动去开启的方式

不是利用系统漏洞之类的取巧方法

显得优雅了很多。

我大概整理了下,分别是

1后台运行白名单
2自启动管理
3电池策略(这一点不同厂商有不同的叫法,比如小米叫“设置后台无限制”,华为叫“设置电池优化”。这边我先统一叫电池策略)

下面就开始一一介绍,文末会放出全部代码。

1、后台运行白名单

这个方法需要添加以下权限

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

可以从权限的名字看出来,叫做忽略电池优化

这里我们还是叫做后台运行白名单

使用起来也很简单,检测下是否开启,没有就提示用户开启

也可以在onActivityResult方法里再判断一次是否开启

这个方式只对6.0以上的机器有效

文末的代码里我也做了判断

代码如下(KeepAliveUtil工具类代码会在文末放出)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!KeepAliveUtil.isIgnoringBatteryOptimizations(this)) {
                KeepAliveUtil.requestIgnoreBatteryOptimizations(this,0x001);
            }else {
                Toast.makeText(this, "\"忽略电池优化功能\"已开启", Toast.LENGTH_SHORT).show();
            }
        }else {
            Toast.makeText(this, "安卓版本太低,不支持此功能", Toast.LENGTH_SHORT).show();
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

2、自启动管理

这个主要是提示用户去开启应用的自启动

因为每个厂商跳转到自启动页面的代码都不一样

所以这边用工具类适配了几个主流机型

包括miui,华为,oppo,vivo

具体代码后面也会放出

3、电池策略

这个和自启动管理差不多,也是要去适配不同的厂商的

后面一样有代码放出

只是这个需要注意

不同的厂商叫法还不一样

这个叫法是我随便起的

比如小米叫“设置后台无限制”,华为叫“设置电池优化”。

oppo里面又叫应用速冻了

vivo里面叫做允许后台高耗电

为了实现这三个提示用户去开启的功能

我做了一个简单的demo

用三个按钮去代替这三个功能的实现

第三个按钮上方还添加了TextView对开启路径做一个提示

毕竟不同厂商的路径还不一样

业务代码封装在了KeepAliveUtil这个工具类。下面开始贴代码

首先是MainActivity

public class MainActivity extends AppCompatActivity {

    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn1 = findViewById(R.id.btn1);
        Button btn2 = findViewById(R.id.btn2);
        Button btn3 = findViewById(R.id.btn3);
        TextView tv_tip = findViewById(R.id.tv_tip);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //后台运行白名单
                btn1Fun();
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //自启动管理
                btn2Fun();
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //省电策略
                btn3Fun();
            }
        });
        tv_tip.setText(KeepAliveUtil.getBatteryStrategyTipStr(this));
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值