美文网首页
EventBus3.0使用详解

EventBus3.0使用详解

作者: Cris_Ma | 来源:发表于2019-06-13 13:09 被阅读0次

EventBus3.0

Gradle依赖:

implementation 'org.greenrobot:eventbus:3.0.0'

结构:

  • Event:事件

  • Publisher:发送者,发送需要处理的消息

  • Subscriber:订阅者,定义事件处理方法,必须通过register方法来注册。

线程:

  • POSTING (默认):在发送事件的线程处理事件

  • MAIN:主线程处理

  • BACKGROUND:后台线程处理,如果主线程发送,则新建线程

  • ASYNC:始终在其他线程处理

使用方法:

1.定义Event:

public class EventMsg {

    public EventMsg(String msg){
        this.msg = msg;
    }
    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    String msg;
}
  1. 在需要处理事件类中注册EventBus,如果是Activity或者Fragment等有生命周期的组件,需要在销毁时解除注册,以防内存泄漏。
 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
  1. 定义事件处理方法,在3.0以前方法名是固定的,3.0以后可以通过注解指定:

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void handleMessage(EventMsg msg) {
        Toast.makeText(this,"Received message: " + msg.getMsg(), Toast.LENGTH_SHORT).show();
    }

  1. 发送事件:
  EventBus.getDefault().post(new EventMsg("Event Bus 3.0!!"));

注意:一个事件只能被处理一次。

  1. 粘性事件:
    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public void handleMessage(EventMsg msg) {
        Toast.makeText(this,"Received message: " + msg.getMsg(), Toast.LENGTH_SHORT).show();
    }


    EventBus.getDefault().postSticky(new EventMsg("Event Bus 3.0!!"));

粘性事件:事件发出之后可以作为普通事件被没有 sticky = true 修饰的方法处理,但是处理完之后事件不会消失,后续新增的订阅者依然可以收到该事件,但是处理方法必须有 sticky = true 修饰。如果想要移除粘性事件,需要手动移除:

 EventBus.getDefault().removeStickyEvent(EventMsg.class);
 EventBus.getDefault().removeStickyEvent();

相关文章

  • 自己实现简单的EventBus功能

    1、下面是EventBus3.0的一些用法和源码分析 EventBus使用详解 EventBus源码解析 2、接...

  • EventBus源码详解,看这一篇就够了

    之前写过一篇关于EventBus的文章,大家的反馈还不错(EventBus3.0使用详解),如果你还没有使用过Ev...

  • EventBus3.0使用详解

    EventBus3.0 Gradle依赖: 结构: Event:事件 Publisher:发送者,发送需要处理的消...

  • EventBus3.0 一

    EventBus3.0 使用 EventBus基本使用发送事件注册接收(main posting backgrou...

  • EventBus3.0详解

    android EventBus 修改日志2017-12-1 添加索引部分得细节,添加kotlin的支持方式 写在...

  • EventBus3.0使用(一)

    3Steps简单使用EventBus3.0 在使用EventBus 先在Gradle 添加依赖 定义Event事件...

  • 深入理解相机五(硬件抽象层HAL)

    一、Android 基础学习 Activity 使用详解 Service 使用详解 Broadcast 使用详解 ...

  • EventBus3.0使用(二)

    上一篇EventBus3.0使用(一) Sticky Events 粘性事件 Sticky Events可以允许事...

  • EventBus3.0使用

    EventBus是使用十分广泛的事件总线框架, 2.0到3.0的变化还是挺大的 今天准备重构代码,关于解耦想到了用...

  • EventBus3.0使用

    由于最近更新了EventBus3.0,里面的onEvent方法改变了,在此坐下记录,方便自己以后查阅及使用。Eve...

网友评论

      本文标题:EventBus3.0使用详解

      本文链接:https://www.haomeiwen.com/subject/jongtxtx.html