望远山,知近路,而后自得其乐!

SharedPerferences简介

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,否则有可能发生数据安全风险

文章评论已关闭!