在 Android 上,我想将我的应用程序类制作成一个单例。
做法如下:
object MyApplication: Application(){}
无法正常工作。运行时会抛出以下错误:
java.lang.IllegalAccessException: private com.... 不能从 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)
。
同时解释一下我想要这样做的原因:我的应用程序中有一些类,例如一个使用上下文初始化的SharedPreference单例。由于它是一个单例,它不能有参数。