美文网首页
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