一. 最近在学习的过程中,学习到了一个比较好用的android的开源框架--EventBus。经过几次的百度借鉴与实践了解之后,整理如下,供以后的学习查阅。

 

二.关于EventBus的定义:

                             

         1.Android开源框架EventBus主要是替代Intent、Handler、BroadCast在Fragment、Activity、service、以及线程之间的传递消息。

         2.特点:使用简单,代码简洁 。

         3.EventBus是一个观察者模式的实现,他拥有观察者模式的三大要素:

              1.Event:  事件(可以是任意类型的对象)                                                          

              2.Subscriber:  事件订阅者,用于接收特定的事件                                       

              3.Publisher:    事件的发布者,用于通知Subscriber数据的变化

三.EventBus的使用方法:

       1.首先要下载一个EventBus的jar包(https://repo1.maven.org/maven2/org/greenrobot/eventbus/3.0.0/eventbus-3.0.0.jar)。

          ps: android Studio倒入jar包的方法:复制jar包到app-src-main-libs文件夹下,然后右键jar包,在弹出的菜单中点击Add As Library即可。就可以使用EventBus了。

       2. 创建一个MsgTest类 用于封装要发送的信息,信息类型根据需要而定,这里使用String类型:

          

android eventbus 使用 安卓eventbus_jar包

 

          3.注册与注销(在需要接受数据的fragment或者Activity中的onCreate(),onStop()方法中进行)

               1.注册使用:    EventBus.getDefault().register(this);

               2.注销使用:    EventBus.getDefault().unregister(this);

               3.具体代码:

                    

android eventbus 使用 安卓eventbus_android_02

                  注意:注册与注销一定是在要接收数据的fragment或者activity中。

        4.发送数据:

                完成了以上几步之后,接下来就可以发送参数了:

                    发送数据比较简单,我们只需要在需要发送数据的地方使用这条语句即可 EventBus.getDefault().post("你要发送的数据");:

                     

android eventbus 使用 安卓eventbus_jar包_03

      5.接收数据:

                    接收数据有以下几种方法,只要在注册接收的fragment或者activity中使用任意一种方法即可:

                 

1.public void onEvent(MsgTest msgTest) //事件的处理在和事件的发送在相同的线程,处理时间不应太长,不然影响事件的发送线程

           2.public void onEventMainThread(MsgTest msgTest) //事件的处理会在UI线程中执行。事件处理时间不能太长

           3.public void onEventBackgroundThread(MsgTest msgTest)//如果发送事件的线程是后台线程,会直接在当前后台线程执行事件;
                                                            如果当前线程是UI线程,事件会被加到一个队列中,由一个线程依次处理这些事件,
             
           4.public void onEventAsync(MsgTest msgTest)//主要用于在后台线程中执行耗时操作,每个事件会开启一个线程

                具体代码如下:

 

                      

android eventbus 使用 安卓eventbus_android_04

                   其他方法 接收方式一致;

    @Subscribe  字段

 

四.总结:

             总之,EventBus的使用就是这么简单。