本文译自:http://developer.android.com/training/basics/data-storage/shared-preferences.html
如果你有一个相对较小的要保存的键-值对的集合,那么就应该使用SharePreferences APIs。
SharePreferences对象指向一个包含键-值对的文件,并且提供简单的读写方法。每个SharePreferences文件是由框架来管理的,并可以是私有或共享的。
本节课向你讲述如何使用SharePreferences APIs来保存和获取简单的值。
注意:SharedPreferences APIs只是用于读写键-值对,你不能够把它们跟Preference APIs混淆,Preference APIs用于帮助你构建应用程序设置的的用户界面(尽管它们使用SharePreference作为保存应用程序设置的实现)。有关使用Preference APIs的更多信息,请看Setting指南。
获得对SharedPreferences的处理
你可以创建一个新的共享偏好文件或调用以下两个方法之一来访问一个既存的偏好文件:
getSharedPreferences() --- 如果你需要由名称来标识的多个共享偏好文件,文件的名称用该方法的第一个参数来指定。你可以在你的应用程序中调用这个来自Context对象的方法。
getPreferences() --- 如果你只是使用一个用于特定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);
警告:如果你使用MODE_WORD_READABLE或MODE_WORLD_WRITEABLE来创建共享偏好文件,那么其他知道该文件标识的应用程序也可以访问你的数据。
写入共享偏好文件
要向一个共享偏好文件中写入,就要通过调用SharedPreferences上的edit()方法来创建一个SharedPreferences.Editor对象。
用诸如putInt()和putString()方法把你想要写入的键和值传递给SharedPreferences对象。然后调用commit()方法保存改变。例如:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
从共享偏好文件中读取
要从共享偏好文件中获取值,就要调用诸如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);