对于rxjava 研究的还不是很深刻,先学会怎么用,再去看源码吧。记录一个通过RxJava+Retrofit+OkHttp框架请求网络数据的小案例:
这里以请求天气信息为例:
String url = "https://api.seniverse.com/v3/weather/";
OkHttpClient okHttpClient = new OkHttpClient();
Retrofit retrofit = new Retrofit.Builder().baseUrl(url)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
retrofit.create(Service.class)
.getWeather(AppCommon.XINZHI_KEY, "beijing")
.subscribeOn(Schedulers.io())//指定网络请求所在的线程
.observeOn(AndroidSchedulers.mainThread())//指定请求以后需要操作的线程
.subscribe(weatherBeanHttpResult -> {
Log.e("wh", "返回天气" + weatherBeanHttpResult.getResults().get(0).getNow().getText());
});
Service类
@GET("now.json?")
Observable<WeatherBean> getWeather(@Query("key") String key, @Query("location") String location);
网上优秀的帖子很多,学习以后会把自己的学习心得再发表一下,加深一下印象。