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

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

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

    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);

        }
    }

Даже после работы с кодом по умолчанию используется режим экономии заряда батареи (рекомендуется)

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


person Shafeeq Mohammed    schedule 02.11.2018    source источник
comment
ваше приложение не может изменить системные настройки, а также вы не можете решить, как пользователь хочет, чтобы ваше приложение работало. Если вы хотите, чтобы ваше приложение запускалось всегда после его запуска, используйте службу переднего плана.   -  person Vladyslav Matviienko    schedule 02.11.2018


Ответы (1)


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

Выбирая Don't optimize, вы фактически игнорируете Doze, а не app standby.

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

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

person Sotiris S. Magionas    schedule 02.11.2018
comment
я не загружаю его в магазин приложений. но я хочу добиться этого - person Shafeeq Mohammed; 02.11.2018