EventBus的使用

前言:EventBus是一个事件发布和订阅的框架。是一款针对Android优化的发布/订阅事件总线,主要的功能是替代Intent,Handler,BroadCast在fragment,Activity,Service,线程之间传递消息.


源码:https://github.com/greenrobot/EventBus


基本使用:

(1)自定义一个类,可以是空类,比如:

注:当有多个模块都要使用EventBus时,而且每个模块之间是相互独立的,这就需要定义不同的实体类,每个模块的消息都会根据实体类去找到相应的方法提示,这里跟(4)接收消息是一致的.

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class AnyEventType {  
  2.      public AnyEventType(){}  
  3.  }  

(2)在要接收消息的页面注册:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. eventBus.register(this);  

(3)发送消息

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. eventBus.post(new AnyEventType event);  

(4)接受消息的页面实现(共有四个函数,各功能不同,这是其中之一,可以选择性的实现,这里先实现一个):

1、onEvent
2、onEventMainThread(如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。)
3、onEventBackgroundThread
4、onEventAsync

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /**
     * @param event eventbus的提醒
     */
    public void onEventMainThread(MyEventBus event) {
    
        int unreadMsg = event.unreadMsg;
        gridViewAdapter.setNum(unreadMsg);
    }
    
    /**
     * @param messageEvent eventbus的提醒
     */
    public void onEventMainThread(LCIMIMTypeMessageEvent messageEvent) {
        if (null != messageEvent){
            initLeanCloud();
        }
    }
(5)解除注册
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. eventBus.unregister(this);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值