Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 如何清理位图资源_Android_Memory Management_Memory Leaks_Bitmap_Imageview - Fatal编程技术网

Android 如何清理位图资源

Android 如何清理位图资源,android,memory-management,memory-leaks,bitmap,imageview,Android,Memory Management,Memory Leaks,Bitmap,Imageview,我想问这个以前被问过几次的问题。很抱歉,如果我正在回复,但我不清楚这里的最佳解决方案是什么 问题是“如何在使用ImageView位图资源后清理它,以便在内存中没有对它的引用?” 以下是一个例子: 屏幕1重定向到屏幕2 屏幕2包含控件A(大照片预览) 控件A包含ImageView B 当控件A启动时,设置ImageView B 第一次一切正常。控制A完成后,我将从屏幕2重定向到屏幕1。此时,其使用的控件A、ImageView B或位图的所有引用都应该停止。他们不是 我尝试过各种解决方案,包括bit

我想问这个以前被问过几次的问题。很抱歉,如果我正在回复,但我不清楚这里的最佳解决方案是什么

问题是“如何在使用ImageView位图资源后清理它,以便在内存中没有对它的引用?”

以下是一个例子:

  • 屏幕1重定向到屏幕2
  • 屏幕2包含控件A(大照片预览)
  • 控件A包含ImageView B
  • 当控件A启动时,设置ImageView B
  • 第一次一切正常。控制A完成后,我将从屏幕2重定向到屏幕1。此时,其使用的控件A、ImageView B或位图的所有引用都应该停止。他们不是

    我尝试过各种解决方案,包括bitmap.recycle()、将finalize()添加到控件A、System.gs()和在不同位置(如onStop()和onDestroy())的置零控件,以及屏幕2上的所有其他解决方案,但都不起作用

    问题是,当我第二次重新访问屏幕时,从屏幕1转到屏幕2(即再次创建照片预览),我会出现内存异常。据我所知,上一个位图的引用未被清除

    我如何在重定向回屏幕1之前杀死它

    我注意到一件事。如果我缩小照片的尺寸,比如说裁剪或者缩小图片的尺寸,一切都会变得平滑,几次。。。在我收到同样的问题之前。所以基本上,它只是需要一点时间来填补


    我非常感谢您能提供一些解决方案,因为这非常关键。

    您可能有内存泄漏,本视频可能会帮助您找到问题所在


    注意:3.1版之前的位图存储在VM堆内存中,但存储在本机内存中,这会在发现泄漏时引起很多问题,有关更多信息,请参阅视频,了解如何使用位图。

    是否尝试将ImageView设置为空?