【问题标题】:How can I completely clear a bitmap from memory on Android?如何在 Android 上完全清除内存中的位图?
【发布时间】:2021-01-14 20:30:53
【问题描述】:

我只有一个用于分配给静态变量的位图。我没有将此设置为任何图像视图。将其分配给静态变量后,我想通过键入 bitmap.recycle() 将其从内存中删除。我只使用 bitmap.recycle() 行时没有报错,但是当我尝试切换到不同的页面时,我报错了。

这段代码没有错误:

StaticVeriables.getScannedFromGallery=bitmap;
bitmap.recycle();
//Intent gallery1 = new Intent(MainActivity.this, EditImage.class);
//gallery1.putExtra("isGallery",true);
//startActivity(gallery1);
//finish();

这段代码有错误:

StaticVeriables.getScannedFromGallery=bitmap;
bitmap.recycle();
Intent gallery1 = new Intent(MainActivity.this, EditImage.class);
gallery1.putExtra("isGallery",true);
startActivity(gallery1);
finish();

【问题讨论】:

  • 请以代码格式添加代码,而不是图像。你为什么要使用静态Bitmap 是故意的吗?
  • 您可以在代码前后的行中使用三个反引号 (`) 或波浪线 (~) 来格式化代码块。更多格式帮助here.
  • @peacetype 这样吗?
  • @ADM 我正在​​使用静态位图,因为我无法将位图发送到其他类,并认为我可以使用静态变量从其他类访问。​​

标签: java android memory bitmap recycle


【解决方案1】:

我解决了这个问题。这不是关于切换到另一个活动。由于我在上一行将位图分配给了我的静态变量,所以在我写bitmap.recycle()的时候,我得到了一个错误,因为这个位图是一个引用静态变量,而我在其他类中使用了这个静态变量。我通过将位图变量复制到静态变量来解决了这个问题。其中:

//I solved my problem with this line
StaticVeriables.getScannedFromGallery=bitmap.copy(bitmap.getConfig(),true);
/*Whe should not do this
StaticVeriables.getScannedFromGallery=bitmap;*/
bitmap.recycle();
Intent gallery1 = new Intent(MainActivity.this, EditImage.class);
gallery1.putExtra("isGallery",true);
startActivity(gallery1);
finish();

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 2017-02-09
    • 2011-01-28
    • 2011-02-25
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多