Verwenden der Anwendungsklasse
Abhängig davon, was Sie in Ihrer Initialisierung tun, können Sie eine neue Klasse erstellen, die ApplicationIhren Initialisierungscode erweitert und in eine überschriebene onCreateMethode innerhalb dieser Klasse verschiebt.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
Die onCreatein der Anwendungsklasse wird nur aufgerufen, wenn die gesamte Anwendung erstellt wurde, sodass die Aktivität bei Ausrichtung neu gestartet wird oder Änderungen der Tastatursichtbarkeit sie nicht auslösen.
Es wird empfohlen, die Instanz dieser Klasse als Singleton verfügbar zu machen und die Anwendungsvariablen, die Sie initialisieren, mithilfe von Gettern und Setzern verfügbar zu machen.
HINWEIS: Sie müssen den Namen Ihrer neuen Anwendungsklasse im Manifest angeben, damit sie registriert und verwendet werden kann:
<application
android:name="com.you.yourapp.MyApplicationClass"
Reagieren auf Konfigurationsänderungen [UPDATE: Dies ist seit API 13 veraltet. siehe die empfohlene Alternative ]
Als weitere Alternative können Sie Ihre Anwendung auf Ereignisse warten lassen, die einen Neustart verursachen würden - wie z. B. Änderungen der Ausrichtung und der Sichtbarkeit der Tastatur - und diese in Ihrer Aktivität behandeln.
Fügen Sie zunächst den android:configChangesKnoten zum Manifestknoten Ihrer Aktivität hinzu
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
oder für Android 3.2 (API Level 13) und neuer :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
Überschreiben Sie dann innerhalb der Aktivität die onConfigurationChangedMethode und rufen Sie setContentViewauf, um zu erzwingen, dass das GUI-Layout in der neuen Ausrichtung erneut ausgeführt wird.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}