这段代码会导致 kotlin 内存泄漏吗

Hel*_*rld 1 android memory-leaks kotlin

如果我有像下面这样的其他类的持有上下文的伴随对象。

class Sample01Activity: BaseActivity() {

    companion object {
        fun open(context: Context) {
            val intent = Intent(context, Sample02Activity::class.java)
            ActivityCompat.startActivity(context, intent, null)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

open(context) 在这段代码中是否导致内存泄漏?并且 id 做到了,它会使用 Wea​​kreference 进行修复,如下所示。

class SampleActivity: BaseActivity() {

companion object {
    fun open(context: WeakReference(Context)) {
        context.get()?.let {
            val intent = Intent(it, Sample02Activity::class.java)
            ActivityCompat.startActivity(it, intent, null)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

Dom*_*ski 5

将上下文作为参数传递不会导致内存泄漏。方法返回后释放引用。

如果您将此上下文分配给伴随对象字段,则可能会导致内存泄漏,但您永远不会这样做。