【Android - 框架】之Retrofit+RxJava的使用
来源:互联网 发布:性价比高的电钢琴知乎 编辑:程序博客网 时间:2024/06/02 07:30
前几天分别对Retrofit和RxJava进行了总结,这个帖子打算把Retrofit结合RxJava使用的方法总结以下。有还不了解Retrofit或RxJava的朋友可以参考下面的帖子学习~
【Android - 框架】之Retrofit的使用
【Android - 框架】之RxJava的使用
首先导入依赖:
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:24.2.1' testCompile 'junit:junit:4.12' compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'io.reactivex:rxjava:1.2.2' compile 'io.reactivex:rxandroid:1.2.1'}
<uses-permission android:name="android.permission.INTERNET" />
在贴出代码之前先声明一下,这个帖子里面用到的案例和Retrofit的帖子中用到的案例是同一个。
代码:
两者结合的代码(未封装):
Retrofit retrofit = new Retrofit.Builder() .baseUrl(SharedData.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); RetrofitService service = retrofit.create(RetrofitService.class); Observable<InfoData> observable = service.getInfoData(); observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<InfoData>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(InfoData infoData) { Toast.makeText(MainActivity.this, infoData.getName(), Toast.LENGTH_SHORT).show(); } });
两者结合的代码(封装):
封装好的工具类:
import com.example.itgungnir.testretrofit_rxjava.share.SharedData;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Observable;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;/** * 网络访问的工具类 */public class HttpUtil { private static HttpUtil instance; private Retrofit retrofit; private HttpUtil() { this.instance = this; this.retrofit = new Retrofit.Builder() .baseUrl(SharedData.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); } private static HttpUtil getInstance() { if (instance == null) { synchronized (HttpUtil.class) { if (instance == null) { return new HttpUtil(); } } } return instance; } public static <T> T getService(Class<T> c) { return getInstance().retrofit.create(c); } public static <T> void init(Observable<T> observable, Subscriber<T> subscriber) { observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(subscriber); }}在主线程中调用工具类:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpUtil.init(HttpUtil.getService(RetrofitService.class).getInfoData(), new Subscriber<InfoData>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(InfoData infoData) { Toast.makeText(MainActivity.this, infoData.getName(), Toast.LENGTH_SHORT).show(); } }); }}
运行结果:
0 1
- 【Android - 框架】之Retrofit+RxJava的使用
- Android开发之Retrofit+RxJava的使用
- Android框架学习之Retrofit(二)RxJava和Retrofit2.0的结合使用
- Android 网络请求框架之Rxjava+Retrofit
- Android 网络请求框架之Rxjava+Retrofit
- Android 网络请求框架之Rxjava+Retrofit
- Android 网络请求框架之Rxjava+Retrofit
- 优雅的使用MVP+RxJava+Retrofit框架
- android框架之Retrofit的使用
- 【Android - 框架】之Retrofit的使用
- Android中的RxJava,Retrofit,MVP的使用
- 【Android - 框架】之RxJava的使用
- Retrofit+RxJava的使用
- Retrofit+RXJava的使用
- Android网络框架之Retrofit + RxJava + OkHttp
- Android 当前比较新的框架组合,Retrofit,OKHttp,RXJava的一些简单使用
- Android MVP+RXJava+Retrofit框架的初步构建
- Retrofit 2.0 + RxJava 2.0搭建简单的Android请求框架。
- 揭密如何写ASP木马后门
- CSS最佳实践
- vue+webpack在“双十一”导购产品的技术实践(转发)
- IDEA搭建服务器(tomcat)及数据库(mysql)并创建webapp项目
- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
- 【Android - 框架】之Retrofit+RxJava的使用
- web前端之HTML中a标签锚点
- md5WithRSA
- POJ2051 Argus 优先队列
- 【拥抱开源】十年之做C#屏幕截图工具全面开源
- 16.11.10
- Cisco's router and switch : Encryption and Crack
- Rectangle Area
- 多线程等待唤醒机制:从wait()和sleep()的差别说起