Android事件传递框架EventBus简介与基本用法

Android事件传递框架EventBus简介与基本用法

一、Android事件传递
传统的Android事件传递方式包括:HandlerBroadcastReceiverInterface回调,事件传递既可以用于Android四大组件间的通讯,也可以用于异步线程和主线程间的通讯等。

二、事件传递框架EventBus简介与基本用法
EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递,相比于传统的事件传递方式,EventBus的优点是代码简洁使用简单,并将事件发布和订阅充分解耦
EventBus的使用及其简单,分为五个部分:

  1. 自定义一个事件类
    EventBus发送的事件既可以是基本类型,也可以是自定义的事件类。
    在这里插入图片描述
  2. 在要接受消息的页面注册
    在要接受消息的页面(或者说组件中)注册EventBus,一般在onStart()方法中进行注册并在对应的onStop()方法中注销,需要注意的是只有注册了才能接收到消息并且如果该组件被销毁,即当EventBus被取消注册,那么该组件也无法接收到消息。
    简单的说,EventBus是和注册的组件的生命周期相关联的
    在这里插入图片描述
  3. 接受并处理消息的方法
    定义一个订阅者方法,方法名可自定义,使用注解@Subscribe对该方法进行注解。其中threadMode的值有四个可选项,表示四种线程模式
     ThreadMode.MAIN:表示无论事件是在哪个线程发布出来的,该事件订阅方法onEvent都会在UI线程中执行
     ThreadMode.POSTING:表示事件在哪个线程中发布出来的,事件订阅函数onEvent就会在这个线程中运行,也就是说发布事件和接受事件在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
     ThreadMode.BACKGROUND:表示如果事件在UI线程中发布出来,那么订阅函数onEvent就会在子线程中运行,如果事件本来就在子线程中发布出来,那么订阅函数直接在该子线程中执行
     ThreadMode.AYSNC:使用这个模式的订阅函数,无论事件在哪个线程发布,都会创建新的子线程来执行订阅函数
    在这里插入图片描述
  4. 发送消息
    EventBus中消息的发布和订阅是充分解耦的,因此消息的发布可以在任意的线程,任意的地方发布。
    在这里插入图片描述
  5. 取消注册
    在这里插入图片描述
    在这里插入图片描述

参考资料:EventBus使用详解

原创文章 78 获赞 25 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38196407/article/details/89761062
今日推荐