Android
Modo Doze
Buscar..
Observaciones
El modo Doze es un conjunto de cambios y reglas que ponen su teléfono en suspensión cuando está inactivo.
En Android 6.0 Marshmallow: el modo Doze se activa después de un tiempo en que la pantalla está apagada, el dispositivo está parado y funciona con batería. Como puede ver en el diagrama anterior, cuando se activa el Modo Doze, el dispositivo no recibe ningún wakelocks, acceso a la red, trabajos / sincronizaciones, alarmas, GPS / Wi-Fi.
En Android 7.0 Nougat: imagínese si su teléfono está en su bolsillo (la pantalla está apagada, se está quedando sin batería, pero no está estacionada) es posible que también desee obtener las funciones del modo Doze, ¿verdad? Por eso es que Google anunció el Modo Doze extendido: se ejecuta cuando la pantalla está apagada, pero no estacionaria. Como puede ver en este diagrama, solo el Acceso a la red y los trabajos / sincronizaciones están deshabilitados. Tenga en cuenta que el Doze extendido no reemplaza el primer Modo Doze. Trabajan juntos, dependiendo del estado del teléfono (estacionario o no). Aquí están las distinciones: Los desarrolladores deben ser conscientes de que:
- Doze puede mantener el acceso temporal a wakelock y a la red para mensajes GCM (Google Cloud Messaging) de alta prioridad (para casos donde el usuario necesita una notificación inmediata);
- Los servicios de primer plano (como la reproducción de música) continuarán funcionando.
Puede encontrar más información aquí: https://developer.android.com/training/monitoring-device-state/doze-standby.html
Excluir la aplicación del uso del modo dormido
- Abrir la configuración del teléfono
- batería abierta
- Abre el menú y selecciona "optimización de batería".
- En el menú desplegable, seleccione "Todas las aplicaciones".
- Selecciona la aplicación que deseas incluir en la lista blanca.
- seleccione "no optimizar"
Ahora esta aplicación se mostrará bajo aplicaciones no optimizadas.
Una aplicación puede verificar si está en la lista blanca llamando a isIgnoringBatteryOptimizations()
Lista blanca de una aplicación de Android mediante programación
La lista blanca no deshabilitará el modo de inactividad de su aplicación, pero puede hacerlo mediante el uso de la red y los bloqueos de retención / activación.
La lista blanca de una aplicación de Android se puede hacer mediante programación de la siguiente manera:
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}
El resultado del inicio de la actividad anterior se puede verificar mediante el siguiente código:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(isIgnoringBatteryOptimizations){
// Ignoring battery optimization
}else{
// Not ignoring battery optimization
}
}
}