//在Activity中,註冊和反註冊ide
@Override protected void onCreate(Bundle savedInstanceState) {oop
super.onCreate(savedInstanceState);post
setContentView(R.layout.activity_main);ui
EventBus.getDefault().register(this); //第1步: 註冊this
}spa
@Override protected void onDestroy() {線程
super.onDestroy();code
EventBus.getDefault().unregister(this);//反註冊事件
}get
//在註冊了的Activity中,聲明處理事件的方法
//第2步:註冊一個在後臺線程執行的方法,用於接收事件
@Subscribe(threadMode = ThreadMode.BackgroundThread)
public void onUserEvent(ClassEvent event) {
//參數必須是ClassEvent類型, 不然不會調用此方法
}
//在任意地方,調用發送事件
EventBus.getDefault().post(new ClassEvent());//第3步: 發送事件
//在任意地方,註冊事件類
class ClassEvent{} //定義一個事件, 能夠不包含成員變量,和成員方法
新版本的eventBus的使用,接收數據的回調方法變成了這樣:
@Subscribe(threadMode = ThreadMode.MainThread) //在ui線程執行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.BackgroundThread) //在後臺線程執行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.Async) //強制在後臺執行 public void onUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.PostThread) //默認方式, 在發送線程執行 public void onUserEvent(UserEvent event) { }
舉個例子,用eventBus代替handler,實現秒錶:
public class MainActivity extends AppCompatActivity { |
其中FirsrtEvent就是簡單的一個實體類:
public class FirstEvent { private String mMsg; public FirstEvent(String msg) { // TODO Auto-generated constructor stub mMsg = msg; } public String getMsg(){ return mMsg; }} |