今天,简单讲讲android如何优化使用SharedPreferences保存数据。

之前,我写代码是都是每次缓存一个键值对就commit一次,后来在完成看了看,发现应该是缓存完所有键值对后,再一次性存入比较好。这里记录一下。

SharedPreferences作为Android存储数据方式之一,主要特点是:
1. 只支持Java基本数据类型,不支持自定义数据类型;
2. 应用内数据共享
3. 使用简单

之前的使用方法

1、存数据

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
sp.edit().putString("name", "小张").putInt("age", 11).commit();
sp.edit().putString("name", "小李").putInt("age", 12).commit();

这样每次都会创建新的Editor ,而且都次写入文件,效率比较低

优化后的使用方法

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("name", "小张");
editor.putInt("age", 11);
editor.commit();

这里当所有键值对缓存后,才一次性写入文件,效率比之前的好。

切记不要写成下面的形式,会导致数据无法存储

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
sp.edit().putString("name", "小张");
sp.edit().putInt("age", 11);
sp.edit().commit();

为什么这种方式无法存储,因为sp.edit()每次都会返回一个新的Editor对象,Editor的实现类EditorImpl里面会有一个缓存的Map,最后commit的时候先将缓存里面的Map写入内存中的Map,然后将内存中的Map写进XML文件中。使用上面的方式commit,由于sp.edit()又重新返回了一个新的Editor对象,缓存中的Map是空的,所以导致数据无法被存储。

android SharedPreferences的使用优化就讲完了。

就这么简单。



android SharedPreferences的使用优化相关推荐

  1. Android SharedPreferences总结及优化

    一.SharedPreferences简介 Android 中的 SharedPreferences(后续简称SP)是轻量级的数据存储方式,能够保存简单的数据类型,比如 String.int.bool ...

  2. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  3. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    文章目录 一. 背景设置产生的过度绘制 二. Android 系统的渲染优化 1. 透明组件数据传递 2. GPU 存储机制 3. Android 7.0 之后的优化机制 三. 自定义布局渲染优化 一 ...

  4. android系统电量优化,基于Android系统网络耗电量优化方法的.pdf

    基于Android系统网络耗电量优化方法的 2012年第10期,第 45卷 通 信 技 术 Vol.45,No.10,2012 总第250期 Communications Technology No. ...

  5. Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题

    一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...

  6. android SharedPreferences数据存储

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

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

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

  8. android sharedpreferences工具类

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

  9. android SharedPreferences保存list数据

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

最新文章

  1. 第十六周程序阅读(5)
  2. spring自定义标签实现
  3. 设计模式(24)-----责任链模式
  4. Refactor?or Patching?
  5. 心理学专业转用户体验_用心理学设计奇妙的用户体验
  6. gem install sass 本地配置和淘宝源无效的解决办法
  7. 漫步数学分析二十四——连续函数空间
  8. c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
  9. factorymenu什么意思_宏基20lsquo;显示屏AUTO和MENU是什么意思,在什么位置_已解决 - 阿里巴巴生意经...
  10. L2-024. 部落-PAT团体程序设计天梯赛GPLT
  11. TensorFlow基础篇(一)——tf.train.exponential_decay()
  12. 图片旋转,拖拽,缩放,删除一体
  13. 北京长途汽车站一览表
  14. 从家庭主妇到格力老总,董明珠的大女主逆袭之路
  15. UI设计中图标设计的有几大原则
  16. RabbitMQ核心功能介绍
  17. 如何改善睡眠状态?建议你尝试这些方法和好物
  18. OpenGL-曲面细分
  19. 四十四、​Fluent 收敛标准-质量和能量守恒
  20. Python中的对日期时间的处理

热门文章

  1. 会使用基本的Render函数后,就会想,这怎么用 v-for/v-if/v-model;我写个vue Render函数进阶...
  2. 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。...
  3. Oracle Spatial分区应用研究之一:分区与分表查询性能对比
  4. Nodejs学习事件模块
  5. 带有静态方法的类(java中的math类)
  6. Java8 時間API
  7. python3 getopt用法
  8. redis hash
  9. toLua关于委托没有注册的解决方案
  10. 【BZOJ 3229】 3229: [Sdoi2008]石子合并 (GarsiaWachs算法)