Система Android инициирует изменение конфигурации каждый раз при подключении или отключении клавиатуры от устройства. Чтобы обеспечить бесперебойную работу и максимальную производительность на устройствах с большим экраном и съёмной клавиатурой, ваше приложение должно эффективно управлять изменениями конфигурации клавиатуры.
Результаты
Ваше приложение реагирует на подключение или отключение внешней клавиатуры, не воссоздавая запущенную активность.
Запретить восстановление активности при смене клавиатуры
Чтобы предотвратить повторное создание вашей активности при подключении или отключении съемной клавиатуры, добавьте значения, связанные с клавиатурой, в атрибут configChanges
манифеста вашего приложения и добавьте представление в иерархию представлений активности, чтобы ваше приложение могло отслеживать изменения конфигурации.
1. Объявите атрибут configChanges
Обновите элемент <activity>
в манифесте приложения, добавив значения keyboard|keyboardHidden
в список уже управляемых изменений конфигурации:
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Добавьте пустое представление в иерархию представлений.
Объявите новое представление и добавьте код обработчика в метод onConfigurationChanged()
представления:
Котлин
val v = object : View(this) { override fun onConfigurationChanged(newConfig: Configuration?) { super.onConfigurationChanged(newConfig) // Handler code here. } }
Ява
View v = new View(this) { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Handler code here. } };
Ключевые моменты
-
android:configChanges
: атрибут элемента<activity>
манифеста приложения. Информирует систему об изменениях конфигурации, которыми управляет приложение. -
View#onConfigurationChanged()
: Метод, который реагирует на распространение новой конфигурации приложения.
Коллекции, содержащие это руководство
Это руководство является частью тщательно подобранной коллекции кратких руководств, охватывающих более широкие цели разработки Android:

Оптимизировать для больших экранов
Есть вопросы или отзывы
Система Android инициирует изменение конфигурации каждый раз при подключении или отключении клавиатуры от устройства. Чтобы обеспечить бесперебойную работу и максимальную производительность на устройствах с большим экраном и съёмной клавиатурой, ваше приложение должно эффективно управлять изменениями конфигурации клавиатуры.
Результаты
Ваше приложение реагирует на подключение или отключение внешней клавиатуры, не воссоздавая запущенную активность.
Запретить восстановление активности при смене клавиатуры
Чтобы предотвратить повторное создание вашей активности при подключении или отключении съемной клавиатуры, добавьте значения, связанные с клавиатурой, в атрибут configChanges
манифеста вашего приложения и добавьте представление в иерархию представлений активности, чтобы ваше приложение могло отслеживать изменения конфигурации.
1. Объявите атрибут configChanges
Обновите элемент <activity>
в манифесте приложения, добавив значения keyboard|keyboardHidden
в список уже управляемых изменений конфигурации:
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Добавьте пустое представление в иерархию представлений.
Объявите новое представление и добавьте код обработчика в метод onConfigurationChanged()
представления:
Котлин
val v = object : View(this) { override fun onConfigurationChanged(newConfig: Configuration?) { super.onConfigurationChanged(newConfig) // Handler code here. } }
Ява
View v = new View(this) { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Handler code here. } };
Ключевые моменты
-
android:configChanges
: атрибут элемента<activity>
манифеста приложения. Информирует систему об изменениях конфигурации, которыми управляет приложение. -
View#onConfigurationChanged()
: Метод, который реагирует на распространение новой конфигурации приложения.
Коллекции, содержащие это руководство
Это руководство является частью тщательно подобранной коллекции кратких руководств, охватывающих более широкие цели разработки Android:
