我正在使用ActionBar中的選項卡使用UI。在標籤之間切換時,我目前在我的Activity中管理Tab點擊事件,並使用FragmentManager根據需要調用attach和detach。分離後保存碎片UI狀態
每次連接Fragment時,我都會經歷完整的生命週期並創建一個新視圖並重新載入所有數據。我在onSaveInstanceState和onActivityCreated中使用給定的Bundle來更新gui元素(主要是列表的滾動位置)。
這工作正常,但有很多開銷。在我的情況下,列表可能有300個左右的記錄,並且在切換標籤時會有明顯的延遲。
爲了加快速度,我現在將onCreateView中的根視圖保存爲一個類變量。然後,當onCreateView被再次調用作爲附加片段的結果我測試爲我的根視圖非空值,並返回它而不是重新膨脹視圖。這個保存的視圖仍然有適當的數據集,我也繞過了在這種情況下加載數據。當然,如果Fragment在後臺被OS破壞,我仍然需要完全重建視圖和數據。
我的問題是如果這是一個有效的方法?除非有內存問題需要擔心,否則我不認爲它有什麼不利之處。
謝謝你的迴應。我已經看到其他人建議隱藏一個片段,而不是調用detach,但會認爲這會產生與我的解決方案相同的內存開銷。 – 2012-04-15 17:48:11
我需要確定它們的實際片段的外觀和感覺。一旦所有樣式都完成了,我會查看視圖所使用的內存,並根據該內存做出決定。對於給定的API級別,是否有可接受的內存使用準則? – 2012-04-15 17:54:27
這將取決於設備硬件,而不是設備操作系統版本。如果您以前沒有閱讀過[this](http://developer.android.com/resources/articles/avoiding-memory-leaks.html)文章。 – 2012-04-15 18:07:31