【发布时间】:2015-08-31 17:15:21
【问题描述】:
打瞌睡时是否可以使用网络访问?如果我的应用程序忽略了电池优化,则不会进入待机状态,但无论如何它都会受到打瞌睡的影响。我错过了什么吗?
【问题讨论】:
标签: android android-6.0-marshmallow
打瞌睡时是否可以使用网络访问?如果我的应用程序忽略了电池优化,则不会进入待机状态,但无论如何它都会受到打瞌睡的影响。我错过了什么吗?
【问题讨论】:
标签: android android-6.0-marshmallow
在打盹模式下网络访问被禁用,无论您的应用是否忽略电池优化。将您的设备从打盹模式唤醒并获得网络访问权限的唯一方法是向您的应用发送高优先级的 Google Cloud Message。
编辑:可以让 Android 忽略应用程序的电池优化,这会有效地禁用应用程序的打盹模式。但是,这需要使用 setExactAndAllowWhileIdle 方法(每 15 分钟最多唤醒一次)和用户交互,可以这样完成:
Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm.isIgnoringBatteryOptimizations(packageName))
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
}
context.startActivity(intent);
编辑:建议将权限 android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 添加到清单中。除了建议的解决方案不需要这样做之外,它还会导致您的应用从 Play 商店中删除。
【讨论】:
if 是怎么回事? AFAIK,确定您使用这两个Intent 操作中的哪一个是基于您是否要请求REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限,而不是您是否已经在白名单上。我错过了什么吗?
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,即使免除应用的电池优化对我的应用的功能至关重要,我可以'出于技术原因不要使用 GCM。
根据documentation,您现在可以为您的应用提供一个前台通知,该通知将无视打盹模式,并且您的应用应该能够访问网络。
【讨论】: