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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EventBus的简单使用

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EventBus的简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由greenrobot組織貢獻(該組織還貢獻了greenDAO),一個Android事件發布/訂閱輕量級框架,

功能:通過解耦發布者和訂閱者簡化Android事件傳遞

EventBus可以代替 Android傳統的Intent,Handler,Broadcast或接口函數,在Fragment,Activity,Service線程之間傳遞數據,執行方法。

特點:代碼簡潔,是一種發布訂閱設計模式(觀察者設計模式)。

EventBus源碼下載?


?EventBus的使用場景

  • 用于線程間的通訊代替handler或用于組件間的通訊代替Intent

  • 廣泛用于團購,商城,社交等應用,比如易大師APP,易宸鋒Application...

  • 實踐證明已經有一億多的APP中集成了EventBus


?EventBus的優勢

  • 簡化了組件間的通訊。

  • 分離了事件的發送者和接受者。

  • 在Activity、Fragment和線程中表現良好。

  • 避免了復雜的和易錯的依賴關系和聲明周期問題。

  • 使得代碼更簡潔,性能更好。

  • 更快,更小(約50k的 jar包)

?

?EventBus原理圖

  • EventBus底層采用的是注解和反射的方式來獲取訂閱方法信息(首先是注解獲取,若注解獲取不到,再用反射)

  • 當前訂閱者是添加到Eventbus 總的事件訂閱者的subscriptionByEventType集合中

  • 訂閱者所有訂閱的事件類型添加到typeBySubscriber 中,方便解注冊時,移除事件

? ? ? ? ? ? ? ? ? ? ? ??

?EventBus使用

? ? ? ? 第一步:添加依賴 ? ??

compile 'org.greenrobot:eventbus:3.0.0'復制代碼

? ? ? ? 第二步:定義消息事件類

public class MessageEvent{private String message;public MessageEvent(String message){this.message=message;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;} }復制代碼第三步:注冊和解除注冊

? ? ? ? ? ? ?你的事件在哪接收,就在哪個類進行EventBus的注冊和解除操作

? ? ? ? ? ?

@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);EventBus.getDefault().register(this);復制代碼
? ?

@Override protected void onDestroy() { EventBus .getDefault().unregister(MainActivity.this); super.onDestroy(); }復制代碼


? ? ? ? ? 第四步:post方法發送事件

? ? ? ? ?

? ? ? ? ? ? EventBus.getDefault().post(new MessageEvent("我是九重透流"));

? ? ? ? ??

? ? ? ? ? 第五步:接收事件

? ? ? ?

@Subscribe(threadMode = ThreadMode.MAIN)public void Event(MessageEvent messageEvent) {Lod.d("eventbus",messageEvent.getMessage());} 復制代碼

? ? ? ? 總結

? ? ? ? ? ? ? ? ? ? ?在進行組件、頁面間通信的時候,EventBus是一個不錯的選擇。?




總結

以上是生活随笔為你收集整理的EventBus的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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