细讲Android系统下的Preference

       Android系统下有一个存储轻量级数据的功能Preference,本质是Setting。Preference翻译过来是偏好,意思是可以通过Preference来根据不同的用户设置自己的偏好,也可以说设置应用或者系统的属性。

    Preference用起来方便简单,它主要用来存储应用中的键值对。它包括SharedPreference和PreferenceActivity相关的Preference类。PreferenceActivity相关的Preference类是用于写应用的设置界面,可以很方便的完成设置界面的编写。这篇主要讲它里面的SharedPreference。它的实现是隐藏的系统内部类SharedPreferenceImpl,而SharedPreference仅是接口。

    SharedPreferenceImpl在实现键值对存储和读取采用的是二级缓存的方式,首先用static的二级Map存储在内存中,然后以文件的方式存储在/data/data/shared_prefs中。它是以xml文件的形式来存储键值对的。

    内存中的二级Map是根据包名和文件名区分的,SharedPreference可以存储基本类型和Set的键值对。

    SharedPreference中键值对的读取是同步的,因为中内存中的静态map中读取。写入分为同步和异步之分。SharedPreference的读取是直接使用SharedPreference类下的方法,写入是使用SharedPreference类中的内部类Editor来实现的。Editor有很多put方法用来存储数据到内存,如果提交到本地文件中需要使用commit或者apply方法。其中,commit方法是同步方法,apply是异步方法。因为写入涉及io操作,所以commit会阻塞主线程,推荐使用apply异步的方式提交。

    建议SharedPreference文件尽量以文件名命名。在Activity中有getPreference方法来直接获取SharedPreference,它生成的文件以相关的Activity命名。

    获取SharedPreference还有一个参数来设置该文件的访问权限,现在的权限仅剩两个,一个是私有权限,一个是多进程权限。

转载于:https://my.oschina.net/tingzi/blog/824619

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值