正在等待API调用以完成RxJava和Retrofit

时间:2018-01-02 23:16:44

标签: android retrofit rx-java

我使用RxAndroid和RxJava与Kotlin一起向API提出各种请求并将它们异步发送:

    getClient().sendSomeData(data)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    {
                        Log.i("upload", "data ok")
                    },
                    {
                        t ->
                        Log.e("upload", "data error: " + t.stackTrace)
                    }
            );


    getClient().sendSomeOtherData(otherData)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    {
                        Log.i("upload", "otherData ok")
                    },
                    {
                        t ->
                        Log.e("upload", "data error: " + t.stackTrace)
                    }
            );

等等。 我现在想做的是,等待"等待"所有api请求完成并显示进度。我如何等待所有可观测量完成并获得进展回调?

1 个答案:

答案 0 :(得分:0)

回答您的第一个问题herehere,您会看到 id: 1 select_type: SIMPLE table: NULL type: NULL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: Select tables optimized away 方法,该方法是在成功回复后调用的。另外here是此方法的文档。因此,您可以在Observable.onCompleted方法调用中简单地实现第三个操作,并修改您的请求的状态信息。

如果涉及请求进度状态,我不确定,但我认为RxJava不提供开箱即用的此功能。但是我找到了答案here(使用了Retrofit库)。