背景
使用Volley库的NetworkImageView是处理从网络上显示图像的方便方式。
然而,它有一些错误(如我在这里所写)。
问题
使用它可能会遇到的问题之一是它不能以内存有效的方式解码来自网络的图像。
这意味着,如果您在其中使用带有多个NetworkImageView的gridView,并且每个视图显示具有未知分辨率的图像(可能很小,也可能很大),则最终会出现OOM。
例如,您可以将此对象的URL设置为此处,并自行查看应用程序在显示位图后使用的内存量与之前使用的内存量相比有多少。
问题
我该如何修改NetworkImageView解码位图的方式?
我可以改变的一种方法是,在缩小图像的同时解码它以达到所需的大小(或者至少将其最大值设置为屏幕大小),例如使用这种缩小的方法。
NetworkImageView
是一种基本的语法糖,用于以基本方式加载远程图像。如果您听主题演讲,您会看到 Ficus(首席开发人员)说NetworkImageView
基本上是“懒惰”的开发人员使用的(他的意思是好的)。这是一个很好的基本解决方案,但如果您需要特定的东西,您将不得不使用不同的机制。我会编辑我的答案并放一些示例。 - Itai Hanski