如何从 return 方法正确释放位图?
How to relase bitmap from a return method correctly?
这个方法会回收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;
}
你的语句不会在 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();
}
}
Note : Take necessary argument on methodBitmap as per your need
您的 imageUtils.mediaImageToBitmap(image, activity);
应该只返回对您分配给局部变量的位图对象的引用。换句话说,只有一个位图对象,调用 bitmap.recycle() 一次将自动回收该位图对象。
这个方法会回收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;
}
你的语句不会在 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();
}
}
Note : Take necessary argument on methodBitmap as per your need
您的 imageUtils.mediaImageToBitmap(image, activity);
应该只返回对您分配给局部变量的位图对象的引用。换句话说,只有一个位图对象,调用 bitmap.recycle() 一次将自动回收该位图对象。