我的活动\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
一样?
答案 0 :(得分:0)
尝试使用 onSaveInstanceState ,并使用 onRestoreInstanceState 保存需要保留和恢复的所有变量的状态。希望这能回答您的问题。