Использование класса приложения
В зависимости от того, что вы делаете в своей инициализации вы могли бы рассмотреть вопрос о создании нового класса , который расширяет Application
и перемещение кода инициализации в перегруженный onCreate
метод в этом классе.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
onCreate
В классе приложения вызывается только тогда , когда создается все приложение, таким образом , активность перезапустит ориентации или клавиатуры изменения видимости не будет вызывать его.
Это хорошая практика, чтобы разоблачить экземпляр этого класса в качестве одноэлементных и обнажая переменных приложения вы инициализацией с помощью методов получения и установки.
Примечание: Вам необходимо указать имя нового класса приложений в манифесте для того, чтобы быть зарегистрированы и используются:
<application
android:name="com.you.yourapp.MyApplicationClass"
В ответ на изменения в конфигурации [ОБНОВЛЕНИЕ: это является устаревшим , так как API 13; см рекомендуемой альтернативы ]
В качестве дополнительной альтернативы, вы можете иметь приложение прослушивание событий, которые могут вызвать перезапуск - как ориентацию и изменения видимости клавиатуры - и обрабатывать их в вашей деятельности.
Начните с добавления android:configChanges
узла в узел манифеста Activity в
android:configChanges="keyboardHidden|orientation"
или для Android 3.2 (уровень API 13) и новее :
android:configChanges="keyboardHidden|orientation|screenSize"
Затем в операции переопределить onConfigurationChanged
метод и вызвать , setContentView
чтобы заставить макет GUI быть повторно сделано в новой ориентации.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}