MVP+Retrofit+RxJava+Dagger框架
Posted 劲火星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVP+Retrofit+RxJava+Dagger框架相关的知识,希望对你有一定的参考价值。
MVP和Retrofit还有Dagger的使用和我们平常是差不多的,这里就不过多的讲解了
主要来讲解一下RxJava和Retrofit的结合
下面我们来看一下RxJava和retrofit的结合使用,为了使Rxjava与retrofit结合,我们需要在Retrofit对象建立的时候添加一句代码
addCallAdapterFactory(RxJavaCallAdapterFactory.create())
,当然你还需要在build.gradle文件中添加如下依赖:
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
完整的代码如下:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.douban.com/v2/")
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().create()))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava
.build();
然后我们还需要修改RetrofitService 中的代码:
public interface RetrofitService
@GET("book/search")
Observable<Book> getSearchBook(@Query("q") String name,
@Query("tag") String tag, @Query("start") int start,
@Query("count") int count);
可以看到,在原来的RetrofitService 中我们把getSearchBook方法返回的类型Call改为了Observable,也就是被观察者。其他都没变。然后就是创建RetrofitService 实体类:
RetrofitService service = retrofit.create(RetrofitService.class);
和上面一样,创建完RetrofitService ,就可以调用里面的方法了:
Observable<Book> observable = service.getSearchBook("Hello", null, 0, 1);
其实这一步,就是创建了一个rxjava中observable,即被观察者,有了被观察者,就需要一个观察者,且订阅它:
observable.subscribeOn(Schedulers.io())//请求数据的事件发生在io线程
.observeOn(androidSchedulers.mainThread())//请求完成后在主线程更显UI
.subscribe(new Observer<Book>() //订阅
@Override
public void onCompleted()
//所有事件都完成,可以做些操作。。。
@Override
public void onError(Throwable e)
e.printStackTrace(); //请求过程中发生错误
@Override
public void onNext(Book book) //这里的book就是我们请求接口返回的实体类
在上面中我们可以看到,事件的消费在Android主线程,所以我们还要在build.gradle中添加如下依赖:
compile 'io.reactivex:rxandroid:1.2.0'
这样我们就引入了RxAndroid,RxAndroid其实就是对RxJava的扩展。比如上面这个Android主线程在RxJava中就没有,因此要使用的话就必须得引用RxAndroid。
以上是关于MVP+Retrofit+RxJava+Dagger框架的主要内容,如果未能解决你的问题,请参考以下文章
Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
RxJava+Retrofit+OkHttp深入浅出-mvp(使用篇)