2013-05-21 38 views
0

我正在使用一個android應用程序,並正在尋找一種方法來建立一些全局偏好,這些偏好隨後可供所有應用程序中的所有活動/類訪問。這與我所知道的有些人最終在客觀c編程中使用AppDelegate相似。我在網上看到的答案表明我要麼擴展應用程序,要麼將數據保存到SharedPreferences。我想知道是否有一種方法來結合這兩種方法,以便在我的應用程序中,我可以繼續調用Preferences對象的屬性(如Preferences.getName()),並將數據保存到SharedPreferences中,以便在如果Android決定重新啓動我的應用程序,並且我放棄了我的Preferences對象中的所有數據,我仍然可以從SharedPreferences中重新獲取它並重新設置Preferences對象。任何人都可以讓我知道如何做到這一點,如果它是可行的?Android全局偏好

回答

2

見我在https://stackoverflow.com/a/13673178/338479

在簡短的回答,我創建了一個「單身」類來保存我的喜好,只要應用在內存裏的數據依然存在。如果應用程序被系統殺死,那麼singleton類將在稍後以靜默方式重新加載。

通過擴展Application類也可以做到這一點,但傳統觀點認爲這樣做沒有真正的優勢。

+0

只是你的方法幾個簡單的問題。什麼是易失性和同步關鍵字的使用?另外,我是否也可以將寫作合併到此首選項對象中的sharedPreferences中?所以無論何時我實例化對象,我填滿它的字段,堅持sharedPreferences。我可以通過重載方法實現嗎?有沒有上下文獲取實例的方法意味着我將保存到文件。帶有上下文參數的另一種方法意味着我將從sharedPreferences實例化?不知道我是否有意義:) –

+0

在「Singleton Pattern」上進行搜索,並且您的問題將得到詳細回答,但簡短的回答是,通過使用它們,您可以允許多個線程始終訪問同一個對象,沒有腐敗或意外創建多個實例的危險。 –

+0

就寫入sharedPreference而言,這正是我在應用程序中所做的(源代碼來自我的簡化)。或者你建議子類化SharedPreferences?我從來沒有想過,但它可能工作。 –