Странно, что Google на самом деле не говорит больше о причинах этого, но на самом деле есть три основные причины, по которым я могу придумать, чтобы избежать использования этого подхода:
- По моему опыту, некоторые типы представлений (особенно WebViews и MapViews на Android 2.1 или ниже) могут вести себя довольно странно после изменения ориентации, если они не были воссозданы (например, кнопки масштабирования неправильно расположены).
- Он не позволяет использовать ориентированные макеты (см., Например, альбомное представление нового приложения Market).
- Это может помешать вам обнаружить в приложении ошибочное поведение, связанное с другими типами причин, по которым ваша активность может быть уничтожена и воссоздана (например, нехватка памяти или другие обычные убийства в фоновом режиме). То есть, если ваша деятельность может корректно обрабатывать перезапуск из-за поворота, она, вероятно, может обрабатывать перезапуск из-за фонового уничтожения. Однако если вы пропустите обработку ротации, вы можете не столкнуться с перезапуском из-за фонового уничтожения при обычном тестировании, пока пользователь с более старым телефоном с малой памятью не напишет сообщение об ошибке.
Последняя причина - большая; особенно в старых телефонах с низкой оперативной памятью и в предположительно более агрессивных режимах автоматического убийства в Gingerbread, ваши действия должны знать, как быстро воссоздать их после разрушения, сохранив их состояние, независимо от ориентации. И как только ваша деятельность сможет справиться с этими видами разрушения / отдыха, вы, вероятно, в любом случае будете готовы к убийствам из-за смены ротации. Вы можете набрать некоторую скорость, поглотив событие поворота (поскольку вам не нужно возвращаться к раздуванию макета и тому подобному), но на этом все, на данный момент.
Если вы решите проглотить ротацию, я настоятельно рекомендую всегда использовать эмулятор или устройство с установленным параметром Development.apk «Немедленно уничтожить действия», а затем проверять, переключаются ли приложения или выполняется обратный ход. ваш стек задач по-прежнему работает правильно.
По моему опыту, поглощение ротаций может стать хорошим выбором для улучшения взаимодействия с пользователем, особенно для действий со сложными макетами, для воссоздания которых может потребоваться несколько минут, но вам действительно необходимо тщательно и эффективно проверить, что ваша деятельность все еще будет работать даже без поворота-игнорирования.