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

时间:2018-04-03 21:13:49

标签: java android background-process

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

4 个答案:

答案 0 :(得分:7)

像Whatsapp这样的移动应用程序必须请求允许他们免于打瞌睡/节省电池和应用程序待机模式。

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

或者从API 23开始,您可以使用权限模型来请求用户将它们列入白名单(请参阅this)。来自API您还可以致电isIgnoringBatteryOptimizations()

,检查您的应用当前是否在白名单上

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

但主要是Whatsapp等信使应用程序是通过高优先级推送通知触发的,因此尽管没有运行后台进程,但它们更有可能处于活动状态。

答案 1 :(得分:2)

添加权限

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

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

 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);
            }
        }

答案 2 :(得分:0)

自Marshmallow以来,后台服务正在进行中,除了Oreo以外的其他任何东西都不能用于前台使用。

打盹模式将禁止任何操作,活动时,手机将每隔X小时从少数女士打瞌睡,一些图书馆将允许您在此期间进行一些操作。

如果你想在打瞌睡期间做一些背景操作。电池保护程序您可能需要查看JobScheduler操作,该操作将在手机未打盹时每15分钟或更长时间执行一次,如果您需要更频繁的操作,我建议您查看一下在JobDispatcher。两者都将在退出打盹模式时执行您的任务

答案 3 :(得分:0)

使用 worker 将使您的应用程序能够在瞌睡窗口中运行,但将禁止网络调用。 因此,您需要请求忽略电池优化,以便您可以拨打网络电话。