打盹模式下的网络访问

gre*_*f82 9 android android-6.0-marshmallow

打瞌睡时是否可以使用网络访问?如果我的应用程序忽略电池优化不会进入待机状态,但无论如何都会受到打瞌睡的影响.我错过了什么吗?

M66*_*66B 6

无论您的应用程序是否忽略电池优化,都会在打盹模式下禁用网络访问.将您的设备从打盹模式唤醒并获取网络访问权限的唯一方法是向您的应用程序发送高优先级的Google云消息.

编辑:可以让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);
Run Code Online (Sandbox Code Playgroud)

  • 嗯,`if`是什么?AFAIK,确定您使用的两个"意图"操作中的哪一个取决于您是否要请求"REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"权限,而不是您是否已经在白名单中.我错过了什么吗? (7认同)
  • 小心忽略电池优化 - 我的应用程序刚从Google Play暂停,恕不另行通知请求`REQUEST_IGNORE_BATTERY_OPTIMIZATIONS`,即使免除应用程序电池优化对我的应用程序的功能至关重要,我也不能出于技术原因使用GCM. (7认同)
  • setExactAndAllowWhileIdle按预期唤醒设备,但在打盹模式下每15分钟只唤醒一次.这取决于你使用的时间.然而,当系统醒来时,你有10秒的时间做文件所说的事情. (3认同)
  • "...有效地禁用了你的应用程序的打盹模式" - 不,不幸的是情况并非如此.将应用程序列入白名单以"忽略电池优化"不会影响其在打盹模式下的行为.请参阅此处:https://code.google.com/p/android-developer-preview/issues/detail?id = 2225#c11 (2认同)
  • 请注意,启用电池优化后,处于do睡模式时,* setExactAndAllowWhileIdle *不会触发警报。对我而言,使用* setExactAndAllowWhileIdle *并禁用电池优化是在打ze模式下获得网络访问的唯一方法。 (2认同)
  • 照片应用如何在6.0.1的Doze模式下进行备份?它没有列入白名单.我的应用程序网络访问在Doze中暂停,但照片不断上传. (2认同)
  • *在打盹模式下禁用网络访问,无论您的应用程序是否忽略电池优化.*这是不正确的*可以让Android忽略您的应用程序的电池优化,这有效地禁用了应用程序的打盹模式.*这也是不正确的*setExactAndAllowWhileIdle (每15分钟最多一次唤醒)*现在是9分钟 (2认同)