将 Android Activity 传递给依赖项(同一类中的变量)会导致内存泄漏

问题描述 投票:0回答:1

我有这样的代码。

Class MyActivity {
private lateinit var downLoadQRHandler: DownloadQRHandler
...
fun someFun()

{     val model = getDataModelSomeOtherFun()
 downLoadQRHandler = DownloadQRHandler(downloadQRModel, this)
}
}

当活动传递给依赖项之一时?

会导致内存泄漏吗? 起初我想,是的,会的。但我认为,在活动被破坏后,此引用 downLoadQRHandler 将自动无效。 MyActivity 实例将被垃圾回收。

为了安全起见,我想在 onDestroy() 中添加这个

  override fun onDestroy() {
        super.onDestroy()
        downLoadQRHandler = null
}

添加 ..= null 代码有什么好处吗?

活动类在 MemoryProfiler 和 LeakCanary 中被标记。内存泄漏可能还有其他原因。

android performance memory-leaks android-memory
1个回答
0
投票

如果没有看到其他代码,就无法回答你。如果“downLoadQRHandler”在其他地方使用并保留在内存中,是的,这可能是内存泄漏,特别是如果 DownloadQRHandler() 构造函数(接受 Activity)保存 Activity 以供以后使用。

© www.soinside.com 2019 - 2024. All rights reserved.