Android EventBus粘性事件使用指南

Android 里的事件通信,用 EventBus 真挺顺手的。是它的粘性事件功能,也就是postSticky,在应用启动或跨组件传数据时管用。它比传统的BroadcastReceiver要灵活多了,不用折腾太多模板代码,写起来轻松多了。

项目里加依赖也简单,直接在build.gradle里加上:

implementation 'org.greenrobot:eventbus:3.x.x'

初始化嘛,通常在Application里注册就好:

EventBus.getDefault().register(this);

发事件就一句话:

EventBus.getDefault().post(new MyEvent("Hello"));

订阅也好理解,只要方法上加个@Subscribe,参数和你发的事件类一致就行。记得注册和反注册哈。

说到重点的postSticky,用法和普通事件差不多,只不过它会把事件“留着”,哪怕你后面才注册也能收到。像下面这样:

EventBus.getDefault().postSticky(new StickyEvent("页面初始化数据"));

订阅的时候加个@Sticky就能接住这个粘性事件:

@Sticky
@Subscribe(threadMode = ThreadMode.MAIN)
public void onStickyEvent(StickyEvent event) {
  // 响应粘性事件
}

粘性事件适合做启动页传参、界面还原这类场景。哦对了,用完别忘了清掉,不然事件会一直在那。

如果你在做组件化或者要一些延迟注册的事件逻辑,EventBus + postSticky真的蛮香的。

7z 文件大小:5.69MB