android+3.0+java8_Android Retrofit2.0+RxJava3.0 基本使用
一,ReactiveX
要學習RxJava,那么不得不提他的由來ReactiveX,ReactiveX 是一個專注于異步編程與控制可觀察數據(或者事件)流的API。它組合了觀察者模式,迭代器模式和函數式編程的優秀思想。ReactiveX是Reactive Extensions的縮寫,一般簡寫為Rx,最初是LINQ的一個擴展,由微軟的架構師Erik Meijer領導的團隊開發;
二,Rx的發展
Rx這幾年非常流行,以至于開發出多種語言版本,例如RxJava 、?RxGo 、RxJS、RxKotlin、RxPY、Rx.NET等等;Rx的大部分語言庫由ReactiveX這個組織負責維護,社區網站是?reactivex.io。
三,RxJava
RxJava是響應式編程(Reactive Extensions)的java實現,它基于觀察者模式的實現了異步編程接口。
Rxjava 3.x 的github官網;
Rxjava 3.0的一些改變:官方Wiki;
Rxjava 3.x 文檔可以在官方javadoc中找到
1,Retrofit + RxJava3組合使用
首先要引入依賴
implementation
"io.reactivex.rxjava3:rxjava:3.0.0"
implementation 'io.reactivex:rxandroid:
1.
2.
1'
implementation 'com.squareup.retrofit
2:retrofit:
2.
7.
0'
implementation 'com.squareup.retrofit
2:adapter-rxjava
3:
2.
9.
0'
相關配置module下的build.gradle
android
{
compileOptions
{
sourceCompatibility
JavaVersion.VERSION_1_8
targetCompatibility
JavaVersion.VERSION_1_8
}
}
注意Retrofit和RxJava組合使用時,Retrofit中使用的rxjava適配器(adapter-rxjava3)要和RxJava版本(io.reactivex.rxjava3:rxjava:3.0.0)一致;如本例都是使用的時3.0;關于先前Rerotfit沒有Rxjava3.0適配器問題;
創建Retrofit時如果要使用rxjava適配,注意不要寫錯,正確姿勢如下代碼:
Retrofit retrofit =
new Retrofit.Builder()
.addCallAdapterFactory(RxJava3CallAdapterFactory.createSynchronous())
// Or
// .addCallAdapterFactory(RxJava3CallAdapterFactory.createWithScheduler(Schedulers.io()))
.baseUrl(
"")
.build();
2,Retrofit + RxJava組合使用
如果要使用1.0可以這樣添加依賴
implementation 'io.reactivex:rxjava:
1.
0.
14
implementation 'io.reactivex:rxandroid:
1.
0.
1'
implementation 'com.squareup.retrofit
2:retrofit:
2.
0.
2'
implementation 'com.squareup.retrofit
2:adapter-rxjava:
2.
0.
2'
Retrofit創建的正確姿勢:
Retrofit retrofit =
new Retrofit.Builder()
.baseUrl(
"http://www.baidu.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
3,Retrofit + RxJava2.0組合使用
關于RxJava2.0的使用要從一個異常說起:
異常:
Could not locate call adapter for io.reactivex.Observable.
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' RxJava適配器是1.0
所以換成RxJava2.0就可以了,原因Android項目中使用的是RxJava2.0,那么Retrofit要配合Rxjava使用,相應的要配置Rxjava2.0適配器;以此類推如果要使用Rxjava3.0那么相應的Retrofit中的
兩種方式配置Retrofit中使用的RxJava2.0適配器
1,第三方的提供的RxJava2.0適配器
implementation? 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
2,從Retrofit 2.2.0版開始,RxJava2有一個官方提供的適配器:
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(new OkHttpClient.Builder().build())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();
return retrofit.create(serviceClass);
四,Retrofit+Rxjava2具體使用案例
Retrofit+Rxjava2實現圖片批量下載的功能
文章來源: blog.csdn.net,作者:Ang_qq_252390816,版權歸原作者所有,如需轉載,請聯系作者。
原文鏈接:blog.csdn.net/ezconn/article/details/109224878
總結
以上是生活随笔為你收集整理的android+3.0+java8_Android Retrofit2.0+RxJava3.0 基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java线程数翻倍性能翻倍_术业专攻 |
- 下一篇: explain mysql 权限_exp