sistema saber qué para oreo optimizar más mucha mejor extender cómo consumen consume como celular batería bateria app aplicaciones ahorrar android dialog system detect

android - saber - optimizar bateria



En Android, se muestra cómo detectar un diálogo del sistema(opciones de energía, aplicaciones recientes, batería baja...)? (2)

Hola Stackoverflowers (lo sé, eso no suena como debería ...)

Bueno, creo que casi todo está en la pregunta: me gustaría detectar cualquier cosa que haga que la visualización de mi actividad se oculte parcialmente, por ejemplo, opciones de energía, bandeja de aplicaciones recientes, notificación de batería baja, etc. ... y estoy teniendo dificultades para detectar estos eventos del sistema.

Estaba bastante seguro de que se llamaría a OnPause () cuando ocurrieran tales eventos, pero parece estar equivocado ... ¿o soy yo?

¿Alguna otra idea? ... Preferiría no engancharme a cada acción de transmisión del sistema individualmente, ya que me gustaría ser lo más genérico posible (y reaccionar ante CUALQUIER COSA que oculte mi Actividad).

Gracias por cualquier entrada!


Estaba bastante seguro de que se llamaría a OnPause () cuando ocurrieran tales eventos, pero parece estar equivocado ... ¿o soy yo?

onPause() si otra actividad toma la entrada de primer plano. Por lo tanto, si una aplicación de terceros onPause() primer plano, incluso con una actividad con tema de diálogo, se onPause() .

Sin onPause() no es necesario onPause() a onPause() desde los componentes del sistema operativo.

Prefiero no engancharme a cada acción de transmisión del sistema individualmente, ya que me gustaría ser lo más genérico posible (y reaccionar ante CUALQUIER COSA que oculte mi Actividad).

Lo que quieres no es posible. No todas las cosas que lista tienen Intents transmisión, y hay otras técnicas que las personas pueden usar (por ejemplo, Toasts ) que oscurecerán parte de su actividad de la que no tendrá conocimiento.


Al trabajar en una aplicación de kiosco, sé que algunos cuadros de diálogo pasan a primer plano y pueden ser detectados por

ActivityManager activityManager = (ActivityManager)getBaseContext() .getSystemService(Activity.ACTIVITY_SERVICE); String className = activityManager.getRunningTasks(1).get(0).topActivity.getClassName();

Un ejemplo de esto es el diálogo de enlace bluetooth que pone a com.android.settings en primer plano.

Un contraejemplo es el diálogo del botón de encendido (apagar, reiniciar, etc.) que no aparece en primer plano.

Tenga en cuenta que puede cerrar los diálogos del sistema (incluso el cuadro de diálogo del botón de encendido) con esta transmisión:

Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); sendBroadcast(closeDialog);

Pero en la mayoría de los dispositivos (¿más nuevos?), Esta transmisión incluso cerrará el teclado del software, por lo que no es aconsejable tener un servicio en ejecución que lo envíe con frecuencia ya que el usuario no podrá ingresar nada en un campo de texto.

Tenga en cuenta que dicho comportamiento definitivamente gratificará su aplicación como un malware, evitando que se publique en google play.