一、Shared Preferences简介
SharedPreferences是Android系统提供的一个轻量级的存储类,主要用于保存一些配置信息,比如窗口状态,还有一切其它无关紧要的配置,每次都即拿即用的数据。注意不能用于存储敏感信息,因为它是暴露的(不安全的,当然也可以使用权限来控制,但不提倡)。
SharedPreferences使用键值的形式来存储数据,可以对常用数据类型boolean、float、int、long以及String进行保存。保存的数据以xml文件的形式存储在/data/data/<包名>/shared_prefs目录下。
二、使用Shared Preferences擦写数据
使用Shared Preferences存储数据可以通过以下3个步骤来实现:
(1)使用Context类提供的getSharedPreferences()方法,获取SharedPreferences对象。getSharedPreferences()方法的原型如下:
public abstract SharedPreferences getSharedPreferences(String name, int mode);
其中,参数name表示存储数据的文件名。有一点需要注意的是,此处只是定义了该文件名,如果曾经没有创建过该文件,那么此刻也不会马上被创建,该文件只有当创建了SharedPreferences.Edit对象并使用该对象的commit()方法提交数据时,才会被创建。总的来说,此步骤就是在准备参数。
参数mode用于指定文件的操作模式,其可选值有Context.MODE_APPEND(内容追加模式)、Context.MODE_PRIVATE(默认操作模式)、Context.MODE_WORLD_READABLE(可读模式)、Context.MODE_WORLD_WRITEABLE(可写模式)四种:
Context.MODE_APPEND;//内容追加模式。在该模式下,系统会检查文件是否存在,如果存在,则将内容追加到文件的末尾,如果文件不存在,则创建该文件并写入内容。
Context.MODE_PRIVATE;//默认操作模式。在该模式下,文件作为私有数据,只能被该应用程序本身访问。并且,在该模式下,写入的内容会覆盖原文件的内容。这种方式也是最普遍的一种方式。
Context.MODE_WORLD_READABLE;//可读模式。在该模式下,别的应用程序可以读取该文件内容。
Context.MODE_WORLD_WRITEABLE;//可写模式。在该模式下,别的应用程序可以将内容写入该文件。
(2)使用SharedPreferences对象的edit()方法创建SharedPreferences.Edit对象。使用Shared Preferences方式存储数据时需要借助SharedPreferences.Edit类提供的方法来添加数据。SharedPreferences.Edit类提供的方法包括putString()、putInt()、putDouble()等,参数均为键、值。
此步就是获得Edit对象:SharedPreferences.Editor edit = sharedPreferences.edit();
然后edit.putXXX(" ",XXX); 储存数据,或者edit.remove("键")删除某个数据,或者edit.clear()清除全部数据。所有的数据擦写操作用的都是edit对象的方法。
(3)使用commit()方法提交数据。
成功返回true,失败返回false.
示例:
boolean isSaveDataSuccess = false;
SharedPreferences sharedPreferences = this.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("userName", "admin");
isSaveDataSuccess = edit.commit();
二、使用Shared Preferences读取数据
//第一个参数为文件名
SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
//第二个参数为读取时失败返回的值
String userName = sharedPreferences.getString("userName", "null");
三、其它获取Shared Preferences的方法
一、PreferenceManager.getDefaultSharedPreferences():顾名思义,获取全局变量的Preferences,也就是PreferenceActivity生成的Preference;(什么是PreferenceActivity?查看此处http://blog.csdn.net/plussoft/article/details/9993759)
二、getPreferences():可以获取当前Activity中的preference,这个方法我没用过(主要是没搞懂);
以上部分内容转载或参考来源如下:
http://www.cnblogs.com/menlsh/archive/2013/04/07/3006510.html在此表示感谢。
转载请注明来源,版权归原作者所有,未经同意严禁用于任何商业用途。
微博:http://weibo.com/theworldsong
邮箱:theworldsong@foxmail.com