Быстрый фон
По умолчанию, когда в Android происходят определенные изменения конфигурации клавиш (распространенным примером является изменение ориентации), Android полностью перезапускает запущенную активность, чтобы помочь ей приспособиться к таким изменениям.
Когда вы определяете android:configChanges="keyboardHidden|orientation"
в своем AndroidManifest, вы говорите Android: «Пожалуйста, не делайте сброс по умолчанию, когда клавиатура извлечена или телефон повернут; я хочу справиться с этим самостоятельно. Да, я знаю,что я делаю "
Это хорошо?Мы скоро увидим ...
Не беспокойтесь?
Один из плюсов, с которых вы начинаете, заключается в том, что:
не нужно беспокоиться о вашей деятельностибыло повернуто
Во многих случаях люди ошибочно полагают, что, когда у них есть ошибка, которая генерируется изменением ориентации («поворот»), они могут просто исправить ее, введя android:configChanges="keyboardHidden|orientation"
.
Однако android: configChanges = "клавиатура скрытая | ориентация" - это не что иное, как повязкаПо правде говоря, существует много способов изменения конфигурации.Например, если пользователь выбирает новый язык (т. Е. Языковой стандарт изменился), ваша деятельность будет возобновлена так же, как при изменении ориентации.Если вы хотите, вы можете просмотреть список всех различных типов изменений конфигурации .
Редактировать : Более важно, однако, как hackbod указывает в комментариях, ваша активность также будет перезапущена, когда ваше приложение находится в фоновом режиме, и Android решает освободить часть памяти, убив ее.Когда пользователь возвращается к вашему приложению, Android попытается перезапустить действие так же, как и в случае какого-либо другого изменения конфигурации.Если вы не можете справиться с этим - пользователь не будет счастлив ...
Другими словами, использование android:configChanges="keyboardHidden|orientation"
не является решением для ваших "забот".Правильный путь - это кодировать ваши действия так, чтобы они были довольны любым перезапуском Android.Это хорошая практика, которая поможет вам в будущем, поэтому привыкните к ней.
Так, когда я должен использовать это?
Как вы упомянули, есть явное преимущество.Перезапись изменения конфигурации по умолчанию для поворота путем его самостоятельной обработки ускорит процесс.Однако эта скорость имеет цену удобства.
Проще говоря, если вы используете одну и ту же компоновку как для портрета, так и для пейзажа, вы в хорошей форме, выполнив перезапись.Вместо полномасштабной перезагрузки действий, представления будут просто перемещаться, чтобы заполнить оставшееся пространство.
Однако , если по какой-то причине вы используете другую компоновку, когда устройствов ландшафте тот факт, что Android перезагружает вашу активность, хорош тем, что затем он загружает правильный макет.[Если вы используете переопределение в таком Деятельности и хотите во время выполнения сделать магическое изменение макета ... ну, удачи - это далеко не просто]
Краткое резюме
Byво что бы то ни стало, если android:configChanges="keyboardHidden|orientation"
подходит вам, то используйте его.Но ПОЖАЛУЙСТА обязательно проверьте, что происходит, когда что-то меняется, потому что изменение ориентации - не единственный способ полного перезапуска Acctivity.