日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

RxJava尝试取代Handler初探

發(fā)布時(shí)間:2024/7/5 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RxJava尝试取代Handler初探 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在之前的一篇文章中,我們探究了RxJava的使用方法,詳細(xì)請(qǐng)看https://www.cnblogs.com/yanyojun/p/9745675.html

根據(jù)扔物線大神的描述,如果用一個(gè)詞來概括RxJava,那就是“異步”,確實(shí),幾乎上能用Handler+Thread進(jìn)行異步邏輯處理都能用RxJava處理。但是實(shí)際上,Handler在臨床上不僅用于異步通信,看下面一個(gè)例子。

1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 37 mHandler.post(() -> { 38 log("mhandler post"); //我們希望后執(zhí)行這部分邏輯 39 }); 40 log("over"); //我們希望先執(zhí)行這部分邏輯 42 }

如上述代碼,我們希望over和mHandler post兩個(gè)日志都在主線程中打印出來,其中,先打印over,后打印mHandler post。但是mhandler post的代碼必須在over前面。這個(gè)時(shí)候我們就可以借助Handler進(jìn)行實(shí)現(xiàn)。

Handler會(huì)將要執(zhí)行的代碼放到消息隊(duì)列中,等待主線程空閑的時(shí)候再取出來執(zhí)行。

?

那RxJava能否可以實(shí)現(xiàn)呢?

答案必須是可以的,看下面代碼:

1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 18 rx.Observable.empty() 19 .observeOn(AndroidSchedulers.mainThread()) 20 .subscribe(new Subscriber<Object>() { 21 @Override 22 public void onCompleted() { 23 log("onCompleted"); 24 } 25 26 @Override 27 public void onError(Throwable e) { 28 log("onError"); 29 } 30 31 @Override 32 public void onNext(Object o) { 33 log("onNext"); 34 } 35 });40 log("over"); 41 42 }

這里有一個(gè)坑需要注意下,必須設(shè)置?.observeOn(AndroidSchedulers.mainThread())?否則的話,還是會(huì)先打印onCompleted,最后打印over的。切記切記。

?

轉(zhuǎn)載于:https://www.cnblogs.com/yanyojun/p/9799449.html

總結(jié)

以上是生活随笔為你收集整理的RxJava尝试取代Handler初探的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。