真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

androidrx,androidR系統(tǒng)

android 網(wǎng)絡(luò)請(qǐng)求Retrofit+Rxjava報(bào)錯(cuò)

檢查項(xiàng)目依賴(lài)的retrofit和rxjava版本是否一致,大多數(shù)java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.都是由于這個(gè)問(wèn)題造成的

創(chuàng)新互聯(lián)公司始終致力于在企業(yè)網(wǎng)站建設(shè)領(lǐng)域發(fā)展。秉承“創(chuàng)新、求實(shí)、誠(chéng)信、拼搏”的企業(yè)精神,致力為企業(yè)提供全面的網(wǎng)絡(luò)宣傳與技術(shù)應(yīng)用整體策劃方案,為企業(yè)提供包括“網(wǎng)站建設(shè)、成都響應(yīng)式網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站建設(shè)、微信網(wǎng)站建設(shè)、微信小程序、購(gòu)物商城網(wǎng)站建設(shè)、平臺(tái)網(wǎng)站建設(shè)秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

2. compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

compile 'com.squareup.retrofit2:retrofit:2.1.0'

把版本調(diào)成一樣的,重新gradle一下應(yīng)該就闊以了

android 用rxjava和retrofit時(shí)怎么解決返回?cái)?shù)據(jù)類(lèi)型不一致

1. 首先定義帶泛型的返回結(jié)果,Retrofit API 的原生結(jié)果映射為這種形式:

class ResultT {

String ResultMessage;

int ResultCode;

T Data;

}

2. 處理錯(cuò)誤的方法和 @朱詩(shī)雄 前輩方法差不多,放到作為靜態(tài)方法放到 RetroUtil 里,這里 ApiException 為自己定義的一個(gè)異常,放入錯(cuò)誤碼和錯(cuò)誤信息(錯(cuò)誤碼不止一個(gè)):

static T ObservableT flatResult(ResultT result) {

return Observable.create(subscriber - {

switch (result.ResultCode) {

case Constants.SUCCESS_CODE:

subscriber.onNext(result.Data);

break;

case Constants.ERROR_CODE:

subscriber.onError(new ApiException(result.ResultCode, result.ResultMessage);

break;

default:

// ...

}

subscriber.onCompleted();

}

});

}

3. 在 API 包裝類(lèi)對(duì)于上述 ResultT 格式的返回結(jié)果,統(tǒng)一調(diào)用 flatMap(RetroUtil::flatResult) 后的 API。這樣每個(gè) API 的返回結(jié)果就是 ObservableData 的形式并且在 errorHandler 中統(tǒng)一處理錯(cuò)誤了。

// 接口方法

ObservableResultUser getUserInfo();

// 包裝后的方法

ObservableUser getUserInfo() {

return mApi.getUserInfo.flatMap(RetroUtil::flatResult);

}

// 調(diào)用時(shí)

apiWrapper.getUserInfo()

.subscrible(user - {

// 處理正常邏輯

}, error - {

// 處理錯(cuò)誤邏輯和異常,這里封裝時(shí)通常也會(huì)統(tǒng)一處理,

// 提供一個(gè)默認(rèn)的 Action1Throwable 參數(shù),彈出

// throwable 的 message 打印日志等

});

rxandroid和rxjava的區(qū)別

RxJava要比EventBus的應(yīng)用更廣泛,EventBus僅僅是作為一種消息的傳遞工具,但是RxJava里面幾乎可以做任何事情。

如果是Android開(kāi)發(fā)的話(huà),可以使用RxAndroid,這是對(duì)RxJava的一個(gè)擴(kuò)展,結(jié)合sqare公司的retrofit可以很輕松的完成網(wǎng)絡(luò)的訪問(wèn)。

我們知道,在Android中異步操作一般使用AsycTask來(lái)完成,但是AsycTask有很多缺點(diǎn),如不能方便的終止任務(wù)的執(zhí)行等。

RxAndroid完全可以替代AsycTask來(lái)完成各種異步操作,而且還有BindActivity和BindFragment方法,你根本不需要考慮異步操作時(shí)的Activity和Fragment的生命周期問(wèn)題,還有更加強(qiáng)大的的鏈?zhǔn)秸{(diào)用,可以使程序很簡(jiǎn)潔。

EventBus有個(gè)缺點(diǎn)就是凡是使用了EventBus的類(lèi)都不能進(jìn)行混淆了,否則Evnetbus就找不到OnEvent方法了。

以上,推薦使用RxAndroid。


文章名稱(chēng):androidrx,androidR系統(tǒng)
文章位置:http://weahome.cn/article/hojssd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部