持久化技术
数据持久化就是指将内存中的瞬时数据保存到存储设备中,android中主要提供了三种方式:文件存储,SharedPrefences存储以及数据库存储
文件存储
简介
文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中,比较适合存储一些简单的文本数据或二进制数据
内容
存储
- 使用Context类的openFileOutput()方法获得一个FileOutputStream对象,然后使用java的IO流将数据存储到指定的文件中
- 该方法接收两个参数:第一个参数是文件名,第二个参数是文件的操作模式。
文件名不可以包含路径,所有文件都是默认存储到/data/data/< package name>files/目录下的。
文件操作模式有两种可以选:MODE_PRIVATE(默认的操作模式,若文件存在,则覆盖原文件中的内容)和MODE_APPEND(若文件存在,则追加写入,若不存在,则创建新文件)
读取
- 从文件中读取数据:使用Context类的openFileInput()方法获得FileInputStream对象,然后使用java的IO流进行文件读取。
- 该方法只接受一个参数,即要读取的文件名,然后系统会自动到/data/data/< package name>files/文件下加载这个问价,并返回一个FileInputStream对象,然后通过java的IO流将数据读取出来。
SharedPreferences存储
简介
SharedPreferences使用键值对的方式来存储数据,当保存一条数据时需要给这条数据提供一个键,然后在读取数据时通过键将对应的值读取出来。SharedPreferences还支持多种不同的数据类型存储
内容
-
要使用SharedPreferences来存储数据,必须先获取到SharedPreferences对象。android中提供了三种方法获取SharedPreferences对象:
- Context类中的getSharedPreferences()方法
- 此方法接受两个参数:第一个参数指定SharedPreferences文件的名称,第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种模式,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写
- Activity类中的getPreferences()方法
- 该方法和Context类的getSharedPreferences()方法类似,但他只接受一个操作模式参数,此方法会自动将当前活动的类名作为SharedPreferences的文件名
- PreferenceManager类中的getDefaultSharedPreferences()方法
- 这是一个静态方法,它接受一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
- Context类中的getSharedPreferences()方法
-
向SharedPreferences文件中存储数据,主要分为三步:
- 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
- 向SharedPreferences.Editor对象中调用putXxx()方法添加数据
- 调用apply()方法将添加的数据提交,从而完成数据存储操作
-
从SharedPreferences中读取数据,SharedPreferences对象中每种get方法都对应了SharedPreferences.Editor中的一种put方法。get方法接受两个参数,第一个参数是键,第二个参数是默认值,即当传入的键找不到对应的值时会返回该值。
SharedPreferences.Editor editor = getSharedPreferences("date", MODE_PRIVATE).edit(); editor.putInt("age", 19); editor.apply(); --------------------- SharedPreferences sharedPreferences = getSharedPreferences("date", MODE_PRIVATE).edit(); Log.d("MainActivity", sharedPreferences.getInt("age", 0));