Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储、SharedPreference存储以及数据库存储。
文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据。
Context类中提供了一个openFileOutput
()方法,可以用于将数据存储到指定的文件中。这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的是这个名称,注意这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/<package
name>/files/目录下的。第二个参数是文件的操作模式,主要有两种模式可选,MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE
是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND
则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。openFileOutput()方法返回的是一个FileOutputStream对象,得到了这个对象之后就可以使用Java流的方式将数据写入到文件中了。Context类中还提供了一个openFileInput()方法,用于从文件中读取数据。它只接收一个参数,即要读取的文
件名,然后系统会自动到/data/data/<package name>/files/目录下去加载这个文件,并返回一个FileInputStream对象,得到了这个对象之后再通过
Java
流的方式就可以将数据读取出来了。
SharedPreferences使用xml格式为Android应用提供一个永久性的数据存储方式。对于一个Android应用,它存储在文件系统的/data/data/<package_name>/shared_prefs/目录下,可以被处在同一个应用中的所有Activity访问。Context类中的getSharedPreferences()方法;Activity类中的
getPreferences()方法;PreferenceManager类中的
getDefaultSharedPreferences()方法。得到了SharedPreferences对象之后,就可以开始向
SharedPreferences
文件中存储数据了,
主要可以分为三步实现:
1.调用
SharedPreferences
对象的
edit()方法来获取一个SharedPreferences.Editor
对象。
2.向
SharedPreferences.Editor
对象中添加数据,比如添加一个布尔型数据就使用putBoolean方法,添加一个字符串则使putString()
方法,以此类推。
3.调用
commit()方法将添加的数据提交,从而完成数据存储操作。
SharedPreferences存储确实要比文本存储简单方便了许多,应用场景也多了不少,比如很多应用程序中的偏好设置功能其实都使用到了SharedPreferences技术。
文件存储和
SharedPreferences存储毕竟只适用于去保存一些简单的数据和键值对,SQLite适用于需要存储大量复杂的关系型数据的时候。比如我们手机的短信程序中可能会有很多个会话,每个会话中又包含了很多条信息内容,并且大部分会话还可能各自对应了电话簿中的某个联系人。