这是我上一期提问的后续内容:Canvas is drawing too slowly
既然我可以更快地绘制图像,我面临的问题是图像的实际加载时间太长。
在我正在开发的应用程序中,用户可以连续播放视频帧(jpeg),就好像他正在实时观看视频一样。我一直在使用BitmapFactory.decodeFile()
在Bitmap中加载每个jpeg。我无法一次加载所有图像,因为它们大约有240个,这会占用我所有的堆空间。我一直在做的是通过一个单独的线程一次预加载最多6个数组,以减少每个图像显示所需的时间。
不幸的是,加载图像需要50到90毫秒,我需要每隔42毫秒显示一个图像。是否有更快的方式加载图像?
为了澄清,这些图像位于SD卡上的文件夹中,它们都是720x480 jpeg。我将它们的样本减半,以减少内存使用量。
答案 0 :(得分:1)
我最终做的与我原先设想的完全不同。它有很多,但这是我实现目标的要点:
通过这种方式,我只需要一次在内存中存储一个图像,并且我能够绕过垃圾收集(因为位图只创建一次,然后本地重新填充)。我希望其他人可能会发现这个策略很有用。
答案 1 :(得分:0)
猜猜你已经尝试了本教程http://www.higherpass.com/Android/Tutorials/Working-With-Images-In-Android/2/中的所有方法并选择了最快的方法。也许调整大小调整可以减少加载时间。
最重要的当然是,如果您根本不需要调整图像大小。如果您可以完全控制图像,也许可以尝试将它们打包为精灵,请参阅文章http://www.droidnova.com/2d-sprite-animation-in-android,471.html