2012-03-30 4 views
14

Wenn ich die Power-Taste drücken, schaltet sich der Bildschirm (ganz dunkel) ab, das System der eigenen Aktivität zerstört und dann neu erstellt:Activity Lifecycle X Power Button X Lock Screen

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 

Dies, weil meine Tätigkeit verursacht wird, hat eine feste Ausrichtung (Querformat) und der Sperrbildschirm ist Porträt.

Ich habe diese Theorie getestet, indem ich eine feste Hochformat-Ausrichtung eingestellt habe und das Problem nicht auftritt. Ich überprüfte auch die getResources(). GetConfiguration() Werte:

{ 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} 

Wie kann das vermeiden? Ich möchte nicht, dass meine Aktivität vom Sperrbildschirm zerstört wird!

+0

Ich kenne die spezifische Antwort nicht, aber Sie sollten immer davon ausgehen, dass das System ohne Vorwarnung vom System möglicherweise getötet wird, wenn Ihre Aktivität nicht mehr aktiv ist. – Simon

+0

@thiagolr bitte sagen Sie mir genau, was passiert ist, wenn Sie den Power-Button gedrückt haben? Dein Bildschirm wird komplett dunkel? Kannst du deine Aktivität dann sehen? – minhaz

+0

Ja, der Bildschirm wurde ausgeschaltet (vollständig dunkel) und diese Protokolle sind passiert (während der Bildschirm ausgeschaltet ist). – thiagolr

Antwort

10

Die Lösung ist

android:configChanges="orientation|keyboardHidden|screenSize" 

auf Ihrem <activity> Element in Ihrem AndroidManifest.xml hinzuzufügen.

+2

Wenn Sie auf API Level 13 oder höher abzielen, benötigen Sie android: configChanges = "orientation | screenSize". Beachten Sie, dass wenn Ihr minsdk weniger als 13 ist, es die "screenSize" nicht erkennen wird. Daher ist die einzige Option, das SDK auf das gleiche Ziel wie das min zu reduzieren. Dies ist ärgerlich, da Ihre App eine Softwaremenüleiste am Bildschirmrand benötigt. –