2016-10-11 4 views
2

В моем проекте я использую шаблон проектирования MVP, RxJava, RxAndroid и Retrofit для использования вызовов API. В настоящее время я ищу решения для попыток отобразить процесс загрузки, пока я отправляю изображение. Я видел пару возможных реализаций, но я боюсь, что они не соответствуют моей реализации. Вот как я использую вызов API с библиотеками, о которых я упоминал:Загрузить прогресс с помощью RxJava, Retrofit

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

Лучший способ достичь этого - использовать методы побочных эффектов.

Для прогресса просмотра скрыть/показать:

Bind эти два события с doOnSubscribe() и doFinally(). Это два оператора, поэтому мы можем логически связать их с RxCall.

doOnSubscribe() будет называться, когда вы будете прикреплены к подписчику.

и

doFinaly() будет называться в конце. В любом случае успех или ошибка.

Смежные вопросы