Використання класу додатків
Залежно від того, що ви робите під час ініціалізації, ви можете розглянути можливість створення нового класу, який розширює Application
і переміщує код ініціалізації в переосмислений onCreate
метод у цьому класі.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
Клас onCreate
додатка викликається лише тоді, коли створено всю програму, тому активність перезапуститься при орієнтації або зміни видимості клавіатури не запустить її.
Добре розкривати екземпляр цього класу як сингл та викрити змінні програми, які ви ініціалізуєте, використовуючи getters та setters.
ПРИМІТКА. Вам потрібно буде вказати ім'я вашого нового класу додатків у маніфесті для його реєстрації та використання:
<application
android:name="com.you.yourapp.MyApplicationClass"
Реагування на зміни конфігурації [ОНОВЛЕННЯ: це застаріло з часу API 13; див. рекомендовану альтернативу ]
Як додаткова альтернатива, ви можете змусити програму прослуховувати події, які спричинить перезапуск - наприклад, орієнтацію та видимість клавіатури - та обробляти їх у межах своєї діяльності.
Почніть з додавання android:configChanges
вузла до вузла маніфесту вашої діяльності
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
або для Android 3.2 (рівень API 13) та новіших версій :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
Тоді в межах Діяльності замініть onConfigurationChanged
метод і заклик setContentView
змусити повторно виконати макет GUI у новій орієнтації.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}