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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android组建之间通信_Android各组件/控件间通信利器之EventBus

發布時間:2025/3/15 Android 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android组建之间通信_Android各组件/控件间通信利器之EventBus 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際項目開發過程中,經常遇到如下場景:不同的應用程序組件的控件間具有一定的相互關聯性,其中用戶對后者進行的某種操作會引起前者的相應改變。舉一個具體的場景:以糗事百科為例,在糗事列表頁和詳情頁頁,對于每個糗事而言,布局基本一致,在詳情頁點擊了個贊,贊的數量增加,同時贊的圖標發生了變化,此時返回到列表頁,此糗事上的贊圖標以及數量與剛剛詳情頁的需要保持一致。在舉一個例子,對于多個底部導航tab下的資訊類閱讀app,在咨詢詳情頁點擊了收藏,然后收藏成功,此時回到底部tab中的個人中心,假如個人中心中有我的收藏,同時后面顯示的是收藏數量,此時此收藏數量需要同于于剛剛用戶所進行的收藏/取消收藏而即時更改數字。凡此種種,類似需求場景非常常見。

有時候,當此類需求相對簡單時,通過接口以實現回調等方式可以完成,但是當不同組件/控件之間的關系紛繁復雜時,基于接口的方案不僅使得代碼非常繁瑣,同時是的程序邏輯很混亂,基于此,EventBus,為此類需求的實現提供了非常方便的方案。

網上已經有不少EventBus的使用介紹,在此簡單介紹下完整的使用流程。

1. 首先定義事件基類(其實不定義也可以,定義后的好處在于在同一個回調函數中直接依據不同的子類事件類型可以直接繼續邏輯上的處理,代碼和邏輯更加簡潔清晰)

1 public classBaseEvent {2

3

4 }

2. 定義具體的事件類型(以上述收藏事件為例)

1 public class FavorEvent extendsBaseEvent {2

3 private intdid;4

5 publicFavorEvent() {6

7 }8

9 public FavorEvent(intdid) {10 this.did =did;11 }12

13 public intgetDid() {14 returndid;15 }16

17 public void setDid(intdid) {18 this.did =did;19 }20

21 }

3. 在需要監聽此收藏事件的地方向EventBus注冊事件監聽器

1 EventBus.getDefault().register(this);

4. 當需要取消注冊事件監聽器時

EventBus.getDefault().unregister(this);

注:Android中,當遇到如EventBus中的register時,一般的,相應都會有unregister邏輯。且經常register與unregister邏輯相互對應,處在如Activity等組件的不同生命周期中。這是因為EventBus(其他也類似)在注冊時由于是采用硬引用,存在潛在的內存泄露問題,而在相應生命周期中(如onDestroy)取消注冊,即可消除可能潛在的內存泄露問題。

5. 當事件發生時,需要通知相應事件監聽器進行相應邏輯處理

1 //告知EventBus進行了收藏操作,讓其通知相關感興趣方(主要的是通知個人中心頁面改變我的收藏數量)

2 EventBus.getDefault().post(new FavorEvent());

6. 其他組件/監聽器具體事件邏輯

1 public voidonEvent(BaseEvent event) {2 //接收收藏事件通知,同步處理收藏數字

3 if (event instanceofFavorEvent) {4 //即時更新收藏的數量(從sqlite中取得收藏數量)

5 updateFavorNum();6 } else if(..){7 ...8 }9 }

整個的使用流程主要也就這么多了,其中,關于子線程和UI線程之間等亦可進行類似事件通知,網上此類資料很多,不再贅述了。

總結

以上是生活随笔為你收集整理的android组建之间通信_Android各组件/控件间通信利器之EventBus的全部內容,希望文章能夠幫你解決所遇到的問題。

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