使用SharedPreferences进行数据存储

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,

文件存放在/data/data/<package name>/shared_prefs目录下:

SharedPreferences sharedPreferences = getSharedPreferences("china", Context.MODE_PRIVATE);

Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("name", "中国");
editor.putInt("age", 4);
editor.commit();//提交修改
生成的china.xml文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">中国</string>
<int name="age" value="4" />
</map>
因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
 
访问SharedPreferences中的数据
 
访问SharedPreferences中的数据代码如下:
SharedPreferences sharedPreferences = getSharedPreferences("china", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
 
如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<package name>为cn.android.action的应用使用下面语句创建了preference。
getSharedPreferences("china", Context.MODE_WORLD_READABLE);
其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :
Context otherAppsContext = createPackageContext("cn.android.action", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 0);
 
如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile = new File(“/data/data/<package name>/shared_prefs/china.xml”);//<package name>应替换成应用的包名

最新文章

  1. Oracle数据加载之外部表的介绍
  2. 伙伴们休息啦canvas绘图夜空小屋
  3. XML Schema and XMLspy notes
  4. ubuntu下安装rpm 文件
  5. OSG+VS2010+win7环境搭建---OsgEarth编译
  6. 静态工具类中使用注解注入service
  7. postgreSQL数据库(索引、视图)
  8. [转]Creating Unit Tests for ASP.NET MVC Applications (C#)
  9. 终端编写c程序
  10. libsvn_subr-1.so.0: undefined symbol: apr_atomic_xchgptr 故障解决
  11. Effective Java 第三版——34. 使用枚举类型替代整型常量
  12. var 和 let 的异同?
  13. ACM-ICPC 2018 焦作赛区网络预赛 I Save the Room(水题)
  14. windows安装composer总结
  15. using 自动释放资源示例
  16. find the most comfortable road(hdu1598)不错的并查集
  17. 关于SQL注入,你应该知道的那些事
  18. unity3d抛物线的脚本
  19. sql将一张表的字段赋值给另一张表
  20. groovy对枚举的支持

热门文章

  1. C语言中的转义字符
  2. 如何在腾讯云快速构建一个Wordpress个人站点
  3. javaweb2 URL(查找的过程)
  4. java 导入包
  5. servlet的配置和上下文
  6. BeautifulSoup 常用方法
  7. hdu----(4686)Arc of Dream(矩阵快速幂)
  8. HDUOJ-----(1162)Eddy&#39;s picture(最小生成树)
  9. 详细解读Jquery各Ajax函数
  10. thinkjs——空对象判断