EventBus簡(jiǎn)單使用

1、接收者(讀者)訂閱 只需要一次

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

? ? 接收者銷(xiāo)毀時(shí)候,要取消訂閱,否則會(huì)內(nèi)存泄漏

? ? //判斷是否訂閱過(guò)消息

? ? ? ? boolean registered = EventBus.getDefault().isRegistered(this);

? ? ? ? if (registered) {

? ? ? ? ? ? //取消訂閱,防止內(nèi)存泄漏

? ? ? ? ? ? EventBus.getDefault().unregister(this);

? ? ? ? }

? //訂閱方法

/**

? ? * 聲明一個(gè)接收消息的方法

? ? * 1、必須是public void ,方法名稱(chēng)任意,參數(shù)只能有一個(gè),而且最好使用javaBean作為參數(shù)

? ? * 2、必須添加注解? ? ? @Subscribe(threadMode = ThreadMode.POSTING,sticky = true)

? ? *? 1、threadMode = ThreadMode.BACKGROUND? 后臺(tái)線(xiàn)程,可以執(zhí)行耗時(shí)操作

? ? *? ? ? ? ? ? ? ? ? ThreadMode.POSTING? 發(fā)送者所在的線(xiàn)程

? ? *? ? ? ? ? ? ? ? ? ThreadMode.MAIN? 主線(xiàn)程,可以更新UI

? ? *? 2、sticky? = true? 粘性事件

? ? *? ? ? ? ? ? false 普通事件

? ? */


2、被訂閱者(雜志社)發(fā)送

? ? ? 在任意的地方,都可以發(fā)生消息

? ? EventBus.getDefault().post(new Event());//發(fā)送普通消息 (不傳值)? ? new Event() 是全寫(xiě)?

? ? EventBus.getDefault().postSticky(new Event());//發(fā)送粘性消息

3、什么情況下用?

? ? ? 兩個(gè)類(lèi)之間的傳值等情況,可以使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容