Android中的数据存储方式:
1.SharedPreferces,一个轻量级的键值存储机制(key-value方式),只能存储数据基本类型,本质上是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,或者存储用户的一些设置行为等等。
2.文件存储方式,用文件的方式存储信息,通过输入输出流对文件进行操作,一个应用程序无法读取其他应用程序的文件,数据共享就用Content Providers。
3.SQLite方式,android提供的一个标准数据库,支持SQL语句。
4.内容提供器方式(ContentProvider),是应用程序之间的桥梁,使得各个应用程序之间数据共享。
5.网络存储方式,通过网络存储和获取数据。
这里主要介绍第一和第四种方式:
(1)SharedPreferces方式:
存储数据:
SharedPreferences pref = getSharedPreferences("myPref", MODE_PRIVATE);
// 创建SharedPreferences.Editor对象,用于存储数据修改,开启myPref,若没有,则创建一个
SharedPreferences.Editor editor = pref.edit();
// 存储数据信息
editor.putString("name", "zhangsan");//存储名字是name的字符串
editor.putInt("age", 22);
editor.putLong("time", System.currentTimeMillis());
editor.putBoolean("default", true);
// 提交数据修改
editor.commit();
读出数据:
String name = pref.getString("name", "defaultName");
Int age = pref.getInt("age", 0);//0代表私有
Long time = pref.getLong("time", 0);
Boolean default = pref.getBoolean("default", true);
现在编辑内容,然后去别的程序,再回来的时候(就算我们把程序退出了),编辑的内容还依然存在。这个时候,我们打开文件浏览器,发现数据是保存在/data/data/<packagename>/shared_prefs/目录的data.xml文件当中的,而且是永久保存;所以,当在onResume()方法还原数据之后,我们还要加一部分代码,来删掉这个文件里的内容(无法删除文件本身),不然就会永久保存本地成为垃圾了。代码如下:
protected void onResume() {
super.onResume();
Editor editor = pref.edit();
editor.clear();
editor.commit();
}
(2)ContentProvider方式:
Android提供了这种方式,使得一个程序可以通过实现一个ContentProvider的抽象数据接口将自己的数据完全暴露出去,而且ContentProvider是以类似数据库的方式暴露出去,也就是说ContentProvider就像一个数据库。因此外界想要获取他提供的数据,也就类似于从数据库中获取数据,只不过是采用url的方式来表示外界需要访问的“数据库”。外部访问通过ContentResolver去访问并操作这些暴露的数据。