Обновление апрель 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» в дополнение к значению «direction». То есть ты должен объявить
android:configChanges="orientation|screenSize"
. Однако, если ваше приложение предназначено для уровня API 12 или ниже, то ваша активность всегда сама обрабатывает это изменение конфигурации (это изменение конфигурации не перезапускает вашу активность, даже при работе на устройстве Android 3.2 или выше).