hust
  • 简介
  • 效率
    • on-my-zsh git alias
    • Markdown写ppt
    • 开发者的Mac工具集合
  • 语言
    • Java
    • Dart
      • 基本语法
      • 基本库
      • 异步编程之Future
      • 异步编程之Stream
    • Kotlin
      • Kotlin中的可空类型
  • Android
    • Native
      • 自定义Material点击效果的View
      • 开源视频播放器JiaoZiVideoPlayer学习
      • ConstraintLayout使用说明
      • 布局文件中的tools命名空间
      • TabLayout使用指南
      • AppBarLayout学习
      • EditText在RecyclerView中的解决方案
      • Jetpack
        • 动画和转换
          • 具有动画效果的图片资源
          • 使用动画隐藏或显示View
          • 使用动画移动View
          • 使用动画缩放图片
          • ViewGroup内容改变时的动画效果—LayoutTransition
          • 在布局切换之间实现Transition动画
          • 在Activity切换之间实现Transition动画
      • Flutter
        • APP的基础——组件
      • 开源库
        • EventBus
          • EventBus简介及初步使用
          • EventBus线程分发
          • EventBus配置、粘性事件、优先级和取消事件分发
          • EventBus源码分析之发布订阅模型
          • EventBus源码分析之线程分发
Powered by GitBook
On this page
  1. Android
  2. Native
  3. 开源库

EventBus

EventBus是一个事件总线模型,可以解决组件之间通信的问题。期间学习EventBus,有一些关于发布订阅模型的思考。

事件

  1. 事件如何定义,包含各种需求

    EventBus中的事件是Object,具体需求自己添加

  2. 高级特性,事件的参数配置

    发布者

  3. 发布者如何将事件发出,不需要关心事件的最终流向

    发布者需要做两件事,一是创建事件,二是将事件发给事件中心

    MessageEvent messageEvent=new MessageEvent();
                 messageEvent.setMessage("Hello World From Network");
                 EventBus.getDefault().post(messageEvent);

    订阅者

  4. 订阅者如何将自己注册到事件中心,以让注册中心能够找到自己

    EventBus.getDefault().register(this);

    订阅者将自己注册给事件中心;

  5. 订阅者需要知道怎么处理订阅的东西

    @Subscribe
     public void showContent(MessageEvent messageEvent){
    //        showContentTv.setText(messageEvent.getMessage());
         Log.i("TAG",Thread.currentThread().getName()+"  "+messageEvent.getMessage());
     }

    @Subscribe注解说明该方法是订阅者中的具体处理订阅事件的逻辑,该方法的参数是其感兴趣的参数。

    事件中心

  6. 怎么保存注册者注册者、注册的东西以及订阅者

  7. 如何将正确的事件分发给恰当的订阅者

  8. 高级特性,线程调度、粘性事件

  9. 思考改进点:事件拦截,事件多处理是否支持?

Previous开源库NextEventBus简介及初步使用

Last updated 6 years ago