gpt4 book ai didi

java - 在 Kotlin 的对象字段中具有上下文的 Android 类

转载 作者:IT老高 更新时间:2023-10-28 13:44:23 25 4
gpt4 key购买 nike

是否可以在 Kotlin 的对象类中拥有一个包含上下文的属性?在 Android 中,将上下文相关的对象放在静态字段中是一种不好的做法。 Android Studio 甚至会突出显示它并给出警告,这与没有警告的 Kotlin 不同。示例对象:

object Example {
lateinit var context: Context

fun doStuff(){
//..work with context
}
}

最佳答案

由于 object 是单例,它们有一个静态实例。所以如果你给他们一个 context 属性,你仍然以静态方式存储一个 Context

这与将 Context 放在 Java 中的静态字段中的结果完全相同。


如果您编写 Kotlin 为 Java 中的 object 生成的等效代码,它实际上会导致正确的 lint 错误:

public class Example {

// Do not place Android context classes in static fields; this is a memory leak
// (and also breaks Instant Run)
public static Context context;

// Do not place Android context classes in static fields (static reference to
// Example which has field context pointing to Context); this is a memory leak
// (and also breaks Instant Run)
public static Example INSTANCE;

private Example() { INSTANCE = this; }

static { new Example(); }

}

关于java - 在 Kotlin 的对象字段中具有上下文的 Android 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44134811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com