我是开发商业媒体应用的团队的一员。部分功能是允许用户自定义ImageView的ViewGroup蒙太奇,并使用从Gallery或直接从Camera检索自己的图像。我正在使用以下毕加索调用来做到这一点:
mPicasso.load(uri)
.resize(newWidth, newHeight)
.into(container);
其中mPicasso为Picasso.with(appContext())
,newWidth和newHeight是根据源高度和宽度计算的尺寸,以便保持纵横比并且生成的图像为1MP。通常情况下,来源介于8到16MP之间。
如果我有一个蒙太奇的说法,八个ImageViews,并且我继续依次添加图像,应用程序最终会崩溃。设备只有很多内存,对吧?最终,如果你不断添加无限的图像,你将会耗尽。然而,我真正担心的是,应用程序会在替换八个图像的过程中中途崩溃。要说清楚,你已经添加了你的八张图片,你已经回到顶部并开始用不同的图像替换这些图像,然后在崩溃之前大致达到第四张。
我原本预计,一旦更换了图像,旧的图像就会被清理掉。我可以通过将最大尺寸减小到100KP来解决这个问题,但问题是我想我只是推迟了崩溃。此外,用户可以放大图像,并且分辨率很低,它开始看起来非常快。
我在这里发布了崩溃日志: - https://gist.github.com/mylesbennett/452c992f6912039ea62d 因为在stackoverflow中直接粘贴它太长了。
非常感谢任何有关变通方法/解决方法等的建议。
(TemplateImageView.isScaleInitialised
中的崩溃点是应用程序尝试将内存分配给九值浮点数组的位置:
float[] values = new float[9];
所以我猜这只是打破骆驼背后的稻草)