SharedPerferences简介

原文出处: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,否则有可能发生数据安全风险
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,117评论 25 708
  • 面试题总结 通用 安卓学习途径, 寻找资料学习的博客网站 AndroidStudio使用, 插件使用 安卓和苹果的...
    JingBeibei阅读 1,715评论 2 21
  • 一.sp是什么?能做什么? SharedPreferences(简称SP)是Android中很常用的数据存储方式,...
    lemonCode阅读 862评论 0 2
  • “叶瑾,别让我同情你。” “梁辰,是别让我同情你。” 叶瑾看了一眼站在梁辰身后的助手,留下一脸怔住的梁辰。 ...
    尔青筝阅读 354评论 2 4