从 Android 6.0 开始,系统为了省电增加了休眠模式,系统待机一段时间后,会杀死后台正在运行的进程。但系统会有一个后台运行白名单,白名单里的应用将不会受到影响,在原生系统下,通过「设置」 - 「电池」 - 「电池优化」 - 「未优化应用」,可以看到这个白名单。
从网上查了些资料,找到:android应用申请加入电池优化白名单
根据上面资料转native.js,上代码。
-
① 添加权限
在manifest.json源码视图中添加<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />,就加在那一堆permissions中。 -
② 判断我们的应用是否在白名单中
// 白名单 var main = plus.android.runtimeMainActivity(); var packName = main.getPackageName(); var Context = plus.android.importClass("android.content.Context"); var PowerManager = plus.android.importClass("android.os.PowerManager"); // 获取电源类 var pm = main.getSystemService(Context.POWER_SERVICE); console.log('是否在白名单:',pm.isIgnoringBatteryOptimizations(packName)); //是否白名单 let whiteList = pm.isIgnoringBatteryOptimizations(packName);
-
③ 调起服务
try{ var Uri = plus.android.importClass("android.net.Uri"); var Settings = plus.android.importClass("android.provider.Settings"); var packageURI = Uri.parse("package:" + packName); var intents = plus.android.newObject("android.content.Intent", Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,packageURI); // 电池 main.startActivity(intents); }catch{ // console.log('调起失败') }
-
④ 发行-云打包测试
测试多次HbuliderX里是调不起来,打包后才能出来
总结:自己测试-打开应用,然后锁屏(半小时为例)
华为():仍然可以运行,收到消息
小米():中断,除了设置中的电池优化,还有应用详情的“省电策略”,需要再调试
8 个评论
要回复文章请先登录或注册
bobQ
8***@qq.com
maozai
2***@qq.com
1***@qq.com
z***@qq.com
1***@qq.com
z***@qq.com