2016-10-11 161 views
2

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

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); 

有没有办法实现这一点?

+0

解决方法是通过onNext()发出进度更新 - 你的API是否支持这种方法? – Egor

+0

@Egor不,它没有。有没有其他可能的解决方案不会涉及后端? – funkycookie

+1

http://stackoverflow.com/questions/33338181/is-it-possible-to-show-progress-bar-when-upload-image-via-retrofit-2/33384551#33384551 –

回答

0

实现此目的的最佳方法是使用副作用方法。

对于发展观为隐藏/显示:

绑定doOnSubscribe()和doFinally这两个事件()。 这是两个运算符,所以我们可以将它们与RxCall进行逻辑绑定。

doOnSubscribe()将在您连接到订阅服务器时被调用。

doFinaly()将在年底被调用。在任何情况下,成功或错误。