2012-03-30 14 views
14

Po naciśnięciu przycisku zasilania, ekran wyłącza (zupełnie ciemno), system niszczy moją aktywność, a następnie odtwarza go:aktywny Lifecycle X Przycisk zasilania X Blokada ekranu

03-28 22:48:00.934: V/[BB](5809): [GameControl] onPause 
03-28 22:48:01.444: V/[BB](5809): [GameControl] onDestroy 
03-28 22:48:01.724: V/[BB](5809): [GameControl] onCreate 
03-28 22:48:03.016: V/[BB](5809): [GameControl] onResume 
03-28 22:48:03.016: V/[BB](5809): [GameControl] onPause 

Jest to spowodowane tym, że mojej działalności ma ustaloną orientację (krajobraz), a ekran blokady to portret.

Przetestowałem tę teorię, ustawiając ustaloną orientację pionową, a problem nie występuje. Sprawdziłem również wartości getResources(). GetConfiguration():

{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=36} 
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=1 layout=17 uiMode=17 seq=37} 
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=38} 

Jak można tego uniknąć? Nie chcę, aby moja aktywność została zniszczona przez ekran blokady!

+0

Nie znam konkretnej odpowiedzi, ale należy zawsze zakładać, że gdy aktywność nie będzie już aktywna, może zostać zabita przez system bez ostrzeżenia. – Simon

+0

@thiagolr proszę powiedz mi dokładnie, co się stało, gdy naciśniesz przycisk zasilania? Czy ekran jest całkowicie ciemny? czy widzisz wtedy swoją aktywność? – minhaz

+0

Tak, ekran wyłączył się (zupełnie ciemno), a powyższe logi się wydarzyły (gdy ekran jest wyłączony). – thiagolr

Odpowiedz

10

Rozwiązaniem jest dodanie

android:configChanges="orientation|keyboardHidden|screenSize" 

na elemencie <activity> w AndroidManifest.xml.

+2

Jeśli używasz interfejsu API o poziomie 13 lub wyższym, potrzebujesz Androida: configChanges = "orientation | screenSize". Zauważ, że jeśli twój minsdk ma mniej niż 13, nie rozpoznaje "screenSize", więc jedyną opcją jest zmniejszenie docelowego SDK do tego samego co min. Jest to denerwujące, ponieważ zmusza twoją aplikację do posiadania paska menu oprogramowania na krawędzi ekranu. –

Powiązane problemy