数据持久化就是指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失,保存在内存中的数据是处于瞬时状态的,而保存在存储设备的数据是处于持久化状态的,持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间切换;
android系统中主要提供了三种方式实现数据持久化,文件存储,SharedPreference存储和数据库存储,
1、文件存储
是Android中最基本的存储方式,它不对存储的内容进行任何的格式化处理,原封不动的保存在文件当中,适合比较简单的文本数据或者二进制数据,如果想使用文件保存一些较为复杂的数据,就需要定义一套自己的格式规范,方便之后将数据从文件中重新解析出来
(1)写入数据
public void save(){
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}finally {
try{
if (writer !=null){
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try{
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine())!=null){
content.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
2、SharedPreferences存储
是使用键值对的形式来存储数据的,也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读数据的时候就可以通过这个键把相应的值取出来,并且其支持多种不同的数据类型存储;
(1)获取对象
(2)存储数据
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putBoolean("married",false);
editor.putInt("age",28);
editor.apply();
(3)读取数据
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name"," ");
3、内置数据库SQLite
是一款轻量级的关系型数据库,运算速度特别快,占用资源少,通常需要几百KB的内存就足够了
(1)创建数据库,SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行创建和升级,