Android系统提供了5种方式用来存储应用数据(application data),它们分别是SharedPreferences(共享参数),Internal Storage(内部存储),External Storage(外部存储),SQLite Databases(数据库存储),Network Connection(网络存储),可以根据不同的情景使用相应的存储方式。
下图是从Android 5.0 官方文档的Data Storage的部分截图:
从上图可知SharedPreferences主要以键值对的形式存储私有数据,Internam Storage主要是在手机的内存存储私有数据,External Storage主要是在手机的扩展卡(SD卡、存储卡)存储公共数据,而SQLite Databases则是将具有数据结构的数据存储到私有的数据库中,同时NetWork Connection则是存储数据到自己的服务器上。
SharedPreferences 又名共享参数,它是一个轻量级的存储类,适用于存储少量的软件配置参数信息,它是以XML文件的形式存储数据,其中该文件保存在/data/data/包名/shared_pref目录下。
查阅官方文档,知ShredPreferences:
根据以上可知 SharedPreferences是一个接口,它是使用单例模式创建对象,也就是在任何时刻,在内存中都只有一个SharedPreferences对象。
SharedPreferences是一个接口,它的内部定义了两个公共的内部接口:
SharedPreferences定义的方法:
SharedPreferences类的整体定义:
根据以上总结:
1.获取SharedPreferences对象:
1)context.getSharedPreferences(String name,int mode) 返回一个SharedPreferences对象,可以被同一应用程序下的其他组件共享。
eg: SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);
name 为SharedPreferences保存的数据所在的文件名称,没有后缀,而Mode为存储的模式,主要有四种:
可知Mode的值有四个(API 17),分别为:
MODE_PRIVATE:私有
MODE_APPED:追加
MODE_ENABLE_WRITE_AHEAD_LOGGING:
MODE_MULTI_PROCESS:
其中MODE_WORLD_READABLE(全局读)和MODE_WORLD_WRITEABLE(全局写)已经过时了。
2)activity.getPreferences(int mode) 返回一个SharedPreferences对象,获得的对象只能在该activity中使用,其中保存的数据的文件名自动命名为该activity的name,例如MainActivity.xml。
2.从SharedPreferences中保存数据和取数据。
其中取数据可以直接使用sharedPreferences对象的getXXX()方法,如getInt(),getLong(),getString()等,参数为键值对的键.
保存数据则是先获取SharedPreferences的内部类Editor对象,这是一个编辑对象,然后使用 putXXX()方法,如putInt(),putLong(),putString()等,参数分别为键值对的键和值,最后需要注意的是数据必须使用commit()或apply方法,才能成功保存。
eg:
SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);
SharedPreferences.Editor editor = sp.editor();
editor.putString("name","Tom");
editor.putInt("age",13);
editor.commit();
----------------------------------------------------------------------------------------
String name = sp.getString("name",null);
int age = sp.getInt("age",-1);
未完,待续。