2015-09-30 150 views
0

對於我目前的項目,我將使用這個SlidingUpPanel libraryAndroid - 創建應用程序級片段

向上滑動面板將託管一個包含應用程序/全局級別信息的片段。這個面板將在我的應用程序的每一個活動。這與Google Play音樂的工作方式非常相似。

我的問題是,在整個應用程序中堅持滑動面板片段的最佳方法是什麼?我看到我有兩種方式來解決這個問題...

  1. 將應用程序類中的碎片存儲起來,並在每個活動開始時加載它(不知何故,甚至不知道這是否有可能)。
  2. 存儲將在應用程序類&中顯示的數據,加載片段的新實例,傳入持久數據。

這兩種方式中哪一種最好?是1.甚至可能嗎?有沒有這些方法的編碼地雷?

回答

1

在整個應用程序生命週期中存儲片段以保持持久性將是相當非正統的,主要是因爲片段類應該能夠遵循它的正常生命週期事件(在這種情況下,主要onPause和onResume)而不是在應用程序的某處類。

當您每次顯示片段時,存儲數據和加載它是絕對常見的做法。如果您想啓用某種緩存或單例模式來訪問數據,它應該很可能與片段可以訪問的另一個對象有關,但不是片段中的成員。

有一個good video from google about leaking views,它簡單地談到了做一些類似於你在第1號子彈中提出的問題的缺陷。

+0

這些都很好,謝謝你的建議。我考慮得越多,爲片段存儲某種「會話」結構似乎是最好的方法。 –

+0

如果您需要一種非常快速的方式來檢索沒有數據庫的片段中的數據,則可以使用SharedPreferences用於大多數「會話」內容。再次強調,我強烈建議您不要緩存片段本身,每次需要片段時都要加載狀態。 – jyanks

+0

這就是我要做的,似乎是正確做到這一點的唯一方法。感謝您的建議。 –

1

我覺得你的應用程序的結構看起來像它應該是一個單一的活動,其中那個酒吧是它,然後主要內容是你更換併爲了上使用addToBackStack維持使用後退按鈕的Fragment 。否則,你將有很多重複的代碼解決方案2(這意味着在錯誤等,不是很維護的情況下,大量的重複工作),或使用的解決方案1.

More info on providing a proper back implementation

泄漏意見
+0

這就是應用程序的主要內容如何結構到導航抽屜。從主要活動及其內容開始,該分支有一些活動。感謝您的回覆。我可能會重組並將這些活動轉換爲碎片,儘管這會有所幫助! –