V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MudBodhisattva
V2EX  ›  Android

RXAndroid 的疑问

  •  
  •   MudBodhisattva · 2018-06-14 15:46:34 +08:00 · 8741 次点击
    这是一个创建于 2387 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人新人一枚,望各位前辈不吝赐教。 当 io 线程完成操作抛到 android 线程去更新 UI 后,这个订阅关系还在吗?还是说从内存中清空了? 如果说内存清空了,订阅关系也没有了,那么一下方法执行完毕之后 CompositeSubscription 我没有 unsubscribe 会怎么样,会造成内存泄漏吗。
    public void data(){ CompositeSubscription.add( …… )

    }

    KNOX
        1
    KNOX  
       2018-06-15 09:22:12 +08:00 via Android
    还在,建议你再看看观察者模式。
    MudBodhisattva
        2
    MudBodhisattva  
    OP
       2018-06-15 09:49:18 +08:00
    @KNOX 请问我可以在 onNext 里面和 onError 这里对 CompositeSubscription 进行 unsubscribe 吗?
    KNOX
        3
    KNOX  
       2018-06-15 09:54:50 +08:00
    @MudBodhisattva 如果已经添加订阅就可以。
    MudBodhisattva
        4
    MudBodhisattva  
    OP
       2018-06-15 09:56:13 +08:00
    @KNOX

    final CompositeSubscription mCompositeSubscriptions2 = new CompositeSubscription();
    mCompositeSubscriptions2.add(
    updateData(user)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new Observer<user>() {
    @Override
    public void onCompleted() {

    }

    @Override
    public void onError(Throwable e) {
    mCompositeSubscriptions2.unsubscribe();
    }

    @Override
    public void onNext(user user) {
    mCompositeSubscriptions2.unsubscribe();
    }
    })
    );


    比如说我 add 了好多,然后在其中一个取消订阅所有
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.