Cập nhật tháng 4 năm 2013: Đừng làm điều này. Đó không phải là một ý tưởng tốt trong năm 2009 khi tôi lần đầu tiên trả lời câu hỏi và bây giờ nó thực sự không phải là một ý tưởng tốt. Xem câu trả lời này của hackbod vì lý do:
Tránh tải lại hoạt động với asynctask khi thay đổi định hướng trong Android
Thêm android:configChanges="keyboardHidden|orientation"
vào AndroidManifest.xml của bạn. Điều này cho hệ thống biết những thay đổi cấu hình mà bạn sẽ tự xử lý - trong trường hợp này bằng cách không làm gì cả.
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
Xem Cấu hình tham chiếu dành cho nhà phát triển để biết thêm chi tiết.
Tuy nhiên, ứng dụng của bạn có thể bị gián đoạn bất cứ lúc nào, ví dụ như bằng một cuộc gọi điện thoại, vì vậy bạn thực sự nên thêm mã để lưu trạng thái của ứng dụng khi bị tạm dừng.
Cập nhật: Kể từ Android 3.2, bạn cũng cần thêm "screenSize":
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
Từ hướng dẫn dành cho nhà phát triển Xử lý thay đổi cấu hình
Thận trọng: Bắt đầu với Android 3.2 (API cấp 13), "kích thước màn hình" cũng thay đổi khi thiết bị chuyển giữa hướng dọc và hướng ngang. Do đó, nếu bạn muốn ngăn khởi động lại thời gian chạy do thay đổi hướng khi phát triển API cấp 13 trở lên (như được khai báo bởi các thuộc tính minSdkVersion và targetSdkVersion), bạn phải bao gồm giá trị "screenSize" bên cạnh giá trị "direction". Đó là, bạn phải khai báo
android:configChanges="orientation|screenSize"
. Tuy nhiên, nếu ứng dụng của bạn nhắm mục tiêu API cấp 12 trở xuống, thì hoạt động của bạn luôn tự xử lý thay đổi cấu hình này (thay đổi cấu hình này không khởi động lại hoạt động của bạn, ngay cả khi chạy trên thiết bị Android 3.2 trở lên).