El comportamiento esperado es que la aplicación va a estar funcionando todo el tiempo cuando se encuentra en estado ON. Algunos teléfonos poner la aplicación en segundo plano cuando la aplicación no está activo desde hace algún tiempo. Quiero que la aplicación que se ejecuta todo el tiempo, incluso en su modo de espera (modo de espera cuando los medios que pulse el botón de inicio de la aplicación va a ir a fondo. Y se ejecutará durante algún tiempo).
Encontré siguiente código y lo he intentado
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);
}
}
Incluso después de trabajar con el código del estado por defecto es de ahorro de batería (recomendado)
Quiero que la aplicación en modo de Restricción Sin una vez abierta la aplicación, cualquier solución para esto?
The code you use is for battery optimization. Settings-->Batery-->Three Dots Menu Item (...)--->Battery Optimization-->(Choose an app from list)--->Optimize/ Don't optimize.
By choosing Don't optimize
you are essentially bypassing Doze
, not app standby
.
Also be advised that doing this programmatically as you do may result in Google taking your app off the store. It is safer to do it manually following the path i described above.
More on Doze
and App Standby
here