Kotlin伴侣对象中的内存泄漏?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin伴侣对象中的内存泄漏?相关的知识,希望对你有一定的参考价值。

我正在使用Kotlin进行android开发。有趣的问题。在Java中保存静态字段中的Context是一个内存泄漏。但是如果我在Kotlin伴侣对象中存储上下文,Android Studio并没有说它是内存泄漏。这意味着在Java中字节码conpanion对象不是静态代码吗?例如:

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        appContext = applicationContext
    }

    companion object {
        lateinit var appContext: Context
    }
}

这里没有内存泄漏?谢谢你的答案:)

答案

事实上,你的代码确实以静态的方式存储了Context,只是因为某些原因,lint无法接收并警告你。

但是,在这种特定情况下,您实际上没有创建内存泄漏的风险。你静态地存储你的Application对象,它将在整个应用程序的生命周期中存活 - 就像静态变量一样。如果这是其他一些短暂的Context,你会遇到麻烦,但应用程序Context应该没问题。

有关这样做是否安全的参考:

以上是关于Kotlin伴侣对象中的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin是如何帮助你避免内存泄漏的?

如何使用callBy()调用Kotlin伴侣工厂方法?

Kotlin:安全的 lambdas(没有内存泄漏)?

避免android片段中内存泄漏的最佳方法是啥

将接口从片段传递到kotlin中的活动

Android中的内存泄漏和内存溢出