Get onPause & onResume como eventos en el nivel de aplicación / tarea

Me preguntaba cuál podría ser la razón de no tener una devolución de llamada en el nivel de aplicación cuando una aplicación va al fondo y viene al primer plano. La onPause y onResume la clase de onPause sólo se onResume en la actividad principal actual. Si quiero detener una tarea en segundo plano que tenga el ámbito de aplicación, entonces no hay forma fácil de detenerla cuando la aplicación va al fondo. Hay una alta demanda para estos devoluciones de eventos.

¿Por qué Android no tiene una llamada de llamada de nivel de aplicación en la pausa y el reanudación de las aplicaciones? ¿Se puede implementar en Android en el nivel de tarea (pila de actividad) si no en el nivel de aplicación?

El verdadero problema:

Un fondo Timertask actualiza la interfaz de usuario con datos de la web a intervalos regulares. Cuando la aplicación ya no está en primer plano, quiero detenerla.

Actualmente estoy poniendo el código de repetición en un BaseActivity . Esto es en el nivel de actividad. La tarea se detiene y se inicia en cada pausa y reanudar de cada actividad y el evento de la aplicación va a bg o venir a fg se oculta entre uno de estos eventos, que no puedo saber. Quería saber si hay una mejor manera de hacerlo, quiero decir saber cuándo la aplicación ha dejado de ser visible para el usuario.

Utilice el controlador en lugar de TimerTask. Un mensaje temporizado para un manejador vinculado a Looper de una actividad no se activará si la actividad no está activa.

El patrón sería enviar un mensaje cronometrado al Handler que generaría a su vez un Thread / AsyncTask que ejecutaría la solicitud en segundo plano y actualizaría la interfaz de usuario. Un poco más sobrecarga en la creación / destrucción de hilos, pero esto es I / O obligado de todos modos. Usted podría hacer un grupo de hilos si esa sobrecarga se convierte en un cuello de botella (aunque dudo que lo haría).

Si realmente desea saber cuándo su aplicación ya no está en primer plano, puede utilizar la superposición en onStop / onResume entre dos actividades. Al pasar de A-> B, onResume de B se llamará antes de OnStop de A. Por lo tanto, puede incrementar un contador global en onResume y decrementarlo en onStop. Ese contador se convertirá en 0 si y sólo si no hay actividades visibles. Utilicé esto con éxito para realizar un seguimiento de visitas precisas con fines analíticos. Sin embargo, requiere una clase base común para todas sus actividades.

¿Estás hablando de la clase android.app.Application? Hay una sola aplicación creada cuando empieza tu aplicación, antes de iniciar alguna actividad o servicio y vive mientras la aplicación permanezca en la memoria.

Puede extender esta Aplicación y poner allí algunos datos globales. Especifique en el manifiesto en <application android: name = ". YourApp"> el nombre de su clase extendida.

Ahora usted debe entender, que la Aplicación como tal no va a primer plano o de fondo, sólo puede Actividad. Sin embargo, desde su Actividad, puede llamar a getApplication para obtener su instancia de aplicación única (usar casting) y llamar a sus propios métodos relacionados con el cambio de enfoque, sabiendo así si su aplicación como un todo está en primer plano o de fondo y se comportan según sea necesario.

Y el servicio también tiene el método getApplication (), que recibe el mismo objeto Application.

La mayoría de los desarrolladores probablemente no se dan cuenta de que pueden tener un único objeto de aplicación que mantiene los datos de las aplicaciones necesarias, no sólo un montón de actividades y servicios.

Si desea realizar alguna tarea de fondo que tenga un ámbito de nivel de aplicación, debería lanzar un nuevo subproceso en un servicio para realizar esta tarea.

El servicio es independiente de cualquier actividad y por lo tanto seguirá ejecutando el hilo de tareas hasta que lo detenga.

  • Llamar aResumo en la actividad de Android
  • ¿Cómo usar onResume ()?
  • OnDestroy se llama cada vez que se enciende la pantalla
  • Android onCreate onResume
  • OnCreate, onCreateOptionsMenu, onResume, ¿cuál es el orden de ejecución?
  • ¿Cómo volver a la misma instancia de actividad después de reanudarla?
  • Ciclo de vida de la actividad de Android: ¿para qué sirven todos estos métodos?
  • Fragment onResume () no se llama cuando se utiliza FragmentPagerAdapter
  • Actualizar Android ListView
  • Android: detención de actividad que no se reanuda
  • AdMob - Deshabilitar solicitud onPause ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.