Cache-Control扩展

2017-05-08

rfc5861 定义了两个 Cache-Control 的扩展:

  1. stale-while-revalidate
  2. stale-if-error

这是两个扩展都是用来定义缓存过期(stale)后的处理策略,旨在提高用户体验,不过两者是独立使用,并无关联的。

Read More

aar依赖

2017-05-07

问题记录。

今天添加 aar 依赖之后,一直提示找不到 aar 中的定义类,然后发现甚至都没有生成 build/intermediates/exploded-aar 文件夹,原因就是新的 as 版本添加了 aar 缓存,在 .android/build-cache 中,手工添加或者更新 aar 文件之后,缓存并没有刷新,因此导致找不到类或者其他类似问题。

Read More

Pool in Android (0)

2017-03-21

在应用开发中,在某些场景下,需要频繁重复创建某种对象来传递消息或者执行操作,在使用完之后又随即废弃。在这种情况下,会对系统性能造成一定的影响,特别是存在以下特征时:

  1. 对象频繁创建但是只需要短暂使用
  2. 对象的创建代价比较高。

比较典型的例子比如 Android 里面的 MotionEvent, 每次触发屏幕...

Read More

缓存设计(1)

2017-03-17

在程序设计中,设计良好的缓存可以避免无意义的重复计算,节省可观的计算资源,从而提高性能。 不过同时,缓存一样要消耗资源,过大的内存一样会造成空间资源的浪费。这些方方面面都是在设计缓存的时候需要考虑的事情。

本文主要关注如何设计一个良好运行,线程安全的缓存方案。

简单实现

一个简单缓存方案的实现如下:

Read More

Gson解析复杂数据

2017-02-17

本文主要关注所解析的 JSON 对象与已定义的 java 对象结构不匹配的情况,解决方案就是使用 JsonDeserializer 来自定义从 JSON 对象到 Java 对象的映射。

一个简单的例子

有如下 JSON 对象,表示一本书的基本信息,本书有两个作者。

Read More

Cupboard非官方翻译

2017-02-07

Cupboard 是一个适用于 Android 的持久化存储方案,简单而且容易与现有代码集成。

更准确的说, Cupboard 只是一个存取对象方案。为了保简洁,它并不会去维护对象之间的关系,所以也并不是一个真正的ORM。

设计理念

设计 Cupboard 是因为现有的持久化框架并不能满足实际的需求,我们真正想要的是...

Read More

chrome缓存设置

2016-12-18

使用浏览器调试 http 缓存头的时候,有一些需要注意的地方。一个显著的问题是刷新(F5)或者地址栏输入网址方式(Enter)访问页面,所有请求都会自动设置 Cache-Control:max-age=0。 如果是强制刷新(SHIFT + F5)的方式,所有请求都会自动设置 Cache-Control:no-cache。

另外,控制台(Network)也有一个 “dis...

Read More