#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);
Поэтому предложите пользователю отключить оптимизацию батареи и запустить это намерение выше.