Korzystanie z klasy aplikacji
W zależności od tego, co robisz podczas inicjalizacji, możesz rozważyć utworzenie nowej klasy rozszerzającej Application
i przeniesienie kodu inicjalizacji na przesłoniętą onCreate
metodę w tej klasie.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
Klasa onCreate
w aplikacji jest wywoływana tylko wtedy, gdy tworzona jest cała aplikacja, więc działanie uruchamia się ponownie po zmianie orientacji lub zmiany widoczności klawiatury nie powodują jej uruchomienia.
Dobrą praktyką jest ujawnianie wystąpienia tej klasy jako singletonu i ujawnianie zmiennych aplikacji, które inicjujesz za pomocą metod pobierających i ustawiających.
UWAGA: Musisz podać nazwę nowej klasy aplikacji w manifeście, aby mogła zostać zarejestrowana i użyta:
<application
android:name="com.you.yourapp.MyApplicationClass"
Reagowanie na zmiany konfiguracji [AKTUALIZACJA: jest to przestarzałe od API 13; zobacz zalecaną alternatywę ]
Jako kolejną alternatywę możesz poprosić aplikację o wykrywanie zdarzeń, które spowodowałyby ponowne uruchomienie - takie jak zmiany orientacji i widoczności klawiatury - i obsługę ich w ramach działania.
Zacznij od dodania android:configChanges
węzła do manifestu Twojej aktywności
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
lub na Androida 3.2 (API poziom 13) i nowsze :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
Następnie w ramach działania zastąp onConfigurationChanged
metodę i wywołanie, setContentView
aby wymusić ponowne wykonanie układu GUI w nowej orientacji.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}