您的位置:首页 > 移动开发 > Android开发

RxJava Rxandroid retrofit

2016-05-27 13:51 471 查看
其实Retrofit会了。集合RxJava,RxAndroid 就很简单了。

只需要改几个地方。

1。接口里面返回的对象不再是 call,而是Observable

public interface ApiService {
/*  @GET("service/getIpInfo.php")
Call<GetIpInfoResponse> getIpInfo(@Query("ip") String ip);*/

@GET("service/getIpInfo.php")
Observable<GetIpInfoResponse> getIpInfo(@Query("ip") String ip);
}


2.使用的时候注册 一个监听器 addCallAdapterFactory

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ENDPOINT)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();


3.使用 得到的结果处理

ApiService apiService = retrofit.create(ApiService.class);
apiService.getIpInfo("63.223.108.42")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<GetIpInfoResponse>() {
@Override
public void onCompleted() {
mProgressBar.setVisibility(View.GONE);
}

@Override
public void onError(Throwable e) {
mProgressBar.setVisibility(View.GONE);
mTvContent.setText(e.getMessage());
}

@Override
public void onNext(GetIpInfoResponse getIpInfoResponse) {
mTvContent.setText(getIpInfoResponse.data.country);
}
});


真的,我试过了。RxJava 比纯retrofit快很多。真的是,同样的网络请求,感觉倒很快,有的很垃圾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: