11

我尝试在我的 Android 活动中应用 MVVM 模式(我是一个 Android 菜鸟)。

我将 Room 与 RxJava 2 一起使用,例如,这是我的存储库中方法的签名:

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.

我的问题是:

  1. 我应该如何处理一次性用品(例如,我可以将它放入复合一次性用品中,并在模型清除后处理复合材料)?
  2. 如果我不处理它会发生什么?泄漏?为什么?

在我经历的一些示例中,没有处理 Disposable。

更新:我在android-architecture-components中看到了复合一次性用品的使用。

谢谢。

4

1 回答 1

7

只需清除您的一次性/复合一次性用品onCleared,这就足够了

protected override onCleared(){
    if( diposable != null )
        disposable.dispose()
}
于 2018-05-04T10:44:38.920 回答