美文网首页
SharedPreference研究

SharedPreference研究

作者: sky琪仔 | 来源:发表于2016-03-30 11:53 被阅读671次

负责存储信息:

当有一个相对较小的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改变时的监听):

pic1

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

pic2

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

pic3

2.2.Editor.putStringSet(key,Set):

pic4

2.3.Editor.putInt(key,1):

pic5

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

pic6

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

pic7

2.6.Editor.putBoolean(key,true):

pic8

2.7.Editor.remove(key):

pic9

2.8.Editor.clear():

pic10

2.9.Editor.commit():

pic11

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

pic12 pic13

Public Methods

1.getAll();

pic14

2.getString(key,defValue);

pic15

3.getStringSet(key,defValue);

pic16

4.getInt(key,1);

pic17

5.getLong(key,1L);

pic18

6.getFloat(key,1f);

pic19

7.getBoolean(key,false);

pic20

8.contains(key);

pic21

9.Edit();

pic22

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

pic23

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

pic24

与Context的关联

在ContextWrapper extends Context {

@Override

Public SharedPreferences getSharedPreferences (String name, int mode){

Return mcontext.getSharedPreferences(name,mode);

}

在Context中:

pic25

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

相关文章

网友评论

      本文标题:SharedPreference研究

      本文链接:https://www.haomeiwen.com/subject/zdoslttx.html