Служба Foreground приостановлена ​​в Android 9, когда USB отключен - PullRequest
1 голос
/ 01 апреля 2019

В сервисе есть приемник:

    IntentFilter mFilter = new IntentFilter();
    mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
    mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
    mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
    mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

Услуга является услугой переднего плана

 @Override
     public int onStartCommand(Intent intent, int flags, int startId) {

          ...

        startForeground(NOT_ID, getNotification(type));
        return START_STICKY;
}

Служба постоянно работает с уведомлением. Когда услуга "приостановлена", уведомление в порядке.

Проблема:

Когда USB-зарядное устройство отключено (то же самое происходит при подключении к ПК или к обычному зарядному устройству.) И тест выполняется на Android 9, приемник не фиксирует события, события подключения, например, изменение Wi-Fi, подключиться по данным или потерять связь.

Если я подключу USB, детектор событий работает нормально. Для просмотра событий я использую тестовый интерфейс, а не logcat.

Я понимаю, что это происходит потому, что в Android 9 система приостанавливает службы для экономии заряда батареи, когда устройство не подключено.

Есть ли в Android 9 способ, которым ресивер вызывается при отключении USB?

Я тестировал в Android 8.1 и служба не была приостановлена.

Примечание: я не могу объявить получателя в манифесте, потому что с Android 6 это не может быть сделано по причинам батареи.

Дополнительная информация: Для проведения тестов все действия полностью закрыты и отображаются только сервис и уведомление. Если какая-то активность видна пользователю, приемник работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...