Android学习历程11-SharedPreferences介绍

来源:互联网 发布:159素食全餐淘宝好便宜 编辑:程序博客网 时间:2024/06/11 05:16

  软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息。SharedPreferences正是Android中用于实现这中存储方式的技术。
  SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下:

获取SharedPreferences的两种方式:

1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.

SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.

使用SharedPreferences保存数据方法如下:

//实例化SharedPreferences对象(第一步)   SharedPreferences mySharedPreferences= getSharedPreferences("test",   Activity.MODE_PRIVATE);   //实例化SharedPreferences.Editor对象(第二步)   SharedPreferences.Editor editor = mySharedPreferences.edit();   //用putString的方法保存数据   editor.putString("name", "Karl");   editor.putString("habit", "sleep");   //提交当前数据   editor.commit();   //使用toast信息提示框提示成功写入数据   Toast.makeText(this, "数据成功写入SharedPreferences!" , Toast.LENGTH_LONG).show();

使用SharedPreferences读取数据方法如下:

//同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象   SharedPreferencessharedPreferences= getSharedPreferences("test",   Activity.MODE_PRIVATE);   // 使用getString方法获得value,注意第2个参数是value的默认值   String name =sharedPreferences.getString("name", "");   String habit =sharedPreferences.getString("habit", "");   //使用toast信息提示框显示信息   Toast.makeText(this, "读取数据如下:"+"\n"+"name:" + name + "\n" + "habit:" + habit,   Toast.LENGTH_LONG).show();  

如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:

File xmlFile = new File(“/data/data//shared_prefs/itcast.xml”);//应替换成应用的包名

1 0
原创粉丝点击