Android上常见的数据存储方式有哪些呢?
SharedPreferences这种存储数据的方式我们平时用的都对吗?
怎么使用SQLiteDatabase才是安全的?
带着这些问题,我们今天来深入分析一下SharedPreferences和database这两种Android上常见的数据持久化方式。
一、SharedPreferences
1、Preference和sharedPreferences是什么
Preference在Android上是首选项的意思,主要是指FrameWork上的各种UI组件,我们看一下Preference的各个子类:
preference的子类
它们一般用在PreferenceActivity中,当使用这些组件时,设置在组件中的数据会自动进行保存。
说的更加直白一些,Preference就是应用的设置界面。
SharedPreferences是用来存取Preference中设置的数据的,它是key-value键值对的形式存在,Android 3.0后又增加了StringSet的value形式,可以说SharedPreferences就是用来为Preference做数据持久化的。我们也来看看官方对它的说明:
SharedPreferences说明
从这个官方说明里我们注意到我们平时容易忽略的两点:(1)对于任何一类的preference(实际就是同一个preference name),SharedPreferences是唯一的;(2)SharedPreferences不支持多进程(这个我们接下来也会分析到)。
2、SharedPreferenced的内部实现
对于怎么使用SharedPreferences,我们就不多讨论了,这是Android最基本的一种数据存储方式了,如果你还不知道如何使用它,那你要保持低调了,不要让人知道你是一个Android的程序员,同时赶紧去找资料学习一下吧。
(1)数据存储格式
SharedPreferences的数据是以xml格式存储的;它的存储位置在我们应用程序私有文件目录下的shared_prefs中,每个preference_name会存储一个xml文件;同时,这些数据都是明文存储的,担心数据泄漏的,记得加密后再写入哦。
具体的文件存储目录是:/data/data/${packageName}/shared_prefs/
我们看一下SharedPreferences的get方法接口:
SharedPreferences get方法
从这里可以看出SharedPreferences只支持6种数据类型,分别是boolean,float,int,long,String和StringSet,基本StringSet还是在Android3.0后才加入。我们再来看看存储在xml中是什么样子:
pref文件中的形式
可以看出,xml中的标签也是对应的几个。
(2)数据载入和缓存
SharedPreferences会在第一次打开这个Preference时&#