我使用zxing对qr代码进行编码并将其存储为位图,然后在ImageView
中显示。由于图像生成时间很长,我打算将它移动到一个单独的线程(我认为AsyncTaskLoader会很好)。
问题是 - 它是一个图像,我知道为避免内存泄漏,不应该在Activity中存储对它的强引用。
那你怎么做的? 如何缓存图片以应对配置更改(手机轮换)并通常避免生成onCreate()
?
请指出我正确的方向。
修改 或者,如果我还是使用AsyncTaskLoader,我应该让它完成它的工作并保留Bitmap吗?我的意思是,它应该返回它加载的数据(在这种情况下生成)并在需要时返回它,不是吗?
答案 0 :(得分:0)
这是一个非常常见的问题:
Saving Android Activity state using Save Instance State Activity restart on rotation Android How to pass an object from one activity to another on Android
您必须使用Parceable对象。 http://chmcguir.wordpress.com/2012/02/12/parcelable-how-to-pass-data-between-android-activities/
修改强>
这是关于这个主题的官方文章。它使用onRetainNonConfigurationChange()来传递位图
例如,Photostream从drawables中提取位图并仅传递位图,而不是drawable。最后,请记住onRetainNonConfigurationChange()应该仅用于保留加载昂贵的数据。否则,保持简单,让Android做所有事情。
http://developer.android.com/resources/articles/faster-screen-orientation-change.html