sách gpt4 ăn đã đi

Android位图内存泄漏

In lại 作者:搜寻专家 更新时间:2023-11-01 08:58:37 25 4
mua khóa gpt4 giày nike

我正在尝试为 Android 创建缓存图像系统,但内存消耗越来越大。我浏览了 Android website对于一些想法,但问题只是不想消失。

下面是我从 SD 卡获取图像,设置它然后销毁的代码。我做错了什么?

WeakReference newImageRef;
public void setImageFromFile(File source){
if(source.exists()){

Bitmap newImage = BitmapFactory.decodeFile(source.getAbsolutePath());
newImageRef = new WeakReference(newImage);
if(newImage != null){
this.setImageBitmap(newImage);
}
}
}

@Ghi đè
protected void onDetachedFromWindow() {
Bitmap newImage = newImageRef.get();
if (newImage != null) {
newImage.recycle();
newImage = null;
}


Drawable drawable = getDrawable();
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null){
bitmap.recycle();
}
}
this.setImageResource(0);
newImage = null;
newImageRef = null;
Hệ thống. gc();


super.onDetachedFromWindow();
}

câu trả lời hay nhất

如果您使用的是 Android 版本 >3.0,则不必调用 recycle(),因为 gc 最终会自行清理位图,只要没有对它的引用。所以删除回收调用是安全的。他们在这里什么都不做。

您发布的代码看起来很整洁,但您确定泄漏没有发生在其他地方吗?使用 Android Memory Analyzer 工具查看发生泄漏的位置,然后发布信息。

祝你好运。

关于Android位图内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015448/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress