2016-10-11 160 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()將在年底被調用。在任何情況下,成功或錯誤。