2016-10-11 17 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()を使用してこの二つの事象。 これは2つの演算子なので、RxCallと論理的にバインドできます。

doOnSubscribe()は、あなたがサブスクライバにアタッチされているときに呼び出されます。

doFinaly()が最後に呼び出されます。いずれの場合も成功またはエラー。

関連する問題