好吧,我創建了一個Fragment
一些UI(夫婦文本框和東西),我用setRetainInstance
因爲進出口運行的AsyncTask
來查詢服務器(要求只能用一次發送),我需要的結果爲AsyncTask
。所以我的問題是: 用UI保留整個片段是錯誤的嗎?我看到一些例子,其中人們使用額外的Fragment
來使用setRetainInstance
但是..有沒有什麼錯誤不使用額外的? 如果使用setRetainInstance
時出現問題,爲什麼?在文檔中找不到關於此的任何信息。setRetainInstance片段與UI的Android
7
A
回答
-1
如果你鎖定你的方向,那麼你應該沒問題。否則,如果您保留與特定活動實例關聯的小部件,則最終可能會發生內存泄漏。
2
即使您使用setRetainInstance(true)
,當您旋轉時(您將調用onDestroyView
,然後onCreateView
),您的片段仍然會重新創建它的視圖。只要您不保留對過去onDestroyView
的視圖的引用,就不會有任何舊活動的泄漏。最好的方法是明確地清空onDestroyView
中的引用,但onCreateView
中的代碼通常會覆蓋這些引用。
網上有很多例子(包括一些官方的例子),其中人們使用單獨的片段(無視圖)來保留數據。假設我上面說的是正確的,那麼這是不必要的(爲了防止泄漏)。在很多情況下,如果您使用一個單獨的片段,而這個片段的責任僅僅是處理數據而不擔心UI,那麼您可能會得到更簡潔的代碼/架構。
您可以通過using Eclipse MAT旋轉後檢查活動環境是否正在泄漏。
相關問題
- 1. Android片段和setRetainInstance(true)
- 2. 片段setRetainInstance不工作(支持Android LIB)
- 3. 片段中onSaveInstanceState和setRetainInstance的使用
- 4. Android片段setRetainInstance(true)不起作用(Android支持庫)
- 5. Android非UI片段
- 6. 片段setRetainInstance(true)不起作用
- 7. setretaininstance(真)使用無頭片段
- 8. Android片段setRetainInstance(true)在後臺不工作
- 9. Android非UI片段使用
- 10. setRetainInstance(true),但UI不出現
- 11. Android片段backstack(更改最新更改相同片段的UI)
- 12. Android:活動與片段(片段頂部)
- 13. tabview與Android中的片段
- 14. Android的Socket.IO與片段
- 15. Android的Facebook SDK與片段
- 16. Android的片段與GLSurfaceView
- 17. 的Android RecyclerView與片段
- 18. setRetainInstance(true)不保留片段的成員變量
- 19. 在方向更改期間使用setRetainInstance(true)的片段
- 20. 爲什麼片段的setRetainInstance(true)方法不起作用?
- 21. Android UI如何疊加片段視圖?
- 22. Android Smack與MVP片段
- 23. android使用片段與
- 24. Android片段onResume與onCreateView
- 25. 使用viewPager與片段android?
- 26. 驗證UI:片段
- 27. Android的方向更改與片段處理的片段活動
- 28. 在地圖碎片初始位置.setRetainInstance
- 29. 的Android YouTubePlayer與片段 內的玩家
- 30. 片段android片段調用
但不是與片段相關的小部件?也許我錯過了Fragments的工作原理。 – Raykud
即使方向鎖定,這可能會有問題。 Android爲任何配置更改重新創建視圖。而配置更改可以是顯示旋轉(通常情況下),語言更改,鍵盤連接/分離等。照顧屏幕旋轉並不能解決整個問題。 – sstn