Как заставить приложение отказаться от режима экономии заряда батареи, когда служба включена? - PullRequest
0 голосов
/ 02 ноября 2018

Ожидаемое поведение - приложение будет работать все время, когда оно включено. Некоторые телефоны переводят приложение в фоновый режим, если оно какое-то время неактивно. Я хочу, чтобы приложение работало все время, даже в режиме ожидания (режим ожидания означает, что когда мы нажимаем кнопку «Домой», приложение переходит в фоновый режим и некоторое время запускается).

Я нашел следующий код и попробовал

    PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(POWER_SERVICE);
    String packageName = "org.traccar.client";
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Intent i = new Intent();
        if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
            i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            i.setData(Uri.parse("package:" + packageName));
            startActivity(i);
        }
        else{
            i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            i.setData(Uri.parse("package:" + packageName));
            startActivity(i);

        }
    }

Даже после работы с кодом состояние по умолчанию - Battery Saver (рекомендуется)

Я хочу, чтобы приложение в режиме без ограничений после его открытия, какое-нибудь решение для этого?

1 Ответ

0 голосов
/ 02 ноября 2018

Код, который вы используете для оптимизации батареи . Настройки -> Аккумулятор -> Пункт меню из трех точек (...) ---> Оптимизация заряда батареи -> (Выберите приложение из списка) ---> Оптимизировать / Не оптимизировать.

Выбрав Don't optimize, вы по существу обходите Doze, а не app standby.

Также имейте в виду, что выполнение этой программы программным способом может привести к тому, что Google заберет ваше приложение из магазина . Безопаснее сделать это вручную по указанному выше пути.

Подробнее о Doze и приложении Standby здесь

...