2011-07-16 15 views
7

Właśnie stworzyłem aplikację wygaszacza ekranu i znalazłem dziwne zachowanie w jej cyklu życia. Moje przepływu pracy jest tak:Dziwne zachowanie się cyklu życia w mojej aplikacji wygaszacza ekranu

  1. rozpocząć mój RegisterService, gdzie zadzwonić registerReceiver sposób zarejestrować BroadcastReceiver, który może odbierać ACTION_SCREEN_OFF.

2. W metodzie 2 tej BroadcastReceiver, uruchamiam działanie jako wygaszacz ekranu.

3. W ćwiczeniu piszę instrukcję Log.i(), aby śledzić jej działanie.

Moje pytanie brzmi:

Gdy czasy się ekran, lub po naciśnięciu przycisku zasilania, ekran wyłączy się, a system wyśle ​​wiadomość ACTION_SCREEN_OFF. Tak jak się spodziewam, mój odbiornik uruchamia działanie wygaszacza ekranu. Jednak ta funkcja dzwoni onCreate(), onResume(), onPause(), onResume() sekwencyjnie zgodnie z wynikiem w logcat.

Wydaje się jakby jakaś aktywność pochodzi z przodu mojego ekranu i kończy się natychmiast, więc mój wygaszacz ekranu nazywa onPause() a następnie onResume(). enter image description here

Każdy pomysł? Ten problem utrudnia programowanie, proszę o pomoc. Dzięki!

+1

jaki problem to powoduje? – njzk2

Odpowiedz

0

mogę polecić ci coś bardzo proste, że może pracować dla Ciebie, jeśli nie chcesz zachowanie pauzy dlaczego nie spróbujesz nadpisać metodę onPause() i po prostu robić nic: P Nie nazywaj super.onPause() i to zakończy jego zachowanie.

Inne rzeczy, które mogą ci pomóc, zadeklaruj zmienną statyczną, dodaj 1 w metodzie "onResume()" i wróć do "0" po wywołaniu "onStop()". teraz tylko oceń, kiedy wywoływana jest funkcja "onResume()", a jeśli zmienna ma wartość "0", to po raz pierwszy wszystko inne nic nie robi.

Mam nadzieję, że to pomoże, ponieważ nie ma zbyt wielu informacji na temat twojego pytania.

0

Dobrze na podstawie krótkiego studium kodu źródłowego PowerManagerService.java, gdy nadszedł czas, aby wyłączyć ekran, system inicjuje animację (patrz wiersz 2183 dla źródła klasy), aby to zrobić. Oznacza to, że Twoja aktywność zostanie wstrzymana, a następnie wznowiona po zakończeniu animacji.

Nie mogę być w 100% pewny, ponieważ nie przetestowałem tego w moim środowisku, ale jest to jedyne logiczne wytłumaczenie dla twojej sytuacji.

Mam nadzieję, że to pomoże ...

Powiązane problemy