Android系统中主要提供三种方式用于简单地实现数据持久化功能——文件存储、SharedPreference存储、数据库存储。
文件存储——最基本的一种存储方式
作为最基本的存储方式,不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中。
适用:简单的文本数据或二进制数据
默认文件存放目录:所有文件默认存储到/data/data/<package name>/files/
将数据存储到文件中
openFileOutput()
方法:由Context类提供。将数据存储到指定文件。
两个参数:
- 参数一:文件名,文件创建时候使用的名字,不包括路径名(所有文件默认存储到
/data/data/<package name>/files/
目录下); - 参数二:文件的操作模式,主要有两种可选:
MODE_PRIVATE:默认的操作模式,覆盖原有内容;
MODE_APPEND:如果文件已存在,向文件中追加内容;不存在就创建文件。
(Android4.2后已将MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE两种危险的模式废弃)
返回:返回一个FileOutputStream对象,得到这个对象后就可以使用java流的方式将数据写入到文件中。
从文件中读取数据
openFileInput()
方法:同样Context类提供。只接收一个参数:要读取的文件名。系统会自动在默认目录下去加载这个文件。
返回:返回一个FileInputStream对象,得到对象后可以通过Java流的方式将数据读取出来。
实例
P202及之前几页
SharedPreferences存储
使用键值对的方式来存储数据。支持多种不同的数据类型存储。存储的数据是什么类型,读出仍然一样。显然更方便。
默认SharedPreferences文件存放目录:/data/data/<package name>/shared_prefs/
目录下
将数据存储到SharedPreferences
首先获取SharedPreferences对象。三种方法:
- Context类中的
getSharedPreferences()
方法
接收两个参数:参数一指定SharedPreferences文件名称,如果指定文件不存在则会创建一个;参数二指定操作模式,目前只有MODE_PRIVATE一种模式可选,也是默认。 - Activity类中的
getPreferences()
方法
与getSharedPreferences()
方法相似,只不过只接收一个参数,为操作模式。会将当前活动的类名作为SharedPreferences的文件名。 - PreferenceManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,接收一个Context参数,并自动使用当前应用程序包名作为前缀来命名SharedPreferences文件。得到SharedPreferences对象后,开始向文件中存储数据,可分为三步:
- 调用SharedPreferences对象的
edit()
方法来获取一个SharedPreferences.Editor
对象; - 向
SharedPreferences.Editor
对象中添加数据。比如添加一个布尔型数据就用putBoolean()
方法,添加一个字符串则用putString()
方法,以此类推. - 调用
apply()
方法将添加的数据提交,从而完成数据存储操作。
从SharedPreferences中读取数据
对应Preferences.Editor
中每一个put方法,都有对应get方法进行读取。
这些get方法接收两个参数:参数一是键,传入存储数据时使用的键就可以得到相应的值了;第二个参数是默认值,表示当传入的键找不到时会以什么样的默认值进行返回,要与方法索取的数据类型一致。
实例
实现记住密码功能
SQLite数据库存储
Android系统内置。SQLite作为一种轻量级的关系型数据库,运算速度快,占用资源少,适合移动设备使用。
适用:大量复杂的关系型数据。