2012-03-14 15 views
7

È possibile intercettare un evento di spegnimento del telefono o forse utilizzare un altro hack attorno a questo? Dispongo di un servizio sempre attivo che fa parte di un'applicazione non di mercato che raccoglie alcuni dati di analisi. Vorrei dire all'analisi di terminare la sessione e segnalare, quindi riprendere l'arresto del sistema.Eventi di arresto in Android

Ho tentato di attivare l'evento dalle parti onDestroy o onShutdown dei servizi, ma il telefono si spegnerà senza dargli il tempo di segnalare.

Lavorare attorno a questo facendo molte sessioni brevi basate sulle schermate dell'attività produce informazioni analitiche non sensoriali che vorrei evitare.

risposta

8

Costruisce un ricevitore di trasmissione in corrispondenza dell'intenzione ACTION_SHUTDOWN.

Nel metodo onReceive() è possibile eseguire ciò che si sta tentando di fare.

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

+1

Ho questo e ha superato tutti i test. –

+1

@TimCapes Fantastico da ascoltare! Ci sono così tanti intenti che Android lancia. Per aiutare con la raccolta dei dati, puoi catturare l'intento di azione BOOT_COMPLETE per avviare l'applicazione quando il telefono è acceso;) – jjNford

+0

Lo stai già facendo per avviare il servizio al riavvio, ma grazie per averlo menzionato. –

3

Si potrebbe provare a registrare un gancio Shutwdown utilizzando il metodo Runitme addShutdownHook(Thread hook).

Aditionally gli stati di riferimento di metodo:

Se runFinalizersOnExit (booleano) è stato chiamato con un vero e proprio argomento, raccolta dei rifiuti e la messa a punto avrà luogo dopo tutti i ganci sono sia finito o sono falliti. Quindi la macchina virtuale termina.

Quindi, teoricamente VM non terminerà fino a quando il traguardo thread.

+1

Grazie per questa idea, ha qualche potenziale. Tuttavia, la documentazione è piuttosto scarsa quando la VM viene effettivamente arrestata e quando si verificano gli altri eventi. Penso che data la documentazione poco chiara, sto meglio prendendo l'arresto dell'azione. Terrò questo a mente se dovessi riscontrare problemi con l'approccio del destinatario della trasmissione. –

+1

@TimCapes Hai ragione, il documento non è abbastanza chiaro su questo argomento. –

Problemi correlati