Android本地存储方式(二)--SharedPreferences

413 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战

SharedPreferences简介

  • SharedPreferences是一种轻量级存储方式
  • 以Map形式存放
  • 文件存放在/data/data//shared_prefs

一、SharedPreferences使用

1.获取SharedPreferences

使用SharedPreferences的时候我们需要先获取,获取SharedPreferences方法有:

  • Context.getSharedPreferences(String name, int mode) name:存储文件的文件名

mode:操作模式

Context.MODE_PRIVATE:该SharedPreferences数据只能被本应用程序读写
Context.MODE_WORLD_READABLE:该SharedPreferences数据能被其他应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE:该SharedPreferences数据能被其他应用程序读
Context.MODE_APPEND:会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
  • Activity.getPreferences(int mode) 只有一个参数:mode 指定操作模式,这种方式获取创建的文件,只能在该Activity中使用,没有指定的文件名,文件名同Activity名字

2.写数据

  • 实例化Editor对象
haredPreferences.Editor editor = sharedPreferences.edit();
  • 存入数据
editor.putString("string", “string类型数据”);
editor.putInt("int", 1);
editor.putBoolean("boolean",true);
  • 提交
editor.commit();

3.读数据

String mStr=sharedPreferences.getString("string","");
int age = sharedPreferences.getInt("int", 0);

4.删除和清空

editor.remove("name");
editor.commit();
editor.clear();
editor.commit();

二、commit和apply的区别

  • commit 存储过程是原子操作,commit方法有返回值,true代表成功,后一次会覆盖之前的值,commit直接是向物理介质写入内容,相对于apply效率低
  • apply apply 存储过程也是原子操作,没有返回值(是否成功我们并不知道),apply写入过程分为两步:(1) 先同步写入内存 (2)异步写入物理磁盘(写入的过程会阻塞同一个SharedPreferences对象的其他写入操作)
  • 如果是不关心成功与否,并且是在主线程设置,用apply方法

三、SharedPreferences在使用过程中注意事项

  • ShredPreferences是单例对象,第一次打开后,之后获取都无需创建,速度很快
  • 当第一次获取数据后,数据会被加载到一个缓存的Map中,之后的读取都会非常快
  • 是Map的存储方式,所以,数据越大,操作越慢