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
应该没问题。
有关这样做是否安全的参考:
- Is it safe to save the app context to a static variable in Android?
- Is it a bad practice to hold application Context instance?
以上是关于Kotlin伴侣对象中的内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章