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)之間的傳值等情況,可以使用