【问题标题】:Deletion of drawing cache删除绘图缓存
【发布时间】:2023-03-10 23:30:02
【问题描述】:

在我的应用中,当用户点击它时,我想在运行时交换图像

当用户点击第一张图片然后同时点击第二张图片时有两个图片视图我正在获取第一个图片视图的图像的位图并为此分配给第二个图片视图我使用了以下代码:

public Bitmap createBitmap(ImageView imageview) {
    imageview.setDrawingCacheEnabled(true);
    imageview.buildDrawingCache(false);

    if(imageview.getDrawingCache() != null) {
        Bitmap  bitmap = Bitmap.createBitmap(imageview.getDrawingCache());
        imageview.setDrawingCacheEnabled(false);
        return bitmap;
    } else {
        return null;
    }
}

代码工作正常,但每次都没有清除缓存,并且位图是用以前的缓存创建的,所以我如何清除位图缓存?

【问题讨论】:

标签: android bitmap


【解决方案1】:

这是一个示例,例如我在哪里使用Free the native object associated with this bitmap

Bitmap  bitmap;

public Bitmap createBitmap(ImageView imageview) {
    if (bitmap != null) {
        bitmap.recycle();
        bitmap = null;
    }
    bitmap = Bitmap.createBitmap(imageview.getDrawingCache());
    // Your Code of bitmap Follows here
}

在使用 Bitmap 之前,只需释放对象。

【讨论】:

  • thnx 回复...但我想我必须先回收位图才能对其进行赋值,如果我错了,请纠正我
  • @curious_mind : 在适当的时间分配位图时所做的更改。
  • Honeycomb+ 位图不再分配在本机堆中,它们现在位于 Dalvik 堆中。不再需要调用 recycle()。
【解决方案2】:

在评估您的位图之前使用bitmap.recycle(); 以在重新创建之前清除其缓存。

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2013-02-09
    • 1970-01-01
    • 2016-01-23
    • 2018-03-01
    相关资源
    最近更新 更多