Використання класу додатків
Залежно від того, що ви робите під час ініціалізації, ви можете розглянути можливість створення нового класу, який розширює 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);
}