如何正确地从返回方法释放位图?

时间:2019-06-20 04:00:11

标签: android bitmap android-bitmap bitmapimage bitmapdata

此方法是否将回收imageUtils.mediaImageToBitmap(image, activity);中的位图?。

因为我无法在return methodBitmap;之后投放回收站

Bitmap bitmap = imageUtils.mediaImageToBitmap(image, activity);
//some process
...
//some process
bitmap.recycle();

更新

完成后,我放入了bitmap.recycle(),但是在imageUtils.mediaImageToBitmap(image, activity);中有一个位图,该函数是否也需要回收?

bitmap.recycle()是否会自动回收imageUtils.mediaImageToBitmap(image, activity);中的位图?

    public Bitmap mediaImageToBitmap(Image image, Context context) {
        Bitmap bitmap;
        //Do I need to do bitmap recycle in this method's Java Class?
        //or 
        //The other class that call this method 
        //Bitmap bitmap = imageUtils.mediaImageToBitmap(image, activity);
        //Then bitmap.recycle is enough?
        return bitmap;
    }

2 个答案:

答案 0 :(得分:0)

您的语句将不会在return语句之后执行,但是如果您知道该概念,则该语句将在return语句之后执行,最后将通过try catch阻塞的块有一个:

public Bitmap methodBitmap() 
{
        Bitmap bitmap
        try {
            bitmap = imageUtils.mediaImageToBitmap(image, activity);
            //some process
        ...
            //some process

            return bitmap;
        }
        catch (Exception e) {
            // Do necessary step on exception case
            return bitmap;
        }
        finally {
            bitmap.recycle();    
        }
}
  

注意:根据需要在methodBitmap上输入必要的参数

答案 1 :(得分:0)

您的imageUtils.mediaImageToBitmap(image, activity);仅应返回对您分配给本地变量的位图对象的引用。换句话说,只有一个位图对象,调用bitmap.recycle()一次将自动回收该位图对象。