我来自嵌入式世界,对Kotlin很陌生。我知道有一些机制我可以在我的类中继承和使用,但我不知道这个机制在Android上的确切名称。
我要找的是:
- 我有我的Activity,这个实例化了我的CustomClass
- 我的CustomClass执行一些后台任务,如处理BLE异步通信
- CustomClass不知道何时接收到某些数据包。
- 一旦收到包,customclass应该回调Activity并通过此机制提供数据。
执行这些回调的最佳选择是什么?
注。我很抱歉,我找了很多地方,但我甚至不知道名字。
您可以使用LiveData
来实现此目的。本质上它是一个可观察对象数据持有者,所以当你改变它的数据时,它所有的观察者都会得到通知。这使您能够编写响应式代码并减少紧密耦合的逻辑。它也是生命周期感知的,所以你的活动只有在活动时才会得到通知。
一般的想法是按照
在你的CustomClass
声明一个LiveData
对象
class CustomClass{
// Declare a LiveData object, use any type you want String, Int etc
val myData: MutableLiveData<String> = MutableLiveData("")
private fun onBleNotification(notification: String){
// post to live data, this will trigger all the observers
myData.postValue(notification)
}
...
}
在Activity
中,观察LiveData
对象
onCreate(savedInstanceState: Bundle?){
...
customClass.myData.observe(this, androidx.lifecycle.Observer{
//Do anything with received command, update UI etc
})
}
您也可以使用事件总线或广播接收器或接口来实现您的目的。但建议使用其他答案(liva data, viewmodel)中的想法。