持久化技术
数据持久化就是指将内存中的瞬时数据保存到存储设备中,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));