1

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

4

3 回答 3

3

查看LruCache类,或者更好的是查看 Google 开发的Android Volley框架。

于 2013-07-11T03:17:18.673 回答
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() 将被调用两次——一次是过期的缓存,一次是新的结果。

祝你好运!

于 2013-07-11T03:22:51.187 回答
0

试试毕加索。另一个强大的图片下载和缓存库。它为你做所有关于缓存的事情。但是,如果您仍然使用 LruCache,请考虑为您的应用程序分配特殊数量的内存。否则你的应用会导致内存命中。

于 2014-09-12T07:53:56.633 回答