android SharePreference底层原理

来源:互联网 发布:卡盟源码安装教程 编辑:程序博客网 时间:2024/06/03 09:39
SharedPreFerences作为Android存储数据方式之一,特点:
1)只支持java基本数据类型
2)在应用内数据共享
3)使用简单

SharedPreferences 使用及原理详情
SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据
SharedPrefences只能保存java基本数据类型,一般会将复杂类型的数据转换成base64编码
然后将转换后的数据以字符串形式保存在xml文件中,在使用sharedpreferences保存,

使用sharedpreferences保存key-values的步骤:
1)使用activity类的getSharedPreferences方法获得SharedPreference对象,
2)使用sharedpreferences接口的edit获得Sharedpreferences.Editor对象
3)通过sharedpreferences.editor接口的putXxx方法保存键值对,
4)通过Sharedpreferences.editor接口的commit()方法保存键值对

SharedPrefereces内部工作原理
调用getSharedPreferences();创建一个SharedPreferences对象,其中会先判断是否存在对应
xml文件,如果发生存在则会有一个预加载操作,这个操作把xml文件的内容通过I/O流操作和xmlUtil
解析后存入一个map对象中,多以我们调用Sharedprefernces::getString;get操作实际上是不会
对文件做I/O操作,而是直接访问刚刚的map集合内容,这提高了效率,如果对应的xml不存在则重新
创建一个对应xml文件
put写操作:分为两个步骤,
1)把数据先写入内存中,map集合中,
2)把数据写入硬盘文件中,保证数据的完整性
写操作有两个提交方式:
1)commit():线程安全,性能慢,一般来说在当线程完成写文件操作(有返回值)
2)apply();线程不安全,性能高,异步处理I/O操作,一定会把这个写文件放入一个SingleThreadExecutor线程池中(无返回值)

SharedPreferences在第一次创建后会一直维持一个singletop,每次调用getSharedpreferences()都会返回一个唯一的实例