更改ImageView的src时的内存管理

时间:2014-07-07 19:22:57

标签: android memory-management bitmap imageview

我还是Android的新手,在我以前的经历中从来没有处理过内存管理问题 在我的Android应用程序中,我有一个带有TextView,ListView和ImageView的活动。我有textview和listview的监听器,以及改变所有这三个视图中内容的代码。内容存储在arraylist中。 ImageView的源代码以String(文件名)的形式存储,进行更改的代码如下所示:

        tv1.setText(myText);
        imgView.setImageResource(myImage);

这非常有效,而我只有一些图像来测试逻辑,但是一旦我添加了更多图像,我就开始出现OutOfMemory错误。如果我将图像缩小,我会在稍后的过程中得到该错误,但我仍然可以得到它 起初,我认为Android不会释放以前的源代码,因此我认为在重新分配之前使用recycle()会有所帮助。相反,当我尝试更改源时,我又遇到了另一个错误:

  

无法绘制回收的位图

看起来我错过了一些关于ImageView如何处理源图像的重要理解。它是否分配位图引用然后保留相同的引用,但以某种方式更改内容?

然后,在阅读this文章后,我意识到我有一个完全不同的问题,可以通过使用inBitmap来解决。然而,文档说位图必须与此相同,而我的不是 我正在考虑将我的drawable转换为位图,然后将其缩放到一些硬编码的维度,然后使用inBitmap。我想我的第二个问题是 - 这种方法有意义吗?缩放图像是否有任何不足之处?当然,任何例子都会受到赞赏。 谢谢!

0 个答案:

没有答案