我的活動包含一個ListView
,並且此listview
充滿來自網絡服務的數據onCreate()
函數(使用AsyncTask
)。當屏幕方向改變時,活動重新創建,我不想那樣。如何在更改方向後保存保存如何不在android中orintation之後重新創建活動?
回答
您需要將其添加到AndroidManifest.xml中的Activity中。只需添加「方向」將不適用於所有設備。
android:configChanges="orientation|screenSize"
在您的AndroidManifest.xml中爲該活動設置android:configChanges="orientation"
。
雖然其他答案使用android:configChanges
建議,我會說這是真的只是一個不得已的選擇,因爲它意味着不同方向的資源將不會自動加載。
相反,您應該使用您的活動的onSaveInstanceState
或onRetainNonConfigurationInstance
功能。 (如果您使用的片段,你應該使用setRetainInstance
而不是選擇後者的。)
另一種選擇是使用ContentProvider
來存儲您下載使用AsyncTask
到一個數據庫中的數據,因此不需要重新無論如何,下載。
您應該閱讀this瞭解更多信息。
我不同意。他正在使用異步任務。這意味着他絕對不需要銷燬它,因爲AsyncTask不會被銷燬並繼續運行,可能會導致崩潰和內存泄漏。當然,我不同意並認爲savedState總體上是一種醜陋的黑客攻擊,但如果使用AsyncTasks或線程,則必須使用configChanges。 – 2013-05-09 21:30:06
那麼,我認爲他應該在保留的'Fragment'或'Service'中使用AsyncTask。使用'android:configChanges'是我眼中的黑客,因爲它阻止了任何方向特定的資源被加載,雖然在這種情況下可能不是問題,但在進行主從細節活動時它可能是一個真正的問題。 – 2013-05-09 21:37:58
創建一個服務,除非其意圖加載跨越活動的數據,否則在這裏絕對是錯誤的。你正在創造一個完全不需要的上下文和複雜性。把它放在片段中並不能解決任何問題,因爲方向的改變也會破壞片段,並假定它在XML中(這是正確的方式)。這裏的問題是Google做出了一個可怕的設計決定,包括旋轉(和鍵盤滑出等)的全部破壞,我們需要解決它。你儘可能以最簡單的方式做到這一點 - 關閉它。 – 2013-05-09 22:46:55
- 1. 在Android中重新創建活動
- 2. 重新啓動活動,而不是重新創建[Android的]
- 3. Android。如何開始活動而不創建新活動?
- 4. Android,PageView在重新創建活動後無法顯示片段
- 5. 防止android在崩潰後重新創建活動堆棧
- 6. Android回去活動或重新創建
- 7. 每次重新創建Android活動
- 8. android-如何在重新創建活動時保存dada
- 9. 活動被破壞,然後重新創建之前接收onActivityResult
- 10. Android - 在Eclipse中創建新活動
- 11. 活動重新創建後再次顯示Android對話框
- 12. 當從後端堆棧彈出時重新創建Android活動
- 13. Android服務被破壞活動後重新創建
- 14. 如何在動畫之後重新開始活動?
- 15. Android - 菜單項在重新創建主要活動後不顯示
- 16. 如何保存和重新創建Android活動
- 17. Android:導航到父活動重新創建父活動
- 18. 活動在低內存中死亡後重新創建片段
- 19. 在Android中點擊通知時避免重新創建活動
- 20. Android setIntent()不會在重新創建的活動中保留新值
- 21. 如何在Android中創建可重用的活動?
- 22. 我如何獲得重新啓動但不能重新創建的活動?
- 23. 如何在創建對話框後更新活動中的textview
- 24. 在其他活動中重新創建活動?
- 25. 如何在重新創建活動後檢索最後一個片段?
- 26. 在哪裏重新創建活動?
- 27. 使用webview重新創建活動後JavaScript不運行
- 28. Android活動需要恢復或顯示不要重新創建
- 29. Android創建新進程而不是返回到後臺活動
- 30. 如何刷新創建活動?如何刷新活動
在蜂窩和上面的設備上,您需要將'screenSize'添加到'configChanges'。 – 2013-05-09 20:44:25