本人新人一枚,望各位前辈不吝赐教。
当 io 线程完成操作抛到 android 线程去更新 UI 后,这个订阅关系还在吗?还是说从内存中清空了?
如果说内存清空了,订阅关系也没有了,那么一下方法执行完毕之后 CompositeSubscription 我没有 unsubscribe 会怎么样,会造成内存泄漏吗。
public void data(){
CompositeSubscription.add(
……
)
}
1
KNOX 2018-06-15 09:22:12 +08:00 via Android
还在,建议你再看看观察者模式。
|
2
MudBodhisattva OP @KNOX 请问我可以在 onNext 里面和 onError 这里对 CompositeSubscription 进行 unsubscribe 吗?
|
3
KNOX 2018-06-15 09:54:50 +08:00
@MudBodhisattva 如果已经添加订阅就可以。
|
4
MudBodhisattva OP @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 了好多,然后在其中一个取消订阅所有 |