gpt4 book ai didi

android - Kotlin 单例应用程序类

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

在 Android 上,我想将我的应用程序类设为 singleton .

制作成这样:

object MyApplication: Application(){}

行不通。运行时抛出以下错误:

java.lang.IllegalAccessException: private com....is not accessible from class android.app.Instrumentation.

这样做也是不可能的:

class MyApp: Application() {

private val instance_: MyApp

init{
instance_ = this
}

override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree());
}
}

companion object{
fun getInstance() = instance_
}
}

如何在我的应用程序的任何地方获取我的应用程序类的实例?我想使用 MyApp.instance() 而不是 (applicationContext as MyApp)

还有我想要这个的解释:我的应用程序中有类(class)。例如,一个用上下文初始化的 SharedPreference Singleton,由于它是一个单例,它不能有参数。

最佳答案

您可以执行与 Java 相同的操作,即将 Application 实例放在静态字段中。 Kotlin 没有静态字段,但对象中的属性可以静态访问。

class MyApp: Application() {

override fun onCreate() {
super.onCreate()
instance = this
}

companion object {
lateinit var instance: MyApp
private set
}
}

然后您可以通过 MyApp.instance 访问该属性。

关于android - Kotlin 单例应用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37391221/

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