0

我使用 zxing 对二维码进行编码并将其存储为位图,然后将其显示在ImageView. 由于图像生成时间很重要,我计划将其移至单独的线程(我认为 AsyncTaskLoader 会很好)。

问题是 - 它是一个图像,我知道为了避免内存泄漏,永远不应该在 Activity 中存储对它的强引用。

那么你会怎么做呢?如何缓存图像以在配置更改(手机旋转)中幸存并通常避免生成它onCreate()

请指出我正确的方向。

编辑: 或者,如果我仍然使用 AsyncTaskLoader,我应该让它完成它的工作并将位图保留在那里?我的意思是,它应该返回它加载的数据(在这种情况下生成)并在需要时返回它,不是吗?

4

1 回答 1

0

那么这是一个非常常见的问题:

使用 Save Instance State 保存 Android Activity 状态 Activity 在轮换时重启 Android 如何在 Android 上将对象从一个 Activity 传递到另一个 Activity

您可能必须使用 Parceable 对象。 http://chmcguir.wordpress.com/2012/02/12/parcelable-how-to-pass-data-between-android-activities/

编辑:

这是有关该主题的官方文章。它使用 onRetainNonConfigurationChange() 来传递位图

例如,Photostream 从可绘制对象中提取位图并仅传递位图,而不传递可绘制对象。最后,请记住 onRetainNonConfigurationChange() 应该只用于保留加载成本高的数据。否则,保持简单,让 Android 做所有事情。

http://developer.android.com/resources/articles/faster-screen-orientation-change.html

于 2012-04-12T17:32:58.557 回答