【问题标题】:Hot to track progress with RxAndroid?使用 RxAndroid 跟踪进度很热门?
【发布时间】:2015-09-12 20:50:00
【问题描述】:

我的项目中有 Retrofit 库和 RxAndroid。

例如,我从我的 api 调用了一些方法

public void loadSomething() {
   getApi().getSomething()                
      .subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread())
      .subscribe(new Subscriber<Something>() {
                    @Override
                    public void onCompleted() {

                    }
                    @Override
                    public void onError(Throwable e) {

                    }
                    @Override
                    public void onNext(Something s) {

                    }
                });
}

我应该如何跟踪这个 observable 的进度,例如防止用户第二次启动它? 是否应该在开始设置inProgress = true; 和所有回调方法设置inProgress = false; 之前添加我的自定义标志?

我可以使用 RxAndroid 功能吗?还是保证一次api调用不会并行启动几次?

【问题讨论】:

    标签: java rx-java rx-android


    【解决方案1】:

    您可以使用Do operator

    您可以在doOnSubscribe() 中设置inPogress = true,在doOnComplete() 中设置inProgress = false

    同样调用subscribe 会返回Subscription。你可以使用isUnsubscribed()来检查通话是否结束。

    【讨论】:

    • 我会使用 doOnTerminate 来始终重置 inProgress 值,即使发生错误也是如此。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2013-04-20
    • 2013-01-10
    • 1970-01-01
    相关资源
    最近更新 更多