SharedPreference是一种比较适合少量数据的存储方式,类似于HashMap,采用的键-值得关系,使用起来非常非常的简单,并且还能够对数据的变动进行监控。
例如,一些默认欢迎语、登录的用户名和密码等。其以键值对的方式存储,使得我们可以很方便的读取和存入,
监控数据变动直接通过:
preference.registerOnSharedPreferenceChangeListener(this);
那么当你用editor.putString(key,value);将原来的key对应的value改变后,那么在
nces, String key)这个接口中可以对这个时间进行监控.
onSharedPreferenceChanged(SharedPreferences sharedPrefer e
我们可以通过[getXXX]函数,从SharedPreferences中读取不同类型的内容,例如,上面我们使用的是[getString]读取String类型的内容。
存储数据:
//通过Activity自带的getSharedPreferences方法,得到SharedPreferences对象 //第一个参数表示保存后 xml 文件的名称(底层实现是将数据保存到xml文档中)。 //第二个参数表示xml文档的权限为私有,并且重新写的数据会覆盖掉原来的数据 SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE); //通过preferences得到它的编辑器对象edit Editor edit = preferences.edit(); //通过编辑器将name属性和对应的nameText中输入的值写入到xml文档中 edit.putString("name", nameText.getText().toString()); //通过编辑器将age属性和对应的ageText中输入的值写入到xml文档中 String ageStr = ageText.getText().toString(); if(ageStr != null || "".equals(ageStr.trim())) edit.putInt("age", new Integer(ageStr)); //添加数据完成后,提交编辑器的添加操作 edit.commit();获取数据:
注: 其它应用调用此参数文件:
//创建需要调用的参数保存文件应用的Context
//第一参数为保存文件所存在的包名
//第二个参数表示 忽略安全级别
//注: 这里的 this.getContext()是得到当前应用的上下文,因为本测试环境是继承 AndroidTestCase ,如果在Activity中可以直接使用createPackageContext方法
Context context = this.getContext().createPackageContext("cn.android.preference", this.getContext().CONTEXT_IGNORE_SECURITY);
//通过创建的context得到preferences对象
SharedPreferences preferences = context.getSharedPreferences("user", context.MODE_WORLD_READABLE);
//通过对象取得文件里面的值,也可以写入,这里就不再测试了
String name = preferences.getString("name", "abc");
//将得到的值方在日志中,以便看程序是否正确执行
Log.e("TestSharedPreferenceParser",name);
/** 需要注意的是:此文件在被其它应用读取的时候,其权限必须包含 context.MODE_WORLD_READABLE,否则无法找到 */