貌似最近EventBus挺火,自己找了找资料,然后看了看,写了个简单demo。供大家参考。
EventBus项目中没有用到,我也是自己看一些资料,所以东西相对简单,见谅。一些高级功能,也只能靠大家自行摸索了。
一般在onCreate()中注册,在onDestory()中注册。为什么要注册?
当你register()之后,他会遍历你的.class文件,找到几个重要的onEvent开头的方法
(onEventMainThread()、onEventPostThread()、onEventBackgroundThrad()、onEventAsync())后面会介绍这几这onEvent开头的方法。
这个参数,是你需要传递的数据,比如是一个list.
public void onEventMainThread(参数){
//比如listView更新
//listview.setadapter(参数);
}
这里的参数,就是你之前EventBus.getDefault.post(参数)中的参数,如果类型不同,那么就会找不到onEventMainThread(参数),从而无法更新。
为什么呢?
之前说过,当你register()注册的时候,他会遍历你的类然后找出onEvent开头的方法,他会把这些方法放到一个map集合中,当你调用EventBus.getDefault.post(参数)它就会去map中找制定的onEvent开头的方法.
这些方法并不是重写的,而是需要你写出来的方法.所以一定要仔细。
onEventMainThread():UI线程,不多说,更新界面什么的就在这里面。
onEventPostThread():谁调用的EventBus.getDefault().post(参数)这个时候的线程,那么onEventPostThread()就代表那个线程,同ui对比,就一目了然了。
onEventBackgroundThrad():这里面有线程池,可以排队。
onEventAsync():这个没有排队。
附上EventBus的机制(英文)
我写个大白话解释吧,我(publisher)想让eventBus工作,就调用Event.getDefault().post()
eventBus接收到你的信息,他会找对应的onEvent()就是(Subscriber).
EventBus...
has advanced features like delivery threads, subscriber priorities, etc.
如果想深入了解一些的,可以参考这个哥们的blog。
http://blog.csdn.net/lmj623565791/article/details/40920453
原文地址:http://blog.csdn.net/pangzaifei/article/details/41649261