SharedPreference使用
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
其中的原理是通过Android系统生成一个xml文件保到:/data/data/包名/shared_prefs目录下,类似键值对的方式来存储数据。
Sharedpreferences提供了常规的数据类型保存接口比如:int、long、boolean、String、Float、Set和Map这些数据类型。
SharedPreference存储形式为键值对形式,下面为存储和获取的代码示例:
存储示例
1 | /** |
读取示例
1 | //先获取对应的Share |
我们可以使用Share存储一些较轻量的信息,比如我们可以使用Share存储一个值,使用这个值可以判断APP是不是第一次打开。
要点
上面用到的是Context类的getSharedPreferences()方法,需要传入文件名和操作模式,默认为0也就是MODE_PRIVATE。
获取SharedPreferences还有两种方法:Activity类的getPreferences()方法,和PreferenceManager类的静态方法getDefaultSharedPreferences()。前者会自动将当前类名作为文件名,只需要传入操作模式。后者需传入context,并自动使用包名作为前缀来命名SharedPreferences文件。提交SharedPreferences数据时,可以用SharedPreferences.Editor的commit()方法,也 可以用它的apply()方法。两者有什么区别呢,下面的解释来自《阿里巴巴Android开发手册》:
SharedPreference 提 交 数 据 时 , 尽 量 使 用 Editor#apply(),而非Editor#commit()。一般来讲,仅当需要确定提交结果,并据此有后续操作时,才使用 Editor#commit()。
说明:
SharedPreference 相关修改使用 apply 方法进行提交会先写入内存,然后异步写入磁盘,commit
方法是直接写入磁盘。如果频繁操作的话 apply 的性能会优于 commit,apply会将最后修改内容写入磁盘。但是如果希望立刻获取存储操作的结果,并据此做相应的其他操作,应当使用 commit。