Обновление апрель 2013: не делайте этого. Это не было хорошей идеей в 2009 году, когда я впервые ответил на вопрос, и сейчас это действительно не очень хорошая идея. Смотрите этот ответ по hackbod по причинам:
Избегайте перезагрузки активности с асинхронной задачей при изменении ориентации в Android
Добавьте android:configChanges="keyboardHidden|orientation"
в ваш AndroidManifest.xml. Это сообщает системе, с какими изменениями конфигурации вы собираетесь справиться самостоятельно - в этом случае ничего не делая.
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
Подробнее см. В справочнике разработчика configChanges .
Однако ваше приложение может быть прервано в любое время, например, по телефону, поэтому вы действительно должны добавить код, чтобы сохранить состояние приложения, когда оно приостановлено.
Обновление: Начиная с Android 3.2, вам также необходимо добавить «screenSize»:
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
Из руководства разработчика Работа с конфигурацией Измените себя
Внимание! Начиная с Android 3.2 (уровень API 13), «размер экрана»
также меняется, когда устройство переключается между книжным и альбомным
ориентации. Таким образом, если вы хотите предотвратить перезапуск во время выполнения из-за
изменение ориентации при разработке для уровня API 13 или выше (как
объявленные атрибутами minSdkVersion и targetSdkVersion), вы
должен включать значение "screenSize" в дополнение к "ориентации"
значение. То есть вы должны объявить
android:configChanges="orientation|screenSize"
. Однако, если ваш
приложение предназначено для уровня API 12 или ниже, тогда ваша активность всегда
сам обрабатывает это изменение конфигурации (это изменение конфигурации
не перезапускает вашу активность, даже когда работает на Android 3.2 или
вышестоящее устройство).