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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

RxJava中BehaviorSubject适合的使用场景

發布時間:2024/9/30 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RxJava中BehaviorSubject适合的使用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇大體介紹了RxJava中幾種常見的Subject特性

下面我們著重闡述BehaviorSubject在Android中適合的使用場景及其實現方式

場景:A頁面正在請求數據D時立馬跳到B頁面,B頁面希望能夠接受到A頁面發起請求返回的數據

解決方案有多種eg:使用Android 駐留廣播機制、EventBus、RxJava。

該篇主要介紹RxJava的具體實現方式
它和前面幾種方案都類似,都是在B頁面注冊廣播事件、在數據D回來后立馬發送廣播(即使注冊或者訂閱的是在發送廣播/事件之后)


第一步:編寫一個類,該類負責發送事件和訂閱事件

public class MyDataEvent {//能夠緩存訂閱之前的最新數據(如果有)private static BehaviorSubject<String> sTotalAssetEvent = BehaviorSubject.create();private MyDataEvent() {}/*** 發送事件* @param text*/public static void publish(String text) {sTotalAssetEvent.onNext(text);}/*** 訂閱事件* @param action* @return*/public static Subscription subscrible(Action1<String> action) {return sTotalAssetEvent.subscribe(action);}/*** 反訂閱 防止內存泄露* @param subscription*/public static void unSubscrble(Subscription subscription) {if (subscription != null && !subscription.isUnsubscribed()) {subscription.unsubscribe();subscription = null;}} }

第二步:在A頁面請求數據回來后發送數據事件通知

MyDataEvent.publish("this is a data"+(data++));

第三步:在B頁面中訂閱事件并對數據做業務邏輯處理

public class BActivity extends Activity {private Subscription mSubscription;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_b);mSubscription = MyDataEvent.subscrible(new Action1<String>() {@Overridepublic void call(String data) {//receive event and process dataLog.d("dbs", BActivity.class.getSimpleName() + ": " + data);}});}@Overrideprotected void onDestroy() {super.onDestroy();MyDataEvent.unSubscrble(mSubscription);} }

這樣無論是數據在進入頁面B前到達還是數據在進入頁面B之后到達,B頁面都會接受到數據,因為此處使用了BehaviorSubject。

效果圖

附件下載

如果對BehaviorSubject不是很了解可以參看RxJava中常見的幾種Subject

總結

以上是生活随笔為你收集整理的RxJava中BehaviorSubject适合的使用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。