本地缓存Web服务响应的最佳实践

时间:2013-07-11 03:07:12

标签: android android-asynctask

我使用来自Web服务的数据填充无限列表视图。获取数据是对应用程序发出的POST请求的响应。缓存此类数据的最佳做法是什么,以便每次用户只是在列表中向上和向下滚动时都不会进行网络调用? 谢谢!

3 个答案:

答案 0 :(得分:3)

查看LruCache课程,或者更好地查看Google开发的Android Volley框架。

答案 1 :(得分:0)

为了做到这一点,我在网络请求层添加了一个缓存方案,以使缓存对API调用者透明。缓存每x分钟到期。缓存使用SharedPreferences保留,以便在应用重新启动时可用。例如,API调用可能是:

List<Item> items = server.getListItems(int page);

在getListItems()内部,检查缓存以查看是否存在有效缓存。如果是这样,您将返回缓存中的项目,否则您将进行网络呼叫。

实际上API有点复杂,因为它支持立即返回过期的缓存,然后在新结果返回时进行网络调用和更新:

server.getListItems(int page, new ResultListener<List<Item>>() {
    public void onResult(List<Item> items) {
        ...
    }
});

在此方案中,当缓存过期的onResult()将被调用两次 - 一次使用过期缓存,一次使用新结果。

祝你好运!

答案 2 :(得分:0)

试试Picasso。另一个强大的图像下载和广场缓存库。 它为您提供有关缓存的所有功能。但是,如果您仍然使用LruCache,请考虑为您的应用分配特殊数量的内存。否则你的应用程序将导致内存崩溃。