SharedPreference研究

负责存储信息:

当有一个相对较小的key-value集合需要保存时,可以使用SharedPreferencesAPIs。 SharedPreferences 对象指向一个保存key-value pairs的文件,并为读写他们提供了简单的方法。每个 SharedPreferences 文件均由framework管理,其既可以是私有的,也可以是共享的。

API:

SharedPreference研究_第1张图片
百度翻译:

访问和更改的偏好所返回的数据接口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改变时的监听):

SharedPreference研究_第2张图片
pic1

2.SharedPreferences.Editor(负责更改preference的值):


SharedPreference研究_第3张图片
pic2

2.1.Editor.putString(key,”value”):


SharedPreference研究_第4张图片
pic3

2.2.Editor.putStringSet(key,Set):


SharedPreference研究_第5张图片
pic4

2.3.Editor.putInt(key,1):


SharedPreference研究_第6张图片
pic5

2.4.Editor.putLong(key,1.0L):


SharedPreference研究_第7张图片
pic6

2.5.Editor.putFloat(key,1f):


SharedPreference研究_第8张图片
pic7

2.6.Editor.putBoolean(key,true):


SharedPreference研究_第9张图片
pic8

2.7.Editor.remove(key):


SharedPreference研究_第10张图片
pic9

2.8.Editor.clear():


SharedPreference研究_第11张图片
pic10

2.9.Editor.commit():


SharedPreference研究_第12张图片
pic11

2.10.Editor.apply() --与commit一样是提交区别在于(1.apply没有返回值,commit返回boolean表明提交成功与否;2.apply是异步提交到硬件磁盘,commit是同步。因此,在多个并发提交commit时候,他们会等待commit保存的操作,从而降低效率):


SharedPreference研究_第13张图片
pic12


SharedPreference研究_第14张图片
pic13

Public Methods

1.getAll();


SharedPreference研究_第15张图片
pic14

2.getString(key,defValue);


SharedPreference研究_第16张图片
pic15

3.getStringSet(key,defValue);


SharedPreference研究_第17张图片
pic16

4.getInt(key,1);


SharedPreference研究_第18张图片
pic17

5.getLong(key,1L);


SharedPreference研究_第19张图片
pic18

6.getFloat(key,1f);


SharedPreference研究_第20张图片
pic19

7.getBoolean(key,false);


SharedPreference研究_第21张图片
pic20

8.contains(key);


SharedPreference研究_第22张图片
pic21

9.Edit();


SharedPreference研究_第23张图片
pic22

10.registerOnSharedPreferenceChangeListener(listener);-添加preference改变监听;


SharedPreference研究_第24张图片
pic23

11.unregisterOnSharedPreferenceChangeListener(listener);-注销preference改变监听;


SharedPreference研究_第25张图片
pic24

与Context的关联

在ContextWrapper extends Context {

@Override

Public SharedPreferences getSharedPreferences (String name, int mode){

Return mcontext.getSharedPreferences(name,mode);

}

在Context中:


SharedPreference研究_第26张图片
pic25

马丹,只知其然,不知其所以然!!!菜~

你可能感兴趣的:(SharedPreference研究)