2016-11-17 65 views
0

我正在嘗試保存我製作的Android應用的信息。我想保存一個名字,「羅伯特」。爲此,我一直在研究Shared Preferences,並且找不到解釋如何創建SharedPreferences的教程。共享首選項不必創建?

所有教程像這樣開頭:

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 

但他們並沒有解釋其中的getPreferences()採取從對象。

何時創建此對象(SharedPreferences對象)?它是否與上下文一起創建?它是否與每個活動一起創建?

我對Android非常陌生,但是一箇中等(減)的Java程序員。

回答

2

SharedPreferences都是這樣創建:

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
editor.putString("name", "Robert"); 
editor.commit(); //Or use editor.apply() 

然後你再得到他們這樣

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
    String name = prefs.getString("name", "No name defined");//"No name defined" is the default value. 

因此,的getString()讓你之前存儲的值,並如果尚未爲'name'存儲字符串,則返回默認值。

您存儲的對象保存在系統中,並且可以隨時抓取。

更新: getSharedPreferences()方法返回SharedPreferences.Editor接口。 根據android docs

用於修改SharedPreferences對象中的值的接口。所有 更改都在編輯器中是成批的,而不是直到調用commit()或應用()

更新2複製回 原SharedPreferences: This answer包含的存儲的詳細信息SharedPreferences。

+0

您的第一段代碼段顯示瞭如何創建編輯器。我對getSharedPreferences()提供的SharedPreferences對象更加好奇。你提到如果事先沒有存儲任何東西,它會返回一個默認值,這是活動中的默認對象嗎? – Einar

+0

getSharedPreferences()方法返回SharedPreferences.Editor接口。我會用更多關於界面的信息來更新我的答案。 –

+0

@Einar如果您不使用首選項名稱,那麼您對該活動具有本地優先權。它創建或打開一個XML文件。 –

1

SharedPreferences作爲xml文件存儲在應用程序的數據文件夾中。你使用getSharedPreferences來自哪個context。它將從該文件中提取這些首選項。一旦首次加載,首選項文件將被緩存到整個進程中,這樣您就可以在每次後續調用時獲得相同的對象(即使它們來自不同的活動)。

更多信息herehere

+0

因此,第一次調用getSharedPreferences()時創建XML文件? – Einar

+0

這是正確的。 –