Ожидаемое поведение заключается в том, что приложение будет работать все время, когда оно находится во включенном состоянии. Некоторые телефоны переводят приложение в фоновый режим, если оно какое-то время неактивно. Я хочу, чтобы приложение работало все время, даже в режиме ожидания (режим ожидания означает, что когда мы нажимаем кнопку "Домой", приложение переходит в фоновый режим и некоторое время запускается).
Я нашел следующий код, и я попробовал это
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 (рекомендуется)
Я хочу, чтобы приложение находилось в режиме без ограничений после его открытия, какое-нибудь решение для этого?
Код, который вы используете для оптимизации батареи. Settings--> Batery → Пункт меню из трех точек (...) ---> Аккумулятор Optimization--> (Выбрать приложение из списка) ---> Оптимизировать/Не оптимизировать.
Выбирая Don't optimize
вы в основном обходите Doze
, а не app standby
.
Также имейте в виду, что выполнение этого программным путем, как и вы, может привести к тому, что Google заберет ваше приложение из магазина. Безопаснее делать это вручную, следуя указанному выше пути.
Подробнее о Doze
и App Standby
здесь