如果你有一个相对小的键值对集合需要保存,你应该使用SharedPreferences APIs。一个SharedPreferences对象指向一个包含键值对的文件,并提供简单的方法来读和写它们。每个SharedPreferences文件通过框架被管理,并可以私有化或者被共享.
这节课程向你展示了如何使用SharedPreferences API保存和获取简单的值.
注意:SharedPreferences APIs仅仅用于读取和写入键-值对,并且你不应该把它和Preference API混淆,它帮助你为你的应用程序构建一个用户设置界面(尽管它们使用SharedPreferences实现应用程序设置的保存).更多关于使用Preference APIs的实现,请查阅Setting指南.
获取一个SharedPreferences句柄
—————————————————————————————————————————————————————————————————
通过调用下面两个方法之一,你能创建一个新的共享参数文件,或这访问一个已经存在的。
getSharedPreferences() - 如果你需要多个通过名字标识的共享参数文件,使用这个方法,你使用第一个参数指定名字。你能在你应用中的任何Context调用它.
getPreference() - 如果你仅仅需要这个Activity的一个共享参数文件,在这个Activity中使用这个方法。因为它返回一个默认的共享参数文件,它属于这个Activity,你不需要提供一个名字。
例如,下面的代码是在一个Fragment中被执行。它访问了通过字符串资源R.string.preference_file_key识别的共享参数文件,并且使用私有模式打开它,所以文件仅仅允许你的应用程序访问.
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
当命名你的共享参数文件的时候,你应该使用一个在你的应用中唯一标识,如”com.example.myapp.PREFERENCE_FILE_KEY”.
另外,如果你仅仅需要你的Activity的一个共享参数文件,你能使用getPreferences()方法:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
写入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()方法,提供你想要的键的值,并且如果键不存在,选择返回一个默认的值。例如:
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);