¿Hay algo así como una aplicación global onPause() y onResume()?
No, lo siento.
Mi actividad principal de escucha para el GPS correcciones, que quiero seguir trabajando al cambiar a otra pantalla /actividad. Por lo tanto, no puedo anular el registro de mi LocationListener en la actividad onPause() de . Sin embargo todavía quiero anular el registro de mi oyente GPS al cambiar a otra aplicación (así ahorrar batería) y de volver a en al volver a mi solicitud, sin importar lo que la pantalla/actividad del usuario es actualmente.
Aquí es un enfoque posible:
Paso # 1: Mover la lógica LocationListener
en un Service
, que las actividades se conectan a través del patrón de unión local o algo. También tenga al menos una llamada de servicio startService()
, por lo que unbindService()
no causará que desaparezca (suponiendo que esté utilizando el patrón local de enlace).
Paso # 2: Haga que las actividades llamen al servicio durante onPause()
y onResume()
.
Paso # 3: Haga que el servicio mantenga un recuento de referencia de las actividades destacadas.
Paso # 4: Cuando el recuento de referencias llegue a cero, solicite al servicio que se despierte mediante un temporizador y TimerTask
. Además, cancele cualquiera de esos TimerTask
pendientes si el recuento de referencias se incrementa.
Paso # 5: Haga que el TimerTask
apague el GPS si alguna vez se ejecuta.
La red es que solo lanzará el GPS después de tal cantidad de inactividad. Esa inactividad podría ser por cualquier razón.
Muchas gracias Marcos por esa explicación detallada. – znq
También es nuevo en API 14, ActivityLifecycleCallbacks. http://stackoverflow.com/questions/3667022/android-is-application-running-in-background/13809991#13809991 – Amozoss
es esta respuesta sigue siendo la misma para 2016>? ¡un ciclo de vida de actividad global sería muy útil! – commonSenseCode