2012-03-14 10 views
7

Czy jest możliwe przechwycenie zdarzenia zamknięcia telefonu lub użycie innego mechanizmu hakerskiego? Mam zawsze działającą usługę, która jest częścią aplikacji nierynkowej, która zbiera dane analityczne. Chciałbym przekazać analitykom koniec sesji i raport, a następnie wznowić zamknięcie systemu.Zdarzenia wyłączające w systemie Android

Próbowałem wyzwolić zdarzenie z części usług onDestroy lub onShutdown, ale telefon wyłączy się, nie dając mu czasu na zgłoszenie.

Praca nad tym poprzez krótkie sesje w oparciu o ekrany aktywności dostarcza niesensorycznych informacji analitycznych, których chciałbym uniknąć.

Odpowiedz

8

Zbuduj odbiornik telewizyjny przy założeniu zamiaru ACTION_SHUTDOWN.

W metodzie onReceive() możesz wykonać to, co próbujesz wykonać.

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

+1

Mam to już wszystko i przeszedł wszystkie testy. –

+1

@TimCapes Fantastyczny do słuchania! Jest tak wiele intencji, że Android rzuca. Aby pomóc w gromadzeniu danych, możesz złapać zamiar BOOT_COMPLETE, aby uruchomić aplikację po włączeniu telefonu;) – jjNford

+0

Już to robisz, aby uruchomić usługę po restarcie, ale dziękuję za wzmiankę o tym. –

3

Można spróbować rejestracji Shutwdown hak przy użyciu metody Runitme addShutdownHook(Thread hook).

Aditionally te stany metoda uzupełniająca:

Jeśli runFinalizersOnExit (logiczna) została wywołana z prawdziwego argumentu zbieranie śmieci i finalizacja nastąpi po wszystkich haków są albo gotowych lub zawiodły. Następnie maszyna wirtualna zostaje zakończona.

Tak więc, teoretycznie VM nie zakończy się, dopóki twój wątek nie zostanie zakończony.

+1

Dzięki za ten pomysł, ma jakiś potencjał. Jednak dokumentacja jest dość rzadka, gdy maszyna wirtualna faktycznie się wyłącza, a kiedy inne zdarzenia się zdarzają. Wydaje mi się, że biorąc pod uwagę niejasną dokumentację, lepiej będzie, jeśli zatrzymam akcję. Będę o tym pamiętać, jeśli napotkam jakiekolwiek problemy z podejściem odbiornika telewizyjnego. –

+1

@TimCapes Masz rację, dokument jest dość niejasny w tej sprawie. –