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();
使用量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();