在使用它的时候,感觉在控件之间的通讯可能会用上,所以我就记录下来,方便自己的学习.思路不是很清晰.望见谅.!
EventBus 个人理解:
假如有A B 2个Activity 我们在A里面注册EventBus [EventBus.getDefault().register(this) 在onCreate里面 不使用的时候就在onDestroy 里面取消注册.]
从A里面使用Intent跳转到 B Activity 在B里面写点击事件,或者其它操作, 假定下面是我要做的事情
EventBus.getDefault().post( new FirstEvent("FirstEvent btn clicked"));这里是要告诉A Activity 有消息来了,输出 A里面是这样写的:[ 在主线程里面运行的 FirstEvent 这个是一个实体类,里面有一个参数String msg; 和get set 方法]
public void onEventMainThread(FirstEvent event) { Log.e("harvic", "onEventMainThread收到了消息:" + event.getMsg()); }当触发B里面的事件,A里面就会输出这段日志信息.注意观察.
如果我们有这样的需求:
在B里面填写信息 在A里面展示信息,我们可以用
startActivityForResult(intent,requseCode);
这个来回调,然后显示B页面的信息. 当我知道EventBus后,我觉得回调方法用起来不太方便了..
因为使用EventBus 步骤简单,存储方便
下面是牛人博客....
入门:
http://blog.csdn.net/harvic880925/article/details/40660137
http://blog.csdn.net/harvic880925/article/details/40787203
深入: http://blog.csdn.net/yuanzeyao/article/details/38174537
首先,给出集成步骤
1、下载EventBus库:EvnetBus的下载地址:https://github.com/greenrobot/EventBus.git
2、将EventBus.jar放入自己工程的libs目录即可
3、定义一个事件,这个事件一旦被EventBus分发出去就是代表某一件事情发生了,这个事件就是某个观察者关心的事情(不需要继承任何类)
4、定义观察者,然后将该观察者注册到EventBus
5、由EventBus分发事件,告知观察者某一件事情发生了
6、使用完成后从EventBus中反注册观察者。
使用的时候, 要先注册
EventBus.getDefault().register(this);//注册 onCreate 里面@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); EventBus.getDefault().unregister(this);//不用了就反注册一次 }
在EventBus中的观察者通常有四种订阅函数(就是某件事情发生被调用的方法)
1、onEvent
2、onEventMainThread
3、onEventBackground
4、onEventAsync
例子:
public void onEvent(FirstEvent d) {//在onCreate 里面调用的 在另一个界面//FirstEvent 实体类Log.e(TAG, "EEE " + d.getMsg());}
//SecondEvent接收函数一 public void onEventMainThread(SecondEvent event) { Log.e("harvic", "onEventMainThread收到了消息:" + event.getMsg()); }上面用到的实体类列出一个:
public class FirstEvent { private String mMsg; public FirstEvent(String msg) { // TODO Auto-generated constructor stub mMsg = msg; } public String getMsg(){ return mMsg; } }
我们在使用的时候只需要 注册,反注册,更具需求写好回调方法.即可,. 遇到问题百度啦.