自从使用了EventBus,代码干净了好多。git
今后你不用startActivityForResult了,今后你不用再写注册BroadcastReceiver了,今后你不用再写一些回调了。github
只须要在须要监听的页面,注册EventBus,而后等事件发过来,作相应的改变就能够了。post
通常在onCreate,onDestory回调作注册与反注册ui
发送事件写法spa
EventBus.getDefault().post(T event);//当前页面存在,就会调用相应onEvent,当前页面不在,就不会调用线程
EventBus.getDefault().postSticky(T event);//当前页面在,会调用相应onEvent,当前页面不在,等再进入这个页面时,也会调用onEvent事件
监听事件写法:get
onEvent(T event): 你的Event从什么线程发过来,这个方法就会在相同的线程执行
onEventMainThread(T event): 无论你的Event从哪一个线程发过来,这个方法只会在主线程运行,因此能够作和View更新相关的操做
onEventAsync(T event): 这个方法会运行在一条新的线程里,不是在主线程,也不是在你Event发过来所在的
onEventBackgroundThread(T event): 若是你发Event所在的线程不是ui线程,那么这个方法会运行在Event所在线程。若是你在ui线程发Event过来,这个方法会运行在一个EventBus管理的线程里。这条线程会在后台同步管理着多个Events,也即事件进入后会排除同步