RxJava + Retrofit2 + OkHttp总结

2017-10-16  本文已影响8人  itstrongs

面试中几次被问到是否了解RxJava、Retrofit、OkHttp,以及封装使用,看来不会用这三剑客工作不好找啊,总结一下最近学习的关于RxJava + Retrofit2 + OkHttp的知识点。

首先总结一下他们是干什么的。

RxJava其实就是处理异步请求的,Retrofit2是基于okhttp的可以方便通过注解来请求网络的框架,自带okhttp对象,也可以传入自己创建的okhttp对象,可以在自己创建的okhttp对象很多网络请求配置,比如设置超时、拦截器、持久化、缓存、公共参数、Gson解析...

所以RxJava + Retrofit2 + OkHttp结合使用中,RxJava负责异步处理,Retrofit2负责网络请求,OkHttp负责网络请求处理。

流程

retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(builder.build())
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
@GET("top250")
Observable<MovieSubject> getTop250(@Query("start") int start, @Query("count")int count);
mMovieData.getMovieData(0, 20)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<MovieSubject>() {
            @Override
            public void onCompleted() { }

            @Override
            public void onError(Throwable e) { }

            @Override
            public void onNext(MovieSubject movieSubject) {
                LogUtils.d("movieSubject:" + movieSubject);
                mMovieAdapter.setMovies(movieSubject.subjects);
                mMovieAdapter.notifyDataSetChanged();
            }
        });
上一篇 下一篇

猜你喜欢

热点阅读