Существует два способа обработки изменений времени выполнения.
1. Retain an object during a configuration change
2. Handle the configuration change yourself
1. Сохранить объект во время изменения конфигурации
Если сохранить объект при изменении конфигурации Android перезапускает идущую активность и onDestroy()
называется, а затем onCreate()
и оттуда всех остальных: onStart()
, onResume()
, onStop()
, onPause()
и т.д.
, но если вы хотите обрабатывать конфигурацию самостоятельно приходит второй путь:
2. Ручка изменения конфигурации самостоятельно
Вот если ваше приложение не нужно обновлять ресурсы в течение определенного изменения конфигурации и у вас есть ограничение производительности, что требует от вас, чтобы избежать перезагрузки активности, то вы можете заявить, что ваша активность сама обрабатывает изменение конфигурации, что препятствует перезагрузке вашей системы.
Это происходит, когда вы включаете в свой манифест android:configChanges атрибут со значением, представляющим конфигурацию, которую вы хотите обработать.
Например:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Теперь, когда одна из этих конфигураций меняются, MyActivity не рестарт. Вместо этого MyActivity получает вызов onConfigurationChanged(). Этот метод передается конфигурация объекта, который определяет новую конфигурации устройства
Например, следующий onConfigurationChanged() реализации проверяет ориентацию текущего устройства:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
Для получения дополнительной информации Вы можете продолжить в Android Developers