「这是我参与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的存储方式,所以,数据越大,操作越慢