【发布时间】:2019-07-15 15:45:21
【问题描述】:
在某些情况下,我的广播接收器不是必需的,因此需要检查接收器是否为空,但是即使不使用它并导致崩溃,该对象也不为空。
private val myBroadCastReceiver by lazy { MyBroadcastReceiver() } if(myBroadCastReceiver != null) unregisterReceiver(myBroadCastReceiver)
【问题讨论】:
在某些情况下,我的广播接收器不是必需的,因此需要检查接收器是否为空,但是即使不使用它并导致崩溃,该对象也不为空。
private val myBroadCastReceiver by lazy { MyBroadcastReceiver() } if(myBroadCastReceiver != null) unregisterReceiver(myBroadCastReceiver)
【问题讨论】:
因为您将 myBroadcastReceiver 声明为 Lazy,这意味着您在调用 MyBroadcastReceiver() 之前不会使用它。您在 if 声明中执行的操作。
所以如果你这样检查,它不会为空,因为你实际上在这里执行MyBroadcastReceiver() if(myBroadCastReceiver...)
【讨论】:
当您尝试空检查时,它已初始化,因此它不为空。试试这个而不是懒惰。
private var myBroadCastReceiver : MyBroadcastReceiver? = null
【讨论】: