Actualización de abril de 2013: no hagas esto. No fue una buena idea en 2009 cuando respondí la pregunta por primera vez y realmente no es una buena idea ahora. Vea esta respuesta de hackbod por razones:
Evite recargar la actividad con asinctask en el cambio de orientación en android
Agregue android:configChanges="keyboardHidden|orientation"
a su AndroidManifest.xml. Esto le indica al sistema qué cambios de configuración va a manejar usted mismo, en este caso al no hacer nada.
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
Consulte Configuración de referencia de desarrollador para más detalles.
Sin embargo, su aplicación puede ser interrumpida en cualquier momento, por ejemplo, por una llamada telefónica, por lo que realmente debe agregar código para guardar el estado de su aplicación cuando está en pausa.
Actualización: a partir de Android 3.2, también debe agregar "screenSize":
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
De la guía para desarrolladores Manejo de la configuración Cámbiese usted mismo
Precaución: a partir de Android 3.2 (API nivel 13), el "tamaño de la pantalla" también cambia cuando el dispositivo cambia entre orientación vertical y horizontal. Por lo tanto, si desea evitar que se reinicie el tiempo de ejecución debido al cambio de orientación al desarrollar para el nivel API 13 o superior (según lo declarado por los atributos minSdkVersion y targetSdkVersion), debe incluir el valor "screenSize" además del valor de "orientación". Es decir, debes declarar
android:configChanges="orientation|screenSize"
. Sin embargo, si su aplicación apunta al nivel de API 12 o inferior, entonces su actividad siempre maneja este cambio de configuración en sí mismo (este cambio de configuración no reinicia su actividad, incluso cuando se ejecuta en un dispositivo Android 3.2 o superior).