Retrofit+RxJava的联合使用
来源:互联网 发布:华彩软件站下载 编辑:程序博客网 时间:2024/06/05 16:55
依赖库
//rxjava和retrofitcompile 'io.reactivex:rxjava:1.1.0'compile 'io.reactivex:rxandroid:1.1.0'compile'com.squareup.retrofit2:retrofit:2.0.0-beta4'compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'compile 'com.google.code.gson:gson:2.6.2'compile 'com.jakewharton:butterknife:7.0.1'
在清单文件中配置权限
<uses-permission android:name="android.permission.INTERNET" />
- 创建接口,配置参数
以此接口为例 https://api.douban.com/v2/movie/top250?start=0&count=10
public interface RxjavaService { @GET("top250") Observable<RetrofitEntity> getRxjavaData(@Query("start") int start, @Query("count") int count);}
如果只是retrofit,而没有用到rxjava时接口可以写成:
public interface RetrofitService { @GET("top250") Call<RetrofitEntity> getRetrofitData(@Query("start")int start,@Query("count")int count);}
创建javabean类 RetrofitEntity
因为是get请求,可以在网页上获取数据,然后生成javabea类’
在mainActivity中的使用
private void gedatas() { //添加rxjava后的请求 String baseUrl = "https://api.douban.com/v2/movie/"; final Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); RxjavaService server = retrofit.create(RxjavaService.class); server.getRxjavaData(0,10) .subscribeOn(Schedulers.io()) .observeOn((AndroidSchedulers.mainThread())) .subscribe(new Subscriber<RetrofitEntity>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(RetrofitEntity retrofitEntity) { mTextview.setText(retrofitEntity.getSubjects().get(0).getTitle()); } }); }
正常情况下,到此处就结束了,撒有哪啦
封装
- 将retrofit和rxjavaserver放在同一个方法中
public class HttpMethods { public static final String BASE_URL="https://api.douban.com/v2/movie/"; private static final int DEFAULT_TIMEOUT=5; private Retrofit mRetrofit; private RxjavaService mRxjavaService; private HttpMethods(){ OkHttpClient.Builder httpClientBuilder = new OkHttpClient().newBuilder(); httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS); mRetrofit = new Retrofit.Builder() .client(httpClientBuilder.build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .baseUrl(BASE_URL) .build(); mRxjavaService=mRetrofit.create(RxjavaService.class); } private static class singletonHolder{ private static final HttpMethods INSTANCE = new HttpMethods(); } public static HttpMethods getInstance(){ return singletonHolder.INSTANCE; } public void getRxjavaData(Subscriber<RetrofitEntity> subscriber,int start,int count){ mRxjavaService.getRxjavaData(start,count) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); }}
- 封装后再mainactivity中的使用
public void getdata2() { //利用封装后的retrofit来请求 mSubscriber = new Subscriber<RetrofitEntity>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(RetrofitEntity retrofitEntity) { mTextview.setText(retrofitEntity.getSubjects().get(1).getTitle()); } }; HttpMethods.getInstance().getRxjavaData(mSubscriber,0,10); }
这次真的结束了,当然,这只是一次简单的解析,想了解更多可以访问:
http://gank.io/post/56e80c2c677659311bed9841
阅读全文
1 0
- Retrofit+RxJava的联合使用
- Retrofit+RxJava的联合使用
- Okhttp+Retrofit+Rxjava+MVP联合使用
- Retrofit+RxJava的使用
- Retrofit+RXJava的使用
- Retrofit + RxJava 的结合使用
- Retrofit + RxJava的配合使用
- RXJava+retrofit的使用尝试
- MVP+Rxjava+Retrofit的使用
- Rxjava+Retrofit的简单使用
- Retorfit+RxJava的联合使用
- 使用Retrofit和RxJava的生命周期管理
- Android中的RxJava,Retrofit,MVP的使用
- Rxjava 和 Retrofit 的封装使用
- Rxjava与retrofit的网络访问使用
- 【Android - 框架】之Retrofit+RxJava的使用
- Retrofit和RxJava的结合使用
- 优雅的使用MVP+RxJava+Retrofit框架
- hystrix的超时含义
- jquery.lazyload 懒加载
- Spark---Word Count
- 34 linux系统管理
- SpringBoot
- Retrofit+RxJava的联合使用
- 安装qrcode或canvas的坑
- ECharts3基础教程(三)title配置篇
- Js实现Ajax
- JQuery使用(二)(事件)
- python之回调函数
- UVALive2857 POJ2578 HDU1037 ZOJ2186 Keep on Truckin'【水题】
- 哈希表(开放定址法处理冲突)(1013)
- 量化策略——市盈率策略选股