Ленивые инициализированные объекты создаются всегда - PullRequest
0 голосов
/ 21 февраля 2019

В некоторых случаях мой широковещательный приемник не требуется, и поэтому мне нужно проверить, является ли получатель нулевым или нет, но каким-то образом этот объект не является нулевым, даже если я его не использую и вызываю сбой.Заранее спасибо.

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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

когда вы пытаетесь проверить NULL, он инициализируется и, следовательно, не NULL.Попробуйте это вместо ленивых.

private val myBroadCastReceiver : MyBroadcastReceiver? = null

или попробуйте этот ответ Котлин: Проверьте, инициализирован ли ленивый вал

0 голосов
/ 21 февраля 2019

Поскольку вы объявляете myBroadcastReceiver как Ленивый, это означает, что вы не будете использовать его, пока не позвоните MyBroadcastReceiver().Что вы делаете в вашем if заявлении.

Так что, если вы проверите его таким образом, он не будет нулевым, потому что вы на самом деле выполните MyBroadcastReceiver() здесь if(myBroadCastReceiver...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...