繁体   English   中英

什么会导致Android ImageView部分解码?

[英]What would cause an Android ImageView to partially decode?

我试图找出一个我只能解释的错误,就好像我的ImageView中的图像未完全解码一样-我看到了图像的顶部,但其余图像却绘制为纯白色。 我连接了调试器,但是看不到任何错误消息输出,例如内存限制。 这是我的活动的部分屏幕截图:

问题

我将一系列ImageView彼此叠加,就像一叠纸牌。 这是屏幕截图的注释,因此您可以了解为什么这是错误的:

注解

如果旋转设备具有重新运行onCreate的效果,则ImageView会正确绘制。 我正在使用Square的picasso库来管理下载和解码。 我在文件系统中检查了代表图像的文件本身,该文件正常且已完全下载。

我似乎能够每10次左右重复1次这种行为,这足以给我的用户带来问题。

谁能说出为什么会这样吗? 我批评的设备是运行Android L的Nexus 5,但我也在同事的设备上看到了这一点,该设备在Samsung Galaxy 4上运行Android KitKat。

作为记录,我正在运行Picasso 2.4.0(自2015年1月20日起是Picasso的一个分支)。

经过进一步审查,这是该主题德语注释

我用NetworkRequestHandler.java中的以下代码修复了...当网络断开时,我认为它将解码一半的照片

当我在测试服务器上返回一部分JPEG图像而不是整个JPEG图像时,我能够100%修复此问题。 似乎仅返回一部分数据的断开的HTTP连接(或错误的文件服务器)触发了此问题。 我使用插入Picasso的自定义网络库(而不是okhttp ),并且仅修改了该库以确保文件长度与服务器报告的内容长度匹配,然后再存储和解码文件。

毕加索的这篇文章描述了我一直在经历的事情:

我得到一半的照片和一半的白色,有时我只会得到白色。 #836

线程中的一位评论者说:

删除android:scaleType属性并检查是否仍然存在错误...从自定义ImageView中删除scaleType属性并在可靠的毕加索中使用fit()方法时,通常不会出现该错误。

事实证明,实际上我在要加载到的imageView上包括了“ centerCrop”的“ scaleType”属性。 我已经删除了此属性,而.fit().centerCrop() ,此后再也没有看到此问题; 如果我会更新此线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM