Оптимизация батареи Android

#android

#Android

Вопрос:

Я разрабатываю приложение, в котором есть служба переднего плана, и пытаюсь определить, когда происходят изменения в сети, чтобы узнать, когда я могу и не могу подключиться. При отключенном энергосбережении (Samsung S6) прослушивание ConnectivityManager.Трансляции CONNECTIVITY_ACTION работают отлично. Однако, когда я включаю энергосбережение, я могу потерять фоновые данные, и трансляция больше ничего мне не сообщает.

Я подозреваю, что это связано с Doze, поэтому я попытался прослушать PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED, но он никогда не запускается.

Если я запрашиваю настройки.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS моя проблема исчезает, но Google извлекает приложения из Play Store для запроса этого. Есть идеи, из-за чего я теряю сетевое соединение и как я могу успешно прослушивать его приход и уход?

Ответ №1:

Пользователь должен отключить оптимизацию батареи.
Вы можете запустить экран для пользователя с:

 Intent intent = new Intent();
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
context.startActivity(intent);
  

Поэтому предложите пользователю отключить оптимизацию батареи и запустить это намерение выше.