【发布时间】:2017-08-04 09:21:44
【问题描述】:
我有一个奇怪的问题,我在 Android 中有一个初始登录活动,而它的 onCreateMethod 被触发,我由 Object 类调用,它是一个名为 BaseData 的静态对象。我收到一个奇怪的空错误,而它是一个对象。发现 Kotlin 中的对象是延迟加载的,这需要一段时间,我如何强制它先加载并在我的主 Landing Login Activity 创建时可用。
class LoginActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
if(BaseData.userId == “”) { //At this step BaseData itself comes as null, so app goes blank
//Do something
}
}
}
object BaseData : Observable() {
var initialSyncDone:Boolean = false
var isOffline:Boolean = true
var userId: String = “”
init{
// I have logic to load userId from shared preferences
}
}
【问题讨论】:
-
//At this step BaseData itself comes as null, so app goes blank— 如果 BaseData 为空,BaseData.userId将导致 NullPointerException。 Kotlin 的延迟对象加载基于 JVM 类加载——你根本不会注意到这种延迟。
标签: android kotlin kotlin-android-extensions