您的位置:首页 > 移动开发 > Android开发

Android学习路线(二十七)键值对(SharedPreferences)存储

2014-10-06 15:49 381 查看
假设你又一个相对较小的键值对数据想要保存,你应该使用
SharedPreferences
APIs。一个
SharedPreferences
对象指向一个包括键值对的文件,它提供简单的方法来读写他们。每一个
SharedPreferences
文件系统框架管理,它们能够是私有的也能够被共享。

本课将介绍怎样使用
SharedPreferences
APIs来存储和获取简单的数据。

提示:
SharedPreferences
APIs
仅仅能被用来操作键值对类型数据,不要把它和
Preference
APIs弄混淆,Preference是用来帮助用户构建app设置界面的。很多其它关于
Preference
APIs的信息,请移步Settings 向导。


获取SharedPreferences的引用(句柄)

你能够通过以下随意一种方式创建一个新的shared preference文件或者訪问一个已经存在的shared preference文件:

getSharedPreferences()

Use this if you need multiple shared preference files identified by name, which you specify with the first parameter. You can call this from any
Context
in
your app.
getSharedPreferences()

假设你通过不同的名字保存了多个shared preference文件,那么你能够使用这种方法,这种方法的第一个參数即为文件名称。你能够在应用中使用Context对象来调用它。

getPreferences()

假设你仅仅须要在这个activity中使用一个shared preference文件,那么你能够在activity中调用这种方法。由于这种方法会返回属于这个activity的一个默认的shared preference文件,你不须要为它提供一个名字。

比如,下面的方法会在
Fragment
中被运行。它在内部訪问了一个shared
preferences文件,这个文件被
R.string.preference_file_key
这个字符串指定,而且它是被私有模式(private mode)打开的,因此仅仅能被你的app訪问。

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);


当为你的shared preference文件命名时,你应当使用一个唯一的标识,比如
"com.example.myapp.PREFERENCE_FILE_KEY"


作为替代,假设你仅仅想要在你的activity中使用一个shared preference文件,你能够使用
getPreferences()
方法:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);


注意: 假设你使用
MODE_WORLD_READABLE
或者
MODE_WORLD_WRITEABLE
模式创建了一个shared
preference文件,那么不论什么其它知道这个文件标识的app都可以訪问到你的数据。


向Shared Preferences中写入数据

要向shared preferences文件里写入数据,你须要调用SharedPreferences的edit()方法来创建一个SharedPreferences.Editor 对象。

传入键和值给你想要调用的方法,比如
putInt()
putString()
。然后调用
commit()
方法来存储这些改变。比如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();


从Shared Preferences中读取数据

要从shared preferences文件里获取数据,能够调用getInt()或者getString()等方法,仅仅须要提供你想要获得的值相应的key就能够了;你也能够选择再传入一个默认值,假设通过传入的key没有取道值将会返回这个默认值。比如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: