Joi*_*ois 7 android mvvm kotlin
我刚开始在Android上使用MVVM架构.我有一个基本上获取一些数据并更新UI的服务,这是我从MVVM中理解的:
现在,由于ViewModels不应该对活动有任何了解,而且活动除了处理视图之外不应该做任何事情,任何人都可以告诉我应该在哪里开始服务?
在 MVVM 中,理想情况下,应该定义启动服务的方法,Repository
因为它有责任与数据源交互。ViewModel
保留 的一个实例Repository
,并负责调用Repository
方法并更新它自己的实例LiveData
,该实例可能是 的成员ViewModel
。View
保留一个实例,ViewModel
并观察LiveData
UIViewModel
并相应地更改 UI。这里有一些伪代码,可以让您更好地了解情况。
class SampleRepository {
fun getInstance(): SampleRepository {
// return instance of SampleRepository
}
fun getDataFromService(): LiveData<Type> {
// start some service and return LiveData
}
}
class SampleViewModel {
private val sampleRepository = SampleRepository.getInstance()
private var sampleLiveData = MutableLiveData<Type>()
// getter for sampleLiveData
fun getSampleLiveData(): LiveData<Type> = sampleLiveData
fun startService() {
sampleLiveData.postValue(sampleRepository.getDataFromService())
}
}
class SampleView {
private var sampleViewModel: SampleViewModel
// for activities, this sampleMethod is often their onCreate() method
fun sampleMethod() {
// instantiate sampleViewModel
sampleViewModel = ViewModelProviders.of(this).get(SampleViewModel::class.java)
// observe LiveData of sampleViewModel
sampleViewModel.getSampleLiveData().observe(viewLifecycleOwner, Observer<Type> { newData ->
// update UI here using newData
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1054 次 |
最近记录: |