如何最佳地修复基于磁盘的缓存大小?Android-Volley。

4

1) Android Volley 中基于磁盘的默认缓存实现分配了总共5MB的内存。

2) 但是我正在开发的应用包含大量的图片。因此,我想要增加分配给基于磁盘的缓存的内存大小。

3) 因此,我想要增加缓存的大小...我可以通过更改 Diskbasedcache.java 文件中 DEFAULT_DISK_USAGE_BYTES 的值来简单地实现它。

4) 但是,我想要根据磁盘上可用空间分配内存?有没有实现它的方法?

1个回答

4
关于Volley缓存的一些想法:
使用基于磁盘的L1缓存可能会导致I/O阻塞问题。Volley已经有一个隐式的磁盘L2缓存。BitmapLruImageCache是一种基本的“最近最少使用”内存缓存实现。它快速且不会阻塞I/O,这是推荐的方法。
我建议您尝试一下这个Volley L1缓存以进行调整大小。
要进行大小调整,请参考以下内容:
RequestQueue volleyQueue = Volley.newRequestQueue(this);
DiskBasedCache cache = new DiskBasedCache(getCacheDir(), 16 * 1024 * 1024);
volleyQueue = new RequestQueue(cache, new BasicNetwork(new HurlStack()));
volleyQueue.start();

参考文献:Volley缓存 其他有关Volley缓存的参考资料:http://www.jayway.com/2013/10/04/image-caching-with-volley/


嘿..抱歉我不太明白L1和L2缓存的区别..Diskbasedcache.java文件中的缓存是L1还是L2? - user2391218
@user2391218 如果你不想学习理论部分,可以使用我展示的代码或Volley缓存git链接! - LOG_TAG
16是最大的尺寸吗?@LOG_TAG - Sheychan
@scheychan 缓存目录没有每个应用程序的限制。更多信息请参见 https://dev59.com/pHI95IYBdhLWcg3wvgl9#2863141 - LOG_TAG
谢谢 @LOG_TAG,我认为这个答案有帮助。 - Sheychan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接