Kotlin对象OnComplete侦听器

时间:2018-09-12 04:12:33

标签: kotlin

我需要知道何时最终设置我的对象(从Internet获取数据),以便我可以正确使用它而没有任何nullpointerexception。有没有一种方法可以让对象在设置完后通知,就像onComplete lambdas作为函数参数一样。简单的问题,但有帮助:)

2 个答案:

答案 0 :(得分:3)

您可以在类中创建函数类型变量。在您的活动中设置功能。准备好对象后调用它。

class MyObject()
{
    var onComplete : (()-> Unit)? = null

    fun setup()
    {
        //setup your object
        onComplete?.invoke()
    }
}

您的活动

val myObject = MyObject()
myObject.onComplete = {
    //..things to do after setup...
}
myObject.setup()

如果需要,还可以将其放在构造函数中。

答案 1 :(得分:0)

在android中,如果您添加了支持库依赖项,我们可以使用LiveData

class Result

object MyObject {
    val onComplete: MutableLiveData<Result> = MutableLiveData()

    fun setUp() {
        // do something
        onComplete.setValue(Result()) // main thread
        // onComplete.postValue(Result()) // other thread
    }
}

class SampleActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        MyObject.onComplete.observe(this, Observer { result ->
            // do something with result
        })
        MyObject.setUp()
    }
}

如果此方法不熟悉,请查看观察者模式或LiveData。