【发布时间】:2018-10-14 19:52:34
【问题描述】:
我尝试在我的 Android 活动中应用 MVVM 模式(我是一个 Android 菜鸟)。
我在 RxJava 2 中使用 Room,例如这是我的存储库中方法的签名:
public Single<MissionTask> getMissionTaskByID(long id) {..}
在我的 ViewModel 类中,我引用了存储库和如下代码:
private void doSomethingOnUserEvent() {
...
missionTaskRepository.getMissionTaskByID(firstID).
observeOn(AndroidSchedulers.mainThread()).
subscribeOn(Schedulers.io()).
subscribe(missionTask ->
{
// do some work and update live data
},
t -> {
// handle error
});
...
}
到目前为止一切顺利,表面上看起来一切正常。现在 - subscribe 返回一个 Disposable。
我的问题是:
- 我应该如何处理一次性用品(例如,我可以将其放入复合一次性用品中,并在模型清除后丢弃复合材料)?
- 如果我不处理它会怎样?泄漏?为什么?
在我经历的一些示例中,没有处理 Disposable。
更新:我在android-architecture-components 中看到了composite disposable 的用法。
谢谢。
【问题讨论】:
-
使用
onCleared...在github.com/joreilly/galway-bus-android/blob/master/base/src/…中执行此操作的示例 -
看看它可能会有所帮助:medium.com/@saquib3705/…
标签: android mvvm rx-java2 android-room android-viewmodel