我使用来自Web服务的数据填充无限列表视图。获取数据是对应用程序发出的POST请求的响应。缓存此类数据的最佳做法是什么,以便每次用户只是在列表中向上和向下滚动时都不会进行网络调用? 谢谢!
答案 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,请考虑为您的应用分配特殊数量的内存。否则你的应用程序将导致内存崩溃。