我应该从哪里订阅 Rx 的 MVVM?
MVVM from where I should subscribe with Rx?
我来自 MVP
模式,现在我正在使用 MVVM
模式和 RXJava 来实现一些功能,例如在地图中显示我的当前位置。为此,我在我的 MV 中订阅了一个 Disposable
,我将得到一个 Location
:
(t
是我的位置)
val subscription = locationProvider.lastKnownLocation
.subscribe(Consumer { t -> updateLocationMap(t) })
我的问题是我应该在我的 View
中订阅这个 Disposable
吗?因为我看到 ViewModel
不能在 View
中实例化并且知道我不知道如何使用这个 Location
对象。
这是一个例子
在 Viewmodel 中创建一个变量
val LocationLiveData = MutableLiveData<Location>()
下面的代码应该在视图模型中
disposable = locationProvider.lastKnownLocation
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe{location ->
LocationLiveData.postValue(location)
}
之后在视图中( Activity )
viewmodel.LocationLiveData.observe(this, { t: Location? ->
//use this updated location
})
我来自 MVP
模式,现在我正在使用 MVVM
模式和 RXJava 来实现一些功能,例如在地图中显示我的当前位置。为此,我在我的 MV 中订阅了一个 Disposable
,我将得到一个 Location
:
(t
是我的位置)
val subscription = locationProvider.lastKnownLocation
.subscribe(Consumer { t -> updateLocationMap(t) })
我的问题是我应该在我的 View
中订阅这个 Disposable
吗?因为我看到 ViewModel
不能在 View
中实例化并且知道我不知道如何使用这个 Location
对象。
这是一个例子
在 Viewmodel 中创建一个变量
val LocationLiveData = MutableLiveData<Location>()
下面的代码应该在视图模型中
disposable = locationProvider.lastKnownLocation
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe{location ->
LocationLiveData.postValue(location)
}
之后在视图中( Activity )
viewmodel.LocationLiveData.observe(this, { t: Location? ->
//use this updated location
})