国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

RxJava的簡單入門

2019-11-07 23:56:19
字體:
供稿:網(wǎng)友

Rxjava的簡單入門

什么是RxJava

GitHub上是這么說的:

一個(gè)在 Java VM 上使用可觀測的序列來組成異步的、基于事件的程序的庫

本質(zhì)上做的就兩個(gè)字 : 異步. 剩下的定語: 可觀測序列,基于事件,響應(yīng)式,等等 全是用來修飾異步這個(gè)詞, 所以可以簡單地認(rèn)為他跟handler,AsyncTask一樣的做異步任務(wù)的東西;

然后你要明白它好在哪兒:

本質(zhì)上還是就兩個(gè)字 線程切換方便,代碼邏輯清楚. 現(xiàn)在是不是想不明白它為啥這么牛是么,來,讓我用通俗的,人類可以明白的語言解釋一下.

線程切換方便 之前我們切換線程,是不是先寫一個(gè)Thread然后用handler來通訊,或者h(yuǎn)andler.post或者view.post.要寫老多代碼.然而在RxJava這兒,線程切換就兩行代碼: 這里寫圖片描述

第一行上面的在子線程中運(yùn)行,第二行下面的在主線程中運(yùn)行. 怎么樣?爽不爽?!

代碼邏輯清楚

假設(shè)我們現(xiàn)在有這么一個(gè)需求:

Android設(shè)備上展示已安裝的第三方app列表

嗯,現(xiàn)在你的腦子里一定在思考應(yīng)該怎么辦,我個(gè)人的大致思路如下:

->調(diào)用系統(tǒng)api getapplicationInfoList() ->for循環(huán)過濾掉不是系統(tǒng)應(yīng)用 ->得到 ApplicationInfo (并無卵用,我們要的是AppInfo) ->for()循環(huán)得到 AppInfo -> 由于獲取ApplicationInfo、過濾數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)相對比較耗時(shí)上面的方法哦子線程 ->線程切換到主線程中更新視圖

嗯,是不是感覺寫完之后全是循環(huán)套循環(huán),括號套括號,類似于這個(gè): 無恥的借用了拋物線大大一張圖

不要在意內(nèi)容,只需要知道,會(huì)有辣么多的括號,for循環(huán)抱著for循環(huán),動(dòng)不動(dòng)還來個(gè)if啥的,可能現(xiàn)在你剛寫完你還能看懂,可是如果過了一個(gè)月你在看這些代碼,是不是就完全不知道到底寫了些什么? 蒙圈了吧!!! 哈哈

接下來就要請出RxJava了 ; 這里寫圖片描述

這里寫圖片描述

有人說了,你這代碼明明是特么的變多了啊,哪兒來的簡潔了,大兄弟消消氣,代碼簡潔不一向是寫得少,而是閱讀起來方便.

這個(gè)RxJava的思路事實(shí)上是這樣的,先create出來一個(gè)ApplicationInfoList的list,然后用filter過濾掉非系統(tǒng)應(yīng)用,然后用map將ApplicationInfo轉(zhuǎn)換成為AppInfo,然后祭出線程切換的兩行神奇代碼,把上面的這些放到子線程中,然后后面在主線程中更新視圖.

完成,有的大兄弟還是蒙圈,沒事,你看咱們不看代碼 ,就看這幾個(gè)操作符(create,map,filter)啥的,里面的代碼不看,這樣的話代碼的邏輯是不是清楚了許多.

RxJava怎么寫

知道了他的定義和好處,接下來就要看他怎么寫了,首先聲明,接下來的代碼,大部分基于RxJava2,其實(shí)RxJava 1 2的用法差不多了;

因?yàn)槭腔谟^察者模式,所以必定會(huì)有觀察者和被觀察者,這里的觀察者可以叫做Publisher(發(fā)射源),被觀察者叫做(Observersable),流程呢,大致是這個(gè)樣子的:

為了形象生動(dòng)呢,接下來要利用你們的想象力,現(xiàn)在發(fā)射源是一個(gè) : 犯人,是的,就是監(jiān)獄里的犯人; 那么接收器就是 :是的你沒有猜錯(cuò),就是獄警. 現(xiàn)在犯人(Publisher)發(fā)了一個(gè)信號 : 我要越獄 . 然后這個(gè)信號開始傳播–>犯人路人甲(哦,你要越獄)–>犯人路人乙(手賤,過濾了一下(filter),變?yōu)?“我要”)–>犯人路人丙(鬼知道他做了什么,變?yōu)?“我要你” ##污##)–>獄警(WQNMLGB)接收到了信息,并且進(jìn)行了處理.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙山县| 青海省| 赣榆县| 姜堰市| 宁化县| 万年县| 荥阳市| 扶风县| 平阳县| 鸡泽县| 夏河县| 新田县| 黎川县| 无极县| 丽江市| 辰溪县| 乌恰县| 桂平市| 闵行区| 隆子县| 泗水县| 吴堡县| 长兴县| 滨州市| 巴楚县| 印江| 阜阳市| 建宁县| 杭州市| 河源市| 聂荣县| 壤塘县| 马关县| 汶上县| 怀柔区| 织金县| 永济市| 商水县| 青河县| 利津县| 湘乡市|