重新订阅Android片段中的Observable

问题描述 投票:0回答:1

RxJava / Android的新手,想知道将订户放置在片段中的什么位置?

现在类似以下代码的内容被放置在片段的onCreate中。当收到不需要的新数据时,会多次调用onNext。它将重新加载多次接收到的数据,应该只执行一次。解决此问题的正确方法是什么?

如果我取消订阅,再次(回到“活动”之后)返回该片段时,在哪里以及如何重新订阅以侦听新数据?

   Some.replaySubject
                    .subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<Status>() {
                        @Override
                        public void onNext(Status status) {

                            switch (status) {
                                case NotLoaded:
                                   ...
                                    break;
                                case Loading:
                                    showSpinner();
                                    break;
                                case Background_Loading:
                                  ...
                                    break;
                                case Complete:
                                   reloadData();
android fragment rx-java rx-android
1个回答
0
投票

使用量1。可观察到的物体在首次发射后完成。

http://reactivex.io/documentation/operators/take.html

您只能发出Observable发出的前n个项目,然后通过修改Observable来完成而忽略其余部分使用取算运算符。

Some.replaySubject
    .take(1)
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new Observer<Status>() {
        @Override
        public void onNext(Status status) {

            switch (status) {
                case NotLoaded:
                    ...
                    break;
                case Loading:
                    showSpinner();
                    break;
                case Background_Loading:
                    ...
                    break;
                case Complete:
                    reloadData();
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.