sharepreference原理
2023-12-28 19:33:36 0 举报
SharePreference是一种轻量级的数据存储方式,用于存储应用程序中的配置信息、用户偏好等数据。它本质上是一个XML文件,数据以key-value对的形式存储。SharePreference的原理主要包括以下几个步骤: 1. 获取SharedPreferences对象:通过Context对象的getSharedPreferences()方法获取,需要提供存储文件的名称和模式(MODE_PRIVATE、MODE_MULTI_PROCESS等)。 2. 获取Editor对象:通过SharedPreferences对象的edit()方法获取。 3. 存储数据:通过Editor对象的putXxx()方法存储数据,如putInt()、putString()等。 4. 提交数据:通过Editor对象的commit()方法提交数据,将数据写入到文件中。 5. 读取数据:通过SharedPreferences对象的getXxx()方法读取数据,如getInt()、getString()等。 SharePreference的数据存储位置取决于应用程序的包名和文件名,易于管理,提供了一种简单、高效的数据存储方式。然而,由于数据存储为XML文件,不适用于存储大量或复杂的数据。
作者其他创作
大纲/内容
3.1 准备获取editImpl对象
3. put方法存储对象
1. 获取SharePreference对象
将 mapToWriteToDisk写入到mFile中
创建以bak结尾的备份对象,路径和file路径一致注意这里还没创建文件实体,仅仅是对象
从 sSharedPrefsCache中根据当前包名拿到SharedPreferencesImpl对应的arraymap对象cache
对比mapToWriteToDisk和mModified
加载file的xml文件,转为一个map对象
生成MemoryCommitResult对象
将 mModified 执行clear清空
MemoryCommitResult
final CountDownLatch writtenToDiskLatch = new CountDownLatch(1);
SharedPreferencesImpl实例化
需要等待初始化时候异步线程执行加载完成,这里会阻塞
异步线程执行
队列中放入runnable,准备写入文件
通过context.getSharedPreferences来获取
如果没有则新建文件file1,并放入ArrayMap mSharedPrefsPaths中
3.2 执行editImpl的put方法
删除备份文件mBackupFile
保存传入的file对象到临时全局变量中
如果备份文件mBackupFile不存在,那么将当前文件mFile改名为备份文件
将map对象赋值给全局的mMap如果加载xml没有数据,那么会直接new一个空的hashmap
如果没有则创建对象
SharedPreferencesImpl
创建新的mFile文件
2. get方法拿取数据
b. mapToWriteToDisk将mModified中对应的key和value更新到自己的map中
EditorImpl
// font color=\"#b71c1c\
ContextImpl
// 文件和文件名的映射 font color=\"#b71c1c\
3.3 执行apply方法
向内部对象mModified中存放当前的key和value
mClear置为false
实例化一个EditImpl对象
直接从mMap中拿取对应对象
如果备份文件对象实体是存在的,那么会将备份文件重命名为file,将旧的file实体文件删除
如果mClear是true,那么这里会将变量mapToWriteToDisk执行clear进行清空
从context对象中保存的mSharedPrefsPaths中根据文件名查找对应File文件
起个异步线程,开始处理备份文件相关逻辑
结束
返回对象
将mMap赋值给方法内变量mapToWriteToDisk;
从cache中查找file1对应的sharepreferenceImpl对象
将mFile删除
0 条评论
下一页