我正在寻找一个库或一些关于如何将图像从磁盘或 url 直接加载到磁盘然后部分再加载到 ram 的想法。所以我看到可以做到的两种方法是将整个图像加载到磁盘上,方法是直接从 url 读取和写入它,只使用内存作为缓冲区,然后当图像在磁盘上时,如何创建仅部分的位图的图像,这样我就不会全部加载并将它们放在ListView
.
问题是我正在处理极长的图像(10K + 像素长,宽度为 4-600),如果全部加载到一个位图中,它们会占用大量内存。我不能像 Google android 教程在处理大型位图部分中那样缩小它们,因为这会导致宽度太小而无法处理。因此,如果我能以某种方式在磁盘上生成小的位图碎片,我可以通过将它们加载到ListView
防止将图像作为一个整体加载到内存中来使用它们。
现在我正在将长图像从位图中分解成碎片,我意识到这并没有真正完成我想要做的事情,因为整个图像被加载到内存中的位图中然后被分解,然后是 GC(所以无论如何,我正在用完全部的内存)。我正在新的顶级 android 手机上进行测试,该应用程序运行良好,但堆大小达到 80mb+,较大的图像暂时在 ram 中,因为它破坏了位图,这将是具有较低堆限制的设备的问题