Android提供的数据持久化存储方式:
1.Shared Preferences:以Key-Value形式存储数据
2.Internal Storage:数据文件存储在内存卡
3.External Storage:数据存储在外部设备,如SD卡等
4.SQLite Databases:SQLite存储方式
5.Network Connection:通过WebService等网络通信方式存储数据。
1.SharedPreferences
Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数,例如应用的默认皮肤设置、记录用户上次登录信息等。数据的存储格式为Key-Value。使用SharedPreferences 保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs 目录下。
使用SharedPreferences保存key-value对:
(1)使用getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
1 SharedPreferences mySharedPreferences=getSharedPreferences("test", Activity.MODE_PRIVATE);
//"test"指定存储文件的文件名,Activity.MODE_PRIVATE设置访问权限
注1:test为存储key-value的文件的名(可以任取,如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件,在这里要特别注意,因为在Android 中已经确定了SharedPreferences 是以xml形式保存,所以,在填写文件名参数时,不要给定“.xml”后缀,android会自动添加。它会直接被保存在/data/data/<package name>/shared_prefs路径下)
注2:SharedPreferences的四种操作模式:
Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND
Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,
Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;
//如果希望文件被其他应用读和写,可以传入:Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE
Activity.MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
(2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
1 SharedPreferences.Editor editor = mySharedPreferences.edit();
(3)通过SharedPreferences.Editor接口的putXXX方法保存key-value对。其中XXX表示不同的数据类型。例如:字符串类型的value需要用putString方法。
editor.putString(key, value);
注: Editor putString(String key, String value);
Editor putInt(String key, int value);等
(4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。
editor.commit();
使用SharedPreferences获得key对于的value:
(1)在读取SharedPreferences数据前要实例化出一个SharedPreferences对象:
1 SharedPreferences sharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE);
(2)使用SharedPreferences的getXXX方法获得value;
1 String str = sharedPreferences.getString(key, "");
测试函数体如下:
//保存value 例: editor.putString("habit", "sleep"); public void sharedsave(String key, String value){ //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE); //实例化SharedPreferences.Editor对象(第二步) SharedPreferences.Editor editor = mySharedPreferences.edit(); //用putString的方法保存数据 editor.putString(key, value); //提交当前数据 editor.commit(); } //获取value的值 public void display(){ //同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象 SharedPreferences sharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); // 使用getString方法获得value,注意第2个参数是value的默认值 String habit = sharedPreferences.getString("habit", ""); //显示value的值 setSafetime_ed.setText(habit); }
它是采用键值对的形式保存参数。当你需要获得某个参数值时,按照参数的键索引即可。