Оновлення квітня 2013 року: Не робіть цього. У 2009 році я не була гарною ідеєю, коли я вперше відповіла на це питання, і тепер це не дуже гарна ідея. Дивіться цю відповідь від hackbod з причин:
Уникайте перезавантажувальної діяльності за допомогою асинтакта на зміну орієнтації на андроїд
Додайте 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 або новішої версії).