前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EventBus 基础篇

EventBus 基础篇

作者头像
方志朋
发布2022-11-30 09:08:16
2110
发布2022-11-30 09:08:16
举报
文章被收录于专栏:史上最简单的Spring Cloud教程

最近在研究RxJava ,突然想起了事件分发另一个强大的框架Eventbus ,并且项目经常用到,特意整理了下。 what is Eventbus? 官方的解释为: EventBus is a publish/subscribe event bus optimized for Android. 它是专门为优化安卓一个 发布者/订阅者的事件总线。

事件分发流程
事件分发流程

发布者,发布事件。通过事件总线(其实就是在一个单例内部维持着一个map对象存储了一堆的方法),分发给订阅者。

它的优点: 轻量、简单、降低耦合。

用法: 1.声明Event事件

代码语言:javascript
复制
public class MessageEvent { /* Additional fields if needed */ }

2.注册

代码语言:javascript
复制
eventBus.register(this);

声明方法,有四种方法,最主要的是:

代码语言:javascript
复制
 @Subscribe
    public void onEventMainThread(CommonEvent event) {

    }

3.发布事件

代码语言:javascript
复制
eventBus.post(event);

例子: 在oncrete() 方法中注册,无论是Activity 还是Fragment ,不在这里注册会报错。

代码语言:javascript
复制
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);
        btn=(Button)findViewById(R.id.btn);
        tv=(TextView)findViewById(R.id.tv);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }

在OnDestroy中反注册

代码语言:javascript
复制
  @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

声明订阅者:

代码语言:javascript
复制
 @Subscribe
    public void onEventMainThread(CommonEvent event) {

       if(event.getType().equals(CommonEvent.TYPE_99)){
           tv.setText("从第二个页面来的:eventtype="+event.getType());
       }
    }

在需要触发事件的位置提交事件:例如我在第二个界面提交事件,在第一个页面接受:

代码语言:javascript
复制
 EventBus.getDefault().post(new CommonEvent(CommonEvent.TYPE_99));

代码并不难,希望通过我这个例子,一是巩固自己的学习和理解,二是希望更多的人更好的学习,我会再接再厉,写更多的博文。

源码下载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
事件总线
腾讯云事件总线(EventBridge)是一款安全,稳定,高效的云上事件连接器,作为流数据和事件的自动收集、处理、分发管道,通过可视化的配置,实现事件源(例如:Kafka,审计,数据库等)和目标对象(例如:CLS,SCF等)的快速连接,当前 EventBridge 已接入 100+ 云上服务,助力分布式事件驱动架构的快速构建。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档