Вла*_*шер 2 memory-leaks kotlin kotlin-companion
我正在使用 Kotlin 进行 Android 开发。有趣的问题。在 Java 中,将 Context 保存在静态字段中会导致内存泄漏。但如果我将上下文存储在 Kotlin 伴生对象中,Android Studio 不会说这是内存泄漏。这意味着在Java字节码中同伴对象不是静态代码?例如:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
appContext = applicationContext
}
companion object {
lateinit var appContext: Context
}
}
Run Code Online (Sandbox Code Playgroud)
这里没有内存泄漏吗?感谢您的回答:)
您的代码实际上确实Context以静态方式存储 a ,只是 lint 由于某种原因无法拾取它并警告您。
然而,在这种特定情况下,您实际上并没有面临内存泄漏的风险。您Application静态存储对象本身,该对象在应用程序的整个生命周期中都处于活动状态 - 就像静态变量一样。如果这是其他寿命较短的应用程序,您会遇到麻烦Context,但应用程序Context应该没问题。
有关这样做是否安全的参考:
| 归档时间: |
|
| 查看次数: |
4764 次 |
| 最近记录: |