之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的思考之后想到了SharedPreferences这个轻型的数据存储方式。

  SharedPreferences的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,用Sqlite数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率。其存储位置在/data/data/<包名>/shared_prefs目录下。

  另外SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

  使用SharedPreferences保存key-value对的步骤如下:

  (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定,第二个参数指定访问应用程序私有文件的权限。

  (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。

  (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

  (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

                              存放数据信息,步骤如下:

  a、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

SharedPreferences userSettings = getSharedPreferences("setting", 0);

  b、让setting处于编辑状态

SharedPreferences.Editor editor = userSettings.edit();

  c、存放数据

editor.putString("name","ATAAW");
editor.putString("URL","ATAAW.COM");

  d、完成提交

editor.commit();

                              读取数据信息,步骤如下:

  a、获取Preferences

SharedPreferences userSettings= getSharedPreferences("setting", 0);

  b、取出数据

String name = userSettings.getString("name","默认值");
String url = userSettings.getString("URL","default");

  以上就是Android中SharedPreferences的具体使用方法。

  注意:只顾着说存取的方法了,补充一点哈,那就是删除和清空操作,如下:

  a、清除指定数据

SharedPreferences.Editor editor = userSettings.edit();
editor.remove("KEY");
editor.commit();

  b、清空数据

SharedPreferences.Editor editor = userSettings.edit();
editor.clear();
editor.commit();

  注意:如果在 Fragment 中使用SharedPreferences 时,需要放在onAttach(Activity activity)里面进行SharedPreferences 的初始化,否则会报空指针 即 getActivity()会可能返回null !

android SharedPreferences的用法相关推荐

  1. Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)(转载)

    SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在" ...

  2. Android之Adapter用法总结

    本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处. Android之Adapter用法总结 作者:Devin Zhang  来源:博客园  发布时间:2012 ...

  3. Android的Adapter用法总结

    Android之Adapter用法总结 1.Adapter概念   定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.   在androi ...

  4. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  5. android SharedPreferences数据存储

    android  SharedPreferences数据存储 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存 ...

  6. android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家

    Android  SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Ac ...

  7. android sharedpreferences工具类

    今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...

  8. android SharedPreferences的使用优化

    今天,简单讲讲android如何优化使用SharedPreferences保存数据. 之前,我写代码是都是每次缓存一个键值对就commit一次,后来在完成看了看,发现应该是缓存完所有键值对后,再一次性 ...

  9. android SharedPreferences保存list数据

    今天,简单讲讲如何使用  SharedPreferences保存list数据. 网上找了很多资料,还是觉得这种比较简单.直接上代码: 保存: public static boolean saveA ...

最新文章

  1. c++新特性11 (9)智能指针一”_Compressed_pair类“
  2. Source Insight中的多行注释
  3. SAP Commerce Accelerator从2005升级到2011的步骤
  4. 码云上传代码添加标签_[Android] 发布码云(Gitee)项目到JitPack(最全完整流程)
  5. 【编译原理】为什么编程语言中,标识符不能以数字开头?
  6. 安装 paddleocr 报错 gcc: error trying to exec ‘cc1‘: execvp: 没有那个文件或目录
  7. html留言板 php,linux下使用Apache+php实现留言板功能的网站
  8. 2.Eclipse上mysql插件配置及远程连接云数据库测试
  9. php 静态 成员属性,[已解决]php中静态成员方法和静态成员变量是不是不支持多态?...
  10. 第九届蓝桥杯C++B组
  11. 华为前员工李洪元:我的诉求只有见任总能解决;音悦台被传倒闭;.NET Core 3.1 发布 | 极客头条...
  12. 【BUG解析】调用PagerAdapter.notifyDataSetChanged()不更新
  13. plsql查询无结果集_何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督...
  14. json规范,平时不注意的特殊符号
  15. html商城网站模板
  16. 对其他小组的评价和建议
  17. 阿里云快照如何恢复到另外一台服务器
  18. 互联网晚报 | 12月30日 星期四 | 百度网盘青春版正式上线;汽车之家回应“年底大裁员”;A股年内成交额创历史新高...
  19. 7个最好的Java机器学习开发库
  20. day07面向对象复习+课后练习

热门文章

  1. 附件中可能包含对计算机有害的病毒.附件可能无法正确显示,广西成人高校计算机实用基础统考理论试题(A卷)...
  2. js php 时间格式化字符串,JS怎么实现字符串与日期的互相转换及日期的格式化
  3. CASE_02 基于FPGA的数字钟万年历
  4. 卸载小鲁温度监控有影响吗_通过中央控制器和远程监控优化能源效率
  5. PHP陈明忠_《PHP网站开发案例教程》习题答案
  6. python3接口自动化测试_【python3+request】python3+requests接口自动化测试框架实例详解教程...
  7. 天骄2 mysql错误_凤舞天骄一键版和钟隐3合1版的大多数问题解决方案
  8. 网络安全09_部署Windows XP、Windows Server 2003、Windows server 2008、Windows 7 每个虚拟机各两台(2)
  9. matlab求解多项式系数,C++和MATLAB混合编程求解多项式系数(矩阵相除)
  10. ipython和python怎么用_如何使用IPython重新加载和自动加载?