gpt4 book ai didi

android - MVVM - 使用 RxJava 和 Room 在 ViewModel 中处理 Disposable-s

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:34 24 4
gpt4 key购买 nike

我尝试在我的 Android Activity 中应用 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

我的问题是:

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

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

更新:我见过composite disposable的用法在 android-architecture-components .

谢谢。

最佳答案

只需在onCleared中清除你的disposable/composite disposible,这就足够了

protected override onCleared(){
if( diposable != null )
disposable.dispose()
}

关于android - MVVM - 使用 RxJava 和 Room 在 ViewModel 中处理 Disposable-s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50173009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com