Android 更改ImageView的src时的内存管理

Android 更改ImageView的src时的内存管理,android,memory-management,bitmap,imageview,Android,Memory Management,Bitmap,Imageview,我还是Android新手,在我之前的经验中,我从未处理过内存管理。 在我的android应用程序中,我有一个带有TextView、ListView和ImageView的活动。我有textview和listview的监听器,还有更改这三个视图内容的代码。内容存储在arraylist中。ImageView的源以字符串(文件名)的形式存储,进行更改的代码如下所示: tv1.setText(myText); imgView.setImageResource(myImage

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

        tv1.setText(myText);
        imgView.setImageResource(myImage);
虽然我只有几张图片来测试逻辑,但当我添加了更多图片后,我开始发现OutOfMemory错误。如果我将图像缩小,我会在稍后的过程中得到该错误,但我仍然会得到它。
起初,我认为Android不会发布以前的源代码,所以我认为在重新分配之前使用recycle()会有所帮助。相反,我在尝试更改源时遇到另一个错误:

无法绘制回收的位图

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

然后,在读了这篇文章之后,我意识到我有一个完全不同的问题,一个可以通过使用inBitmap解决的问题。然而,文档中说位图的大小必须相同,而我的则不然。
我正在考虑将我的可绘制位图转换为位图,然后将其缩放到一些硬编码的维度,然后使用inBitmap。我想我的第二个问题是——这种方法有意义吗?在缩放图像时是否有任何下降?当然,任何例子都将不胜感激。 谢谢大家!