2012-03-14 22 views
7

¿Es posible interceptar un evento de apagado del teléfono o quizás utilizar un hack diferente al respecto? Tengo un servicio en ejecución permanente que es parte de una aplicación no de mercado que está recopilando algunos datos de análisis. Me gustaría decirles a los analíticos que finalicen la sesión e informen, luego reanuden el cierre del sistema.Eventos de apagado en Android

He intentado desencadenar el evento desde las partes onDestroy o onShutdown de los servicios, pero el teléfono se apagará sin dar tiempo a informar.

Al resolver esto haciendo muchas sesiones cortas basadas en las pantallas de actividad, obtengo información analítica no sensorial que me gustaría evitar.

Respuesta

8

Construya un receptor de difusión en las capturas del intento ACTION_SHUTDOWN.

En el método onReceive() puede lograr lo que está tratando de hacer.

http://developer.android.com/reference/android/content/Intent.html#ACTION_SHUTDOWN

+1

Tengo esto en alto y ha pasado todas las pruebas. –

+1

@TimCapes ¡Impresionante de escuchar! Hay tantas intenciones que arroja Android. Para ayudar con su recopilación de datos, puede ver el intento de acción BOOT_COMPLETE para iniciar su aplicación cuando el teléfono esté encendido;) – jjNford

+0

Ya está haciendo eso para iniciar el servicio al reiniciar, pero gracias por mencionarlo. –

3

Usted podría intentar registrar un gancho Shutwdown utilizando el método Runitme addShutdownHook(Thread hook).

Adicionalmente los estados Método de referencia:

Si runFinalizersOnExit (booleano) ha sido llamada con un argumento verdadero, recolección de basura y la finalización se llevará a cabo después de que todos los ganchos están terminados o han fracasado. Entonces la VM termina.

Por lo tanto, en teoría la máquina virtual no terminará hasta que el acabado de hilo.

+1

Gracias por esta idea, tiene cierto potencial. Sin embargo, la documentación es bastante escasa cuando la VM realmente se cierra y cuando ocurren los otros eventos. Creo que teniendo en cuenta la documentación poco clara, es mejor que no tenga que cerrar la acción. Tendré esto en cuenta si tengo algún problema con el enfoque del receptor de difusión. –

+1

@TimCapes Tienes razón, el documento no está claro en este asunto. –

Cuestiones relacionadas