在省电模式Android上运行后台服务

mau*_*les 10 java android background-process

我有一个服务,用于发送在后台运行的http请求,并在"正常模式"下正常工作.问题是当我将手机置于"省电模式"时,该服务无法正常工作.但是,像Whatsapp这样的应用仍然有效.你知道发生了什么吗?

Sag*_*gar 7

诸如Whatsapp之类的移动应用程序必须请求权限才能将其从打ze /省电和应用待机模式中排除。

可以通过在“设置”>“电池”>“电池优化”中配置白名单来手动配置此功能。

另外,从23 API,你可以使用的权限模型,要求用户白名单他们(指)。通过API,您还可以通过调用isIgnoringBatteryOptimizations()检查您的应用当前是否在白名单上

但是,您需要满足某些条件才能将自己列入白名单。否则,在维护Google Play商店中的应用程序时会遇到问题。

但是,诸如Whatsapp之类的Messenger应用程序大多是通过高优先级推送通知触发的,因此即使未运行后台进程,它们也更有可能处于活动状态。

  • 没有 Whatsapp 不会请求电池优化。他们回复 FCM 高优先级消息。 (4认同)

Ani*_*ban 7

添加权限

<uses-permission 
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
Run Code Online (Sandbox Code Playgroud)

请求将您的应用列入白名单

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Intent intent = new Intent();
            String packageName = getPackageName();
            PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
            if (!pm.isIgnoringBatteryOptimizations(packageName)) {
                intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + packageName));
                startActivity(intent);
            }
        }
Run Code Online (Sandbox Code Playgroud)