EventBus学习
EventBus是android 下高效的發(fā)布/訂閱事件總線機(jī)制,可以代替?zhèn)鹘y(tǒng)的Intent,Handler,BroadCast 或者Fragment,Activity,Service,線程之間傳遞數(shù)據(jù),是一種發(fā)布訂閱設(shè)計(jì)模式(觀察者模式)。
如何使用呢?
1. 在要接收的Activity注冊(cè)訂閱者,EventBus.getDefault().register(this), 發(fā)送的方式是EventBus.getDefault().post();
2. 在要接收的Activity里面使用下面的方法中的一個(gè)或者多個(gè)接收事件:
public void onEvent(Message msgEvent); // 該事件在哪個(gè)線程發(fā)出的,onEvent就會(huì)在這個(gè)線程中運(yùn)行,發(fā)布和接收在同一個(gè)線程中。注意不能執(zhí)行耗時(shí)操作,否則容易導(dǎo)致事件分發(fā)延遲。
public void onEventMainThread(MesssageEvent mevent);
無論事件在哪個(gè)線程中發(fā)出來,都會(huì)在UI線程中執(zhí)行onEventMainThread,這個(gè)可以用來更新UI,也不能執(zhí)行耗時(shí)操作
public void onEventBackgroud:
如果事件是在UI線程中發(fā)布的,會(huì)創(chuàng)建子線程執(zhí)行,如果就是在子線程發(fā)布,就在該子線程中執(zhí)行
public void onEventAsync
無論是在哪個(gè)線程中發(fā)布,都會(huì)創(chuàng)建子線程去執(zhí)行
?
3. 發(fā)布后,誰來執(zhí)行呢?
這里就是根據(jù)發(fā)布的參數(shù)和訂閱者的參數(shù)去匹配的,只要參數(shù)一樣,就去執(zhí)行。
?
轉(zhuǎn)載于:https://www.cnblogs.com/heavenStrone/p/5834024.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的EventBus学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孕妇梦到仙鹤是胎梦吗
- 下一篇: Django抛错不存在(DoesNotE