考虑到托管代码/垃圾收集等的性质,最初我并没有过多关注 Android 中内存泄漏的可能性。我想这可能有点幼稚。这是问题:
假设有一个活动 - MyActivity。当操作系统启动它时,它会在其 onCreate() 中实例化另一个类(MyOtherClass)并保留对它的引用。但是,假设 MyOtherClass 的实例还保留对上下文的引用——这恰好也是对 MyActivity 实例的引用。
现在发生了一些事情 - 说屏幕被旋转了。操作系统调用活动 onDestroy() 并删除对 MyActivity 的旧实例的引用。但是,该活动实例仍然具有对 MyOtherClass 实例的引用,而该实例又具有该活动的实例。
那么,我认为这两个班级将永远保持彼此的生命是对的吗?
如果是这样,我想可能的答案是(a)不保留上下文引用,以另一种方式获取它,或者(b)在活动 onDestroy() 中删除它对其他任何东西的任何引用,那么这一切都应该崩溃.