负责存储信息:
当有一个相对较小的key-value集合需要保存时,可以使用SharedPreferencesAPIs。 SharedPreferences 对象指向一个保存key-value pairs的文件,并为读写他们提供了简单的方法。每个 SharedPreferences 文件均由framework管理,其既可以是私有的,也可以是共享的。
API:
百度翻译:访问和更改的偏好所返回的数据接口getsharedpreferences(String,int)。对于任何特定的偏好设置,有一个实例,这个类的所有客户端共享。参数的修改必须通过SharedPreferences.编辑对象,确保优先值处于一致的状态和控制时,他们致力于存储。从各种获取方法返回的对象必须被视为不可改变的应用程序。(ps:百度翻译好辣鸡!)
Note:SharedPreferences APIs仅仅提供了读写key-value对的功能,请不要与PreferenceAPIs相混淆。后者可以帮助我们建立一个设置用户配置的页面(尽管它实际上是使用SharedPreferences 来实现保存用户配置的)。
获取SharedPreference.
我们可以通过以下两种方法之一创建或者访问shared preference 文件:
·getSharedPreferences()— 如果需要多个通过名称参数来区分的shared preference文件, 名称可以通过第一个参数来指定。可在app中通过任何一个Context执行该方法。
例:SharedPreferences sharedPref = context.getSharedPreferences(
“key”, Context.MODE_PRIVATE);
·getPreferences()— 当activity仅需要一个shared preference文件时。因为该方法会检索activity下默认的shared preference文件,并不需要提供文件名称。
例:SharedPreferences sharedPref =getActivity().getPreferences(Context.MODE_PRIVATE);
写Shared Preference
为了写shared preferences文件,需要通过执行edit()创建一个SharedPreferences.Editor。
通过类似putInt()与putString()等方法传递keys与values,接着通过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 Preference
为了从shared preference中读取数据,可以通过类似于 getInt() 及 getString()等方法来读取。在那些方法里面传递我们想要获取的value对应的key,并提供一个默认的value作为查找的key不存在时函数的返回值。
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);intdefaultValue = getResources().getInteger(R.string.saved_high_score_default);longhighScore = sharedPref.getInt(getString(R.string.saved_high_score),default);
Summary
1.SharedPreferences.OnSharedPreferenceChangeListener(preference改变时的监听):
pic12.SharedPreferences.Editor(负责更改preference的值):
pic22.1.Editor.putString(key,”value”):
pic32.2.Editor.putStringSet(key,Set):
pic42.3.Editor.putInt(key,1):
pic52.4.Editor.putLong(key,1.0L):
pic62.5.Editor.putFloat(key,1f):
pic72.6.Editor.putBoolean(key,true):
pic82.7.Editor.remove(key):
pic92.8.Editor.clear():
pic102.9.Editor.commit():
pic112.10.Editor.apply() --与commit一样是提交区别在于(1.apply没有返回值,commit返回boolean表明提交成功与否;2.apply是异步提交到硬件磁盘,commit是同步。因此,在多个并发提交commit时候,他们会等待commit保存的操作,从而降低效率):
pic12 pic13Public Methods
1.getAll();
pic142.getString(key,defValue);
pic153.getStringSet(key,defValue);
pic164.getInt(key,1);
pic175.getLong(key,1L);
pic186.getFloat(key,1f);
pic197.getBoolean(key,false);
pic208.contains(key);
pic219.Edit();
pic2210.registerOnSharedPreferenceChangeListener(listener);-添加preference改变监听;
pic2311.unregisterOnSharedPreferenceChangeListener(listener);-注销preference改变监听;
pic24与Context的关联
在ContextWrapper extends Context {
@Override
Public SharedPreferences getSharedPreferences (String name, int mode){
Return mcontext.getSharedPreferences(name,mode);
}
在Context中:
pic25马丹,只知其然,不知其所以然!!!菜~
网友评论