我写了一个非常标准的Android应用程序,它在GridView中显示了一堆图片(来自Contacts)。该应用程序没有做任何特殊的尝试保留屏幕方向更改的数据,只是在重新创建活动时重新创建GridView,适配器和加载器。
但是,经过一些方向更改后,应用程序会变慢;再过几次,它会因内存不足错误而崩溃(在BitmapFactory.decodeStream()处)。如果我让它在旋转之间静置一分钟让垃圾收集器做它的事情,这仍然会发生。
我的印象是,当在方向更改期间销毁Acitivty时,Android将释放与活动关联的所有内存。但是,情况似乎并非如此。我的问题是:尽管活动遭到破坏,我会无意中保留哪些记忆?
(请注意,只要不进行太多的方向更改,应用程序就可以正常运行,因此我使用的内存最小化的一般方法就足够了。)
答案 0 :(得分:1)
我想你忘了添加bitmap.recycle();
此方法也很容易解决,添加到AndroidManifest,活动参数:android:configChanges="orientation|screenSize"