2011-01-12 31 views
2

Ich zeige einen Begrüßungsbildschirm für etwa 3 Sekunden, bevor meine erste Aktivität aufgerufen wird. Der Begrüßungsbildschirm ist auch eine Aktivität, nach 3 Sekunden beendet er() und startet FirstActivity. Auch ich habe Bildschirm Drehung der Splash-Aktivität auf Hochformat eingestellt.Android Splash Screen Bug

Jetzt, wenn ich meine App testen, funktioniert es gut, aber während dieser 3 Sekunden Splash-Bildschirm, wenn ich Bildschirmrotation ändern, wird meine erste Aktivität zweimal aufgerufen.

Gibt es eine Möglichkeit/Code-Schnipsel, die mir helfen könnte, meine erste Aktivität nur einmal zu öffnen, trotz Bildschirmdrehungen, wenn Splash Screen Activity im Vordergrund ist. ? Danke für das Helfen :)

Antwort

5

Es ist nicht wirklich ein Fehler. Wenn Sie die Ausrichtung ändern, wird die aktuelle Aktivität erneut erstellt. Daher wird Ihre SplashActivity zweimal aufgerufen.

Ich schrieb einen Blog-Post über die Handhabung von Orientierungsänderungen manuell; http://c0deattack.wordpress.com/2010/12/25/dealing-with-screen-orientation-changes-manually/

+0

Ich weiß, wenn Sie die Rotation ändern, wird die aktuelle Aktivität wieder erstellt, deshalb, um zu verhindern, dass ich Android ScreenRotation in meinem hinzugefügt habe Manifest-Datei. So sollte es jetzt zwei mal öffnen. –

+0

"Ich habe Android ScreenRotation in meiner Manifest-Datei hinzugefügt" .... Was bedeutet das? – C0deAttack

+0

Danke für die Hilfe, anscheinend ist es ein Bug im Emulator. Als ich auf der getestet Echtes Gerät funktioniert gut.Alles, was ich hinzugefügt habe, war Android: screenOrientation = "Porträt" auf meiner Splash Screen Activity, um es aus der Rotation zu stoppen.Es funktioniert auf dem Gerät.Der Bildschirm dreht sich nicht auf dem Emulator als gut, aber es ruft onCreate wieder zwei times :(Buggy Emulator ... –

3

Ich hatte auch diesen "Käfer". Hier wird beschrieben, wie ich es gelöst habe: Activity reloads when orientation changes in Android

+0

Nö es ist das gleiche tun , während der Begrüßungsbildschirm angezeigt wird, wenn Sie das Gerät drehen, wird FirstAppActivity zweimal aufgerufen. –

+0

Danke für die Hilfe, anscheinend ist es ein Bug im Emulator. Wenn ich auf dem echten Gerät getestet habe, funktioniert es gut. Alles, was ich hinzugefügt habe, war android: screenOrientation = "portrait" auf meiner Splash Screen Activity, um es aus der Rotation zu stoppen. Es funktioniert auf dem Gerät. Der Bildschirm dreht sich nicht auf dem Emulator, aber es ruft onCreate wieder zweimal auf :(Buggy Emulator ... –

1

Ich denke, Ihr Thread von Splash-Bildschirm wird noch einmal anrufen.

so einfach ein Flag für 2 überprüfen Bildschirm gedreht oder nicht. Wenn ja, dann rufe diesen Thread nicht erneut auf. z.

boolean urScreenRotationFlag = false;

if (! UrScreenRotationFlag) { ur splash Thread Code

}

und bei einer Drehung des Bildschirms dieses Flag 2 wahr gesetzt.

Danke.

+0

Danke für die Hilfe, anscheinend ist es ein Bug im Emulator. Wenn ich auf dem echten Gerät getestet habe, funktioniert es gut. Alles, was ich hinzugefügt habe, war android: screenOrientation = "portrait" auf meiner Splash Screen Activity, um es aus der Rotation zu stoppen. Es funktioniert auf dem Gerät. Der Bildschirm dreht sich nicht auf dem Emulator, aber es ruft onCreate wieder zweimal auf :(Buggy Emulator ... –

0

Sie lösen können es durch dieses xml-Attribut auf die Splash Aktivität im Mainfest

android:configChanges="orientation|keyboardHidden|screenSize"

es verhindert, dass Ihre Aktivität von neu erstellen hinzufügen, wenn Ausrichtung

aufgetreten