美文网首页
SharedPerferences简介

SharedPerferences简介

作者: ccbuluo | 来源:发表于2017-05-10 19:26 被阅读0次

    原文出处:http://www.ccbu.cc/android/shareperferences-intro

    SharedPerferences是Android系统提供的一种轻量级的数据存储方式,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。

    SharedPreferences提供了java常规的Long、Int、String等类型数据的保存接口,使用键值对的方式来进行数据存储,SharedPreferences文件是使用XML格式来对数据进行管理的,保存在在/data/data/(packageName)/shared_prefs目录下。

    SharedPerferences存储的特点:

    • 轻量级
    • 存储简单数据类型
    • 以键值对的形式
    • 基于XML文件存储
    • 占用的是私有数据空间

    SharedPreferences的四种操作模式:

    • Context.MODE_PRIVATE
    • Context.MODE_APPEND
    • Context.MODE_WORLD_READABLE
    • Context.MODE_WORLD_WRITEABLE
    模式 说明
    MODE_PRIVATE 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
    MODE_APPEND 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
    MODE_WORLD_READABLE 表示当前文件可以被其他应用读取
    MODE_WORLD_WRITEABLE 表示当前文件可以被其他应用写入

    获取SP(SharedPerferences)的方法:

    1. PerferencesManager.getDefaultSharedPreferences(context);//不推荐使用
    2. context.getSharedPreferences("指定SP的名称", Context.MODE_PRIVATE);
    3. Activity类中的getPreferences(int mode)方法 // 该方法只接受一个模式参数,这个方法会自动将当前活动的类名做为SharedPreferences的文件名

    存储内容:

    haredPerferences sp = context.getSharedPerferences("mySp", Context.MODE_PRIVATE);
    SharedPerferences.Editor editor = sp.edit();
    editor.putString("name", name);//put方法有很多,参数都是键值对
    editor.commit();//最后提交修改即可
    

    读取内容:

    SharedPerferences sp = context.getSharedPerferences("mySp", Context.MODE_PRIVATE);
    String name = sp.getString("name", null);//get方法对应put,参数是键和默认值
    
    • SP是一个单例对象,支持多线程。

    • SharedPerferences.Editor有两种提交方法

      1. abstract boolean commit() 该方法是将内容提交到磁盘
      2. abstract void apply() 该方法是将内提交至内存,异步的进行磁盘IO操作
    • 在并发环境中后一个commit请求会等待前一个commit执行完毕后再执行;而apply则会直接覆盖掉前一个apply
      所以,在不关心数据提交成功与否的情况下,尽可能使用apply提高性能。

    SP使用建议

    • APP版本升级并不会删除原有SP文件,有必要可以将APP版本号储存至SP文件中
    • 应该减少单个SP文件的大小
    • 只应该在单进程使用SP,否则有可能发生数据安全风险

    相关文章

      网友评论

          本文标题: SharedPerferences简介

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