Доступ к сети в режиме ожидания
Можно ли использовать доступ к сети при активной дозе? Если мое приложение игнорирует оптимизацию батареи, она не переходит в режим ожидания, но все равно зависит от дозы. Я что-то пропустил?
1 ответ
Доступ к сети отключен в режиме ожидания, независимо от того, игнорирует ли ваше приложение оптимизацию батареи. Единственный способ вывести устройство из режима ожидания и получить доступ к сети - отправить высокоприоритетное сообщение Google Cloud в ваше приложение.
Изменить: можно разрешить 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);
Согласно документации, теперь у вас может быть уведомление переднего плана для вашего приложения, которое будет игнорировать режим ожидания, и ваше приложение должно иметь доступ к сети.