Verwenden der Anwendungsklasse
Abhängig davon, was Sie in Ihrer Initialisierung tun, können Sie eine neue Klasse erstellen, die Application
Ihren Initialisierungscode erweitert und in eine überschriebene onCreate
Methode innerhalb dieser Klasse verschiebt.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
Die onCreate
in 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:configChanges
Knoten 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 onConfigurationChanged
Methode und rufen Sie setContentView
auf, 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);
}