编写PreferencesUtils工具类可以简单对象(可以缓存对象中所有public的简单属性)

 
另外研究了Preference存储与直接采用对象文件缓存方式的区别
第一次写文件时
1、效率,直接缓存对象文件比Preference快
2、大小,直接缓存对象文件比Preference文件小
3、缓存目录不同,Preference缓存在shared_prefs下,对象文件则根据我们的设置可以选择目录
在设置中有两个操作
清除缓存:会将data/应用程序/caches目录下的文件删除
清除数据:会将除lib目录下的所有文件删除,包括shared_prefs
 
意味着,如果我们缓存对象文件时选择的目录不是caches下,采用files或其它目录,其与preference这仅有的劣势也消失了
 
为什么Preference操作比对象流慢,文件大。本质上都是读写文件操作,但是Preference采用的是xml形式存储,这就意味着有多余的节点和多余的转换。
 
第二次加载的时候由于SharedPreferencesImpl 在ContextImpl中采取了Map对SharedPreferenceImpl进行缓存,所以它会表现得非常快。
 
接下来要讨论的就是SharedPreference的存储原理,看看其缓存机制是否适合经常更改的内容的对象。
 
源码下载地址:https://github.com/AltasT/PreferenceVObjectFile
https://github.com/AltasT/PreferenceVObjectFile/archive/master.zip
 
https://github.com/AltasT/PreferenceVObjectFile
http://blog.csdn.net/wxyyxc1992/article/details/17222841

使用SharedPreference和对象流存储对象的更多相关文章

  1. java --对象流与对象的序列化

    对象流 ObjectInputStream ObjectOutputStream类分别是InputStream和OutputStream的子类,对象输出流使用writeObject(Object ob ...

  2. Java对象流的使用

    为了让对象持久化(把对象存储到本地),可以使用java的对象流处理对象,把对象的内容写到本地存储的文件中,也可以从本地文件中读取出来.也就是常说的序列化和反序列化 主要用到了ObjectInputSt ...

  3. 动车上的书摘-java对象流与序列化

    摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 钢笔不限贵便宜,书法是来自心对手的交流.-泥沙砖瓦浆木匠 一.对 ...

  4. IO Streams:对象流

    简介 正如数据流支持原始数据类型的I / O一样,对象流支持对象的I / O.标准类中的大多数但不是全部都支持对象的序列化.那些实现标记接口Serializable的那些. 对象流类是ObjectIn ...

  5. 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...

  6. COM结构化存储中存储对象或者流对象的命名规则

      COM结构化存储中存储对象或者流对象的命名规则

  7. Java IO7:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...

  8. I/O 流和对象序列化

    一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指 ...

  9. java 存储对象

    一.存储区域: 1)寄存器.这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何 ...

随机推荐

  1. HDU-2087-剪花布条 【KMP】(求模式串的匹配个数——与已匹配的字串不交)

    题目链接:https://vjudge.net/contest/220679#problem/C 剪花布条                                               ...

  2. .NET Core中使用Docker

    一.Docker简介 Docker是基于Linux容器技术(LXC),使用Go语言实现的开源项目,诞生于2013年,遵循Apache2.0协议.Docker自开源后,受到广泛的关注和讨论. Docke ...

  3. 在docker中运行mysql实例

    Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.下图是容器跟虚拟机的对比 对docker有个大致了解,学习docker断断续续,虽说学习不能急于求成,但断断续续学的话,浪费的碎片化 ...

  4. unity3d 给游戏添加音源 Unity3d adds a sound source to the game

    unity3d 给游戏添加音源 Unity3d adds a sound source to the game   作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:3131345 ...

  5. DataGridView 绑定数据问题及修改值交换列

  6. Restrictions查询用法

    HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <>  Restrictions.ne() 不等于not equal >  Restrict ...

  7. 4712: 洪水 基于链分治的动态DP

    国际惯例的题面:看起来很神的样子......如果我说这是动态DP的板子题你敢信?基于链分治的动态DP?说人话,就是树链剖分线段树维护DP.既然是DP,那就先得有转移方程.我们令f[i]表示让i子树中的 ...

  8. BZOJ.2177.曼哈顿最小生成树(Kruskal)

    \(Solution\) 参考 对于每个点,向唯一有可能与它形成MST的8个点连边,由于是双向单边,所以每个点最多连出4条边(证明见blog) 怎么找到一个区域内最近的点? 只考虑y轴右侧45°的区域 ...

  9. Python3绘图库Matplotlib(01)

    1 First plots with Matplotlib 简单的绘图1 简单的绘图2 简单的绘图3 2 网格 = grid 3 设置坐标轴的取值范围 = axis xlim ylim 方法1:整体设 ...

  10. Python3练习题系列(08)——代码阅读方法及字典跳转表理解

    问题:分析下面代码 cities['_find'] = find_city city_found = cities['_find'](cities, state) 分析过程: 一个函数也可以作为一个变 ...