使用RxJava,Retrofit上传进度

时间:2016-10-11 15:09:52

标签: android rx-java

在我的项目中,我使用MVP设计模式,RxJava,RxAndroid和Retrofit来使用API​​调用。目前我正在寻找在我发送图片时尝试显示上传进度的解决方案。我已经看到了几种可能的实现,但我担心它们不适合我的实现。以下是我使用我提到的库消费API调用的方法:

Subscription subscription = mApiService.modVideoFromVideoController(userHash, videoId, publicVideo, rate)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ModifyVideoResponse>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "modVideo onCompleted");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, e.getMessage());
                        Crashlytics.logException(e);
                    }

                    @Override
                    public void onNext(ModifyVideoResponse modifyVideoResponse) {
                        mVideosPresenter.onVideoEdited(position, publicVideo);
                    }
                });
        mCompositeSubscription.add(subscription);

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

实现这一目标的最佳方法是使用副作用方法。

进度视图隐藏/显示

使用doOnSubscribe()和doFinally()绑定这两个事件。 这是两个运算符,因此我们可以使用RxCall逻辑绑定它们。

当您连接到订阅者时,将会调用

doOnSubscribe()

最后将调用

doFinaly()。在任何情况下成功或错误。