В предыдущей статье я писал о вступлении с RxJava. В этой статье я хочу углубиться в то, как интегрировать наше Android-приложение с RxJava и объединить его с Retrofit.
Прежде чем идти дальше, я ожидаю, что вы знаете о Retrofit, если не просто погуглили.
Как обычно, как и другие зависимости. сначала мы должны добавить RxJava и RxAndroid в Gradle, что будет выглядеть так.
compile 'com.squareup.okio:okio:1.6.0' compile 'com.google.code.gson:gson:2.6.2' compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1' compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.6' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'
Второй. Добавьте RxJavaCallAdapterFactory в помощник по модернизации, который будет выглядеть следующим образом.
private Retrofit buildRetrofit() { return new Retrofit.Builder() .baseUrl(ApiConstant.BASE_URL) .client(buildHttpClient()) .addConverterFactory(GsonConverterFactory.create(buildGson())) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); }
В-третьих, в вашем сервисном интерфейсе используйте вот так.
@GET("FooUrl1") Observable<Bar1> getBar1( @Query("count") int count, @Query("page") int page );
В-четвертых, в Interactor я использую шаблон проектирования MVP (мы поговорим об этом в следующей статье). использовать так.
public Observable<Bar1> getBar1() { return service.getBar1(4, 1) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()); } getBar1().subscribe(new SimpleObserver<Bar1>() { @Override public void onCompleted() { super.onCompleted(); setRefreshing(false); } @Override public void onNext(Bar1 response) { super.onNext(response); setRefreshing(false); clearAdapter(); bindUI(response); } @Override public void onError(Throwable e) { super.onError(e); setRefreshing(false); DialogFactory.toast(mContext, "Info", e.getMessage()); } @Override public String getTag() { return TAG; } });
SimpleObserver — это мой пользовательский класс, который расширяется от Observer‹T›.
Надеюсь, вам понравится эта статья. для получения дополнительной информации, просто прокомментируйте или напишите мне по адресу cumy[dot]raditya[at]gmail[dot]com.