一括眠、EventBus的使用場(chǎng)景
1.開(kāi)發(fā)中經(jīng)常會(huì)碰到要將數(shù)據(jù)從A頁(yè)面帶到B頁(yè)面彪标,又要從B頁(yè)面帶到C頁(yè)面等等的數(shù)據(jù)傳輸。
2.也有可能是C頁(yè)面的數(shù)據(jù)發(fā)生改變掷豺,A頁(yè)面的顯示也發(fā)生改變捞烟,后面頁(yè)面的數(shù)據(jù)改變影響前面的頁(yè)面等等。
二当船、EventBus的介紹
1.EventBus官方介紹為一個(gè)為Android系統(tǒng)優(yōu)化的事件訂閱總線题画。
2.它不僅可以很方便的在同線程中傳遞事件或者對(duì)象(數(shù)據(jù)傳輸),還可以在不同線程中實(shí)現(xiàn)事件或?qū)ο蟮膫鬟f德频。
3.用法比較簡(jiǎn)單苍息,可以很好地完成一些在原生系統(tǒng)中的Intent,Handler等可以完成的工作壹置。
4.在Android開(kāi)發(fā)中廣泛使用竞思。
三、EventBus的一般使用步驟(A->B:A頁(yè)面接收B頁(yè)面發(fā)送過(guò)來(lái)的數(shù)據(jù))
1. 項(xiàng)目引入:compile 'org.greenrobot:eventbus:3.1.1'
2.在使用對(duì)象(A頁(yè)面)創(chuàng)建時(shí)钞护,EventBus.getDefault().register(this);
3.在使用對(duì)象里(A頁(yè)面)創(chuàng)建事件的接收方法
/**
* 創(chuàng)建一個(gè)方法盖喷,接收String的一個(gè)事件
*/
@Subscribe
public void onEvent(String event){
// 在這里處理事件
}
4.發(fā)送一個(gè)事件如(B頁(yè)面):EventBus.getDefault().post("I am String");
5.在使用對(duì)象(A頁(yè)面)銷毀時(shí),EventBus.getDefault().unregister(this);
四难咕、EventBus粘滯事件的使用步驟(B->A:B頁(yè)面接收A頁(yè)面發(fā)送過(guò)來(lái)的數(shù)據(jù))
1. 項(xiàng)目引入:compile 'org.greenrobot:eventbus:3.1.1'
2.發(fā)送一個(gè)粘滯事件如(A頁(yè)面):EventBus.getDefault().postSticky("I am String");
3.在使用對(duì)象創(chuàng)建(B頁(yè)面)時(shí)课梳,EventBus.getDefault().register(this);
4.在使用對(duì)象(B頁(yè)面)里創(chuàng)建事件的接收方法
/**
* 創(chuàng)建一個(gè)方法,接收String的一個(gè)事件
*/
@Subscribe
public void onEvent(String event){
// 在這里處理事件
}
5.在使用對(duì)象銷毀(B頁(yè)面)時(shí)余佃,EventBus.getDefault().unregister(this);
6.移除粘滯事件:EventBus.getDefault().removeStickyEvent(String.class);
五暮刃、如果EventBus的頁(yè)面比較多,那么怎么愉快的使用呢爆土?其實(shí)也很簡(jiǎn)單椭懊,在Acitivity基類里面綁定和解綁,并添加一個(gè)默認(rèn)接收事件雾消。
/**
* Activity的基類
*/
public class BaseActivity extends AppCompatActivity {
@Override
protected void onStart() {
super.onStart();
// 綁定
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
// 解綁
EventBus.getDefault().unregister(this);
super.onDestroy();
}
/**
* 默認(rèn)綁定一個(gè)事件灾搏,防止源碼里面去找方法的時(shí)候找不到報(bào)錯(cuò)。
* @param activity
*/
@Subscribe
public void onEvent(BaseActivity activity){
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者