对于我的Android应用,我希望尽可能降低网络流量(当然)。 我知道HttpResponseCache,但它仅适用于API> = 13,所以它不适合我。
我想到使用LruCache,使用REST
Url作为密钥(给定没有POST
数据)。
当我从服务器(JSON
)收到回复时,我立即使用Gson
从中创建POJO。
最好用什么作为价值? JSON
字符串,然后使用Gson
再次反序列化或存储POJO
s?我知道反序列化占用了一点cpu时间,但是将POJO
存储在缓存中可能存在缺点吗?
假设我有一个活动,它会显示名为“产品”的POJO
内容(我从服务器获取JSON
)。关于方向更改,我可以忘记保留产品POJO
(通过savedInstanceState
或其他),因为再次检索它的网络调用很可能是“免费”的(因为它仍然在缓存中) )?
为不同类型的对象设置单独的缓存或仅使用一个大缓存会更好吗?
有关如何确定缓存的良好大小的任何建议(MiB
或只是条目数)
答案 0 :(得分:2)
一个好的开始是Virgil Dobjanschi的Google I / O 2010关于Android的RESTful模式的讨论:http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html
简而言之,他主张使用SQLite来跟踪HTTP请求的状态并缓存数据以最小化请求。我找到了一个示例实现here,但您可能想要搜索有关该演讲中概述的模式的更多资源。
自从最初回答这个问题以来,已经出现了几个用于处理缓存HTTP请求的Android开源源代码库。 OkHttp和Volley是两个可靠的选项。