2016-11-17 133 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

这是正确的。 –