Android实战-初探EventBus

最近项目中需要实现一个功能,当用户要发布一条消息时,在当前activity堆栈中可能存在多个页面需要感知到这一事件,并将这条消息显示在最顶端。一开始想到用广播去实现,但是广播会让所有的应用都接收到广播,虽然可以过滤掉;后来寻找解决方案的过程中发现了EventBus,它提供的解决方案非常优雅,这里记录一下。(LocalBroadcastManager也可以实现,但是代码比起EventBus来说复杂一些)

实现上述功能所需代码示例如下:
1、定义一个事件
public class PublishDynamicEvent{
    private Dynamic dynamic;
    private Dynamic sendingDynamic;
    public PublishDynamicEvent(Dynamic dynamic, Dynamic sendingDynamic) {
        this.dynamic = dynamic;
        this.sendingDynamic = sendingDynamic;
    }
    public Dynamic getDynamic(){
        return dynamic;
    }
    public Dynamic getSendingDynamic() {
        return sendingDynamic;
    }
}
2、在需要感知该事件发生的activity中添加下述方法:
public void onEventMainThread(PublishDynamicEvent event) {
    …//处理该事件
}
在onCreate方法中注册:
@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    EventBus. getDefault().register(this);
}
在onDestroy方法中取消注册:
@Override
protected void onDestroy(){
    super.onDestroy();
    EventBus. getDefault().unregister(this);
}

3、在发布该事件的地方添加下面一句话:
EventBus. getDefault().post(new PrePublishDynamicEvent(dynamic));

是不是非常简单,可读性和灵活性都很高。EventBus应用的场景非常广泛,传统的事件传递方式包括:Handler、BroadCastReceiver、Interface 回调等都可以用用它来替代,再举个常见的例子:你的某些页面需要在接收到某些推送通知时,在布局上发生相应变化,诸如显示小红点,新消息数之类的提醒,都可以使用EventBus。

参考:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值