为什么活动返回到前台后会回收位图?

时间:2019-01-25 04:55:38

标签: android android-activity bitmap

我的活动\b[\d]{3}[0-47-9][\d]{5}\b 有一个变量A,该变量引用了位图列表:

b

列表由我的应用填充,列表中的最后一个位图显示在活动的ImageView上:

A.b.bitmaps = new ArrayList<Bitmap>();

然后,我启动了另一个应用程序的活动以进行社交共享,但是共享完成后,我的活动又回到了前台,我的应用程序崩溃了。

imgView.setImageBitmap(lastBitmap);

位图为java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@15c6d7b at ... 。我猜它已经以某种方式发布,并在用于绘制imageView时使应用程序崩溃。

当imageView和我的实例变量都强烈引用了位图时,为什么要回收它?

P.S。我猜想垃圾回收是在切换应用程序时以某种方式开始的,并且位图都被回收了。然后的问题是,如何防止GC回收位图?像lastBitmap一样?

1 个答案:

答案 0 :(得分:0)

尝试使用 onSaveInstanceState ,并使用 onRestoreInstanceState 保存需要保留和恢复的所有变量的状态。希望这能回答您的问题。