Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Pausa de la aplicación / estado de reanudación

Mi pregunta es puedo llegar a saber cuando la aplicación entera se pausa / reanudación de inicio / parada, etc Por ejemplo, si tengo 5 actividades en mi aplicación. Cada vez que una actividad se pausa / reanuda Android notifica la actividad llamando a los métodos onPause / onResume.

Así que hay dos situaciones posibles cuando mi actividad se detiene. 1. Mi actividad-2 se detiene porque se invoca mi actividad-3. 2. Mi actividad-2 se detiene debido a alguna actividad externa como una llamada entrante.

Aquí estoy interesado sólo el seguimiento cuando mi actividad se detiene por actividades externas no mis propias actividades de aplicación.

Así que hay alguna solución proporcionada de Android para esto o tengo que escribir mi solución personalizada.

Gracias Dalvin

4 Solutions collect form web for “Pausa de la aplicación / estado de reanudación”

No hay ninguna solución proporcionada por la API porque no es necesaria en la mayoría de los casos.

Lo que puedes hacer es crear una actividad abstracta y hacer que todas tus actividades hereden de esta abstracta. En esta actividad abstracta, al sobreescribir onCreate, onResume, onPause, onDestroy, puedes contar cuántas de tus propias actividades están "vivas" y determinar el estado de tu aplicación.

Esto podría funcionar, pero no es realmente la filosofía de Android

Puede conocer el inicio de toda la aplicación en application.oncreate() pero no hay ningún indicador para la pausa de toda la aplicación. La mayoría de los casos nunca lo necesita de todos modos.

Por lo tanto leer más en el ciclo de vida de la actividad y la clase de aplicación .

Sin embargo, puede hacer esta opción en su programa mediante la sustitución de la onPause en cada clase y guardar un valor a los SharedPrefrences a continuación, comprobar este valor en toda la aplicación

Si entiendo su pregunta, desea que su aplicación pueda distinguir entre salir de la actividad actual dentro del contexto de su programa o de un evento externo como una llamada telefónica. He utilizado el siguiente método en el pasado para hacer esto (aunque puede no ser el mejor, definitivamente funciona):

(1) Configure un valor en SharedPreferences (el archivo incorporado para almacenar los datos de un programa). Llámelo como "exitStatus" que se establece en 1 para una salida dentro del código del programa y 0 para una salida basada en eventos externos.

(2) Ahora, dentro de cada una de sus actividades, establezca el valor de exitStatus en 0 en onResume (que se llama sin importar cómo se ingresa). Si el programa se cierra debido a un evento externo dentro de esa actividad, este valor persistirá cuando se vuelva a cargar el programa.

(3) Al final de su actividad, en todos los puntos donde va a transferir a otra actividad, primero establezca exitStatus a 1. Luego, cuando llegue a la otra actividad, sabrá que llegó allí desde dentro de su programa .

(4) Por lo tanto, para estar claro, cada una de sus actividades puede comprobar exitStatus desde el principio para ver si está ingresando desde su contexto de programa (= 1) o después de una salida no local de algún tipo (= 0).

Eso es todo al respecto. Utilizo este método para estar seguro de que los datos de carga de mi aplicación están presentes, ya que se puede perder si un usuario apaga su dispositivo para que la aplicación intente recoger en medio de las cosas cuando más tarde reiniciar, etc.

En lugar de hacer actividad base y anular onPause / onResume puede utilizar

 registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) 

Donde puede manejar estos estados para las actividades de aplicación en un solo lugar.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.