释放附加到ImageView的位图

Nic*_*ise 1 android xamarin.android

我有一个基本活动(SherlockActivity子类),它加载的视图有一个最大尺寸的ImageView.

<LinearLayout xmlns:p1="http://schemas.android.com/apk/res/android"
    p1:orientation="vertical"
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:layout_width="fill_parent"
    p1:layout_height="fill_parent"
    p1:id="@+id/linearLayout1">
    <ImageView
        p1:src="@android:drawable/ic_menu_gallery"
        p1:layout_width="fill_parent"
        p1:layout_height="fill_parent"
        p1:id="@+id/imageView"
        p1:scaleType="fitCenter" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Activity唯一做的就是加载一个Bitmap并将其分配给ImageView

var iv = FindViewById<ImageView>(Resource.Id.imageView);
iv.SetBitmapImage(BitmapFactory.decodeFile(file....))
Run Code Online (Sandbox Code Playgroud)

在我研究如何在加载时调整位图大小(http://developer.android.com/training/displaying-bitmaps/load-bitmap.html)之前,每次加载活动时都会占用5MB的内存,直到app坠毁(现在没有,但我认为这个问题仍然存在).即使我这样做了:

  • 在父活动中,点击按钮打开孩子
  • 在孩子(上面的图像视图)中点按
  • 在父母,开放的孩子
  • 在孩子,点击回来
  • 等等,直到它崩溃(大约4次左右,因为它每次5MB!)

实际问题:当活动停止或被销毁时,我是否应该处理图像?我认为在Java中 - 或者C# - 事情是GC的,所以我不需要这样做.我在Activity生命周期中遗漏了什么?

两个答案的作者最终得出了正确的答案(GC做到了,但是你可以用循环()强制它.所以标记纠正在答案中有它的那个,所以它更容易找到其他人