我正在设计一个应用程序,该应用程序必须处理来自服务器的大尺寸的大量位图。有解码的方法
选项1:
选项2
使用选项1,我们需要两次下载位图,而与选项2一样,我们必须显式回收原始大小的位图,这将触发垃圾回收,这是CPU密集的操作。
还有其他方法可以有效地实现这一目标吗?
选项3:
ps。选项2最终将使您的内存溢出。强烈不推荐。
尝试使用inJustDecodeBounds。将其设置为TRUE并按原样加载文件。
图像将不会加载到内存中。但是BitmapFactory.Options的outheight和outwidth属性将包含指定图像的实际大小参数。计算您要对它进行二次采样的数量。例如1/2或1/4或1/8等,并相应地将2/4/8等分配给inSampleSize。
现在将inJustDecodeBounds设置为FALSE,并调用BitmapFactory.decodeFile()以加载与上述计算的大小相同的图像。