我认为我的问题是因为我滥用继承权。我有4个活动,都扩展了BaseActivity,共享公共代码(onClick,onItemClick,静态和非静态方法)。每个活动都从网络获取数据 - 包括图像。当我使用整个应用程序更长的时间我有内存泄漏错误(VM不会让我们分配xxx字节)和应用程序粉碎。
如果我理解正确 - 这是因为通过扩展这4个活动,我使它们像Base Activity的内部类 - 这就是为什么当我在它们之间切换时不调用它们的onDestroy()方法。此外 - GC不回收任何RAM并且堆被堵塞。 BaseActivity保存所有数据(例如图像),因此允许在单击“后退”按钮时显示它们而无需重新创建数据。
如果这是真的 - 另一种选择是通过使用辅助类来共享公共代码使它们分离 - 但是,当我将在活动之间切换时 - 他们将一遍又一遍地下载它的数据。
我是对的,有什么解决方案吗?
答案 0 :(得分:0)
因此,如果不看一些代码就很难回答,但扩展Activity类不应该导致内存泄漏。您很可能会从Web请求中抓取大量不必要的数据。你说你正在下载图片,对吗?我从那里开始。