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



我正在使用 Kotlin 进行 Android 开发。有趣的问题。在 Java 中,在静态字段中保存上下文是内存泄漏。但是,如果我将上下文存储在 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应该没问题。

有关执行此操作是否安全的参考:

  • 在 Android 中将应用上下文保存到静态变量是否安全?
  • 保留应用程序上下文实例是一种不好的做法吗?

相关内容

  • 没有找到相关文章

最新更新