rxjava_for_android icon indicating copy to clipboard operation
rxjava_for_android copied to clipboard

关于Subscriber

Open helengray opened this issue 8 years ago • 3 comments

Observable每次subscribe都要新new一个Subscriber吗,一个Subscriber对象是否可以重复使用

helengray avatar Apr 29 '16 03:04 helengray

可以的,我们可以模拟两个按钮对映两个被订阅者,并在点击时分别为同一个订阅者发出数据,那么这个订阅者就有责任去区分数据来自于何方,并分别处理,大致代码如下:

//被订阅者1 @OnClick(R.id.btn1) void btn1() { Observable.just(1) .compose(this.<Integer>bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mReuseSubscriber); } //被订阅者2 @OnClick(R.id.btn2) void btn2() { Observable.just("string") .compose(this.<String>bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mReuseSubscriber); }

` //订阅者 mReuseSubscriber = new Observer<Object>() {

       @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(Object data) {
            if (data.getClass() == Integer.class) {
                Toast.makeText(getActivity(), "The data from Btn1!", Toast.LENGTH_SHORT).show();
            } else if (data.getClass() == String.class) {
                Toast.makeText(getActivity(), "The data from Btn2!", Toast.LENGTH_SHORT).show();
            }
        }
    };

`

cn-ljb avatar Apr 29 '16 06:04 cn-ljb

btn1重复点击多次,mReuseSubscriber 每次都可以响应吗???我是结合Retrofit使用的。subscriber是一个成员变量,我第一次请求可以处理,但是再次请求时subscriber就不响应了,不知道是不是Retrofit的问题。

helengray avatar Apr 29 '16 07:04 helengray

根据你所说的猜想应该是Retrofit问题,你可以阅读这篇文章: Retrofit 2.0,在**Call (10:30)**这部分或许会对你有所帮助

cn-ljb avatar Apr 29 '16 08:04 cn-ljb