总是创建惰性初始化对象

时间:2019-02-21 16:31:58

标签: android kotlin

在某些情况下,不需要我的广播接收器,因此我需要检查接收器是否为null,但是即使我不使用它也会导致崩溃,但不知何故此对象也不为null。预先感谢。

private val myBroadCastReceiver by lazy {
    MyBroadcastReceiver()
}
if (myBroadCastReceiver != null) {
    unregisterReceiver(myBroadCastReceiver)
}

2 个答案:

答案 0 :(得分:3)

当您尝试空检查时,它会初始化,因此不会为空。试试这个而不是懒。

private val myBroadCastReceiver : MyBroadcastReceiver? = null

或尝试此答案 Kotlin: Check if lazy val has been initialised

答案 1 :(得分:2)

因为您将myBroadcastReceiver声明为Lazy,这意味着您必须先调用MyBroadcastReceiver()才能使用它。您在if语句中所做的操作。

因此,如果您以这种方式进行检查,它将不会为null,因为您实际上是在MyBroadcastReceiver()处执行if(myBroadCastReceiver...)