2010-12-15 16 views
5

Gram w stanach przez cały dzień próbując dowiedzieć się, dlaczego, po naciśnięciu przycisku zasilania, aby wywołać ekran blokady, moja aplikacja traci fokus i dzwoni do niego onStop() (tak jak powinno), ale potem wywołuje on onStart() ponownie, zanim ekran się wyłączy. Powoduje to problem, ponieważ niektóre dźwięki w mojej aplikacji (i prawdopodobnie inne rzeczy) zaczynają grać ponownie, gdy ekran blokady jest aktywny.Android, aplikacja uruchomiona ponownie po uruchomieniu ekranu blokady

Jak mogę się upewnić, że jest poprawnie umieszczony w tle i zatrzymany, gdy aktywny jest ekran blokady?

Odpowiedz

7

Niedawno stanąłem w obliczu tego problemu. W AndroidManifest.xml, upewnij się, że masz to:

android: configChanges = "keyboardHidden | orientację"

Zapobiegnie to aktywność przed wznowiona na uruchomieniowych 'zmian konfiguracyjnych'. See handling the configuration change yourself. W ten sposób aplikacja będzie nasłuchiwać zdarzeń, które spowodują ponowne uruchomienie - jak zmiana orientacji i widoczności klawiatury - i obsłużyć je w ramach aktywności.

Jest też bardzo podobne pytanie na SO tutaj: Activity restart on rotation Android

+1

Jesteś ratownik dzięki! Widziałem tę opcję dziś rano, kiedy patrzyłem na moje okno mające problemy z utratą orientacji i zignorowałem je. Dzięki jeszcze raz! – Hamid

+1

Cytując z dołączonej dokumentacji: "Ta technika powinna być traktowana jako ostateczność i nie jest zalecana w przypadku większości aplikacji." – CommonsWare

+0

Charakter mojej aplikacji oznacza, że ​​powinna ona zawsze być w krajobrazie, niezależnie od innych czynników i bez wyjątku. W związku z tym uważam, że jest to akceptowalne rozwiązanie i faktycznie pomaga mi rozwiązać problem wtórny, blokując moją aplikację w krajobrazie nawet między przełącznikami aktywności. – Hamid

Powiązane problemy