Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 释放附加到ImageView的位图_Android_Xamarin.android - Fatal编程技术网

Android 释放附加到ImageView的位图

Android 释放附加到ImageView的位图,android,xamarin.android,Android,Xamarin.android,我有一个基本的activity 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:l

我有一个基本的activity 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>
活动所做的唯一事情就是加载位图并将其分配给ImageView

var iv = FindViewById<ImageView>(Resource.Id.imageView);
iv.SetBitmapImage(BitmapFactory.decodeFile(file....))
在我研究如何在加载时调整位图大小之前,每次加载活动都会占用5MB的内存,直到应用程序崩溃,但现在没有,但我认为这个问题仍然存在。即使我这样做:

在父活动中,点击按钮打开子活动 在上面的图像视图中,点击后退 在父级中,打开子级 在child中,轻按back 等等,直到它崩溃4次左右,因为它是5MB的每一次! 因此,实际的问题是:当活动停止或被销毁时,是否希望我处理该映像?我认为在Java或C语言中,东西是GC'ed的,所以我不需要这样做。我是否在活动生命周期中遗漏了什么


两位答案的作者最终都给出了正确的答案,GC会这样做,但是你可以通过回收来强制它。因此,标记正确答案中包含它的一个,以便更容易为其他人找到加载大位图可能会导致OutOfMemoryError。在将图像加载到应用程序之前,您可以缩小图像的比例;这将消耗更少的内存。您可以在此处查看:

加载大型位图可能会导致OutOfMemoryError。在将图像加载到应用程序之前,您可以缩小图像的比例;这将消耗更少的内存。您可以查看此处:

尝试调用位图上的循环

尝试在位图上调用recycle


谢谢,但正如我说的:我已经解决了这个问题。这只是关于我是否需要释放位图。使用完位图后,可以将其设置为null。这就是我想要的答案:GC确实会清理它。理论上,我将保留位图的句柄并在顶部释放它。谢谢谢谢,但正如我说的:我已经解决了这个问题。这只是关于我是否需要释放位图。使用完位图后,可以将其设置为null。这就是我想要的答案:GC确实会清理它。理论上,我将保留位图的句柄并在顶部释放它。谢谢是的,那是选项2。我想知道我是否真的需要这样做,或者GC只是清理它,也许它没有时间清理它?是的,到目前为止我找到的所有文档都说,如果你愿意,可以打电话给它,但GC无论如何都会为你做…@NicWise,唯一的文档是官方文档。你在说什么文件?是的,那是选项2。我想知道我是否真的需要这样做,或者GC只是清理它,也许它没有时间清理它?是的,到目前为止我找到的所有文档都说,如果你愿意,可以打电话给它,但GC无论如何都会为你做…@NicWise,唯一的文档是官方文档。你在说什么文件?