一、概述
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦
1、添加gradle依赖
compile 'org.greenrobot:eventbus:3.0.0' 2、接收消息的页面注册
//注册EventBus EventBus.getDefault().register(this);
3、新建空类主要用来传递消息,也可以传递实体类
public class FirstEvent { private AppScene appScene; private AppDevice appDevice; public FirstEvent(AppScene appScene) { this.appScene = appScene; } public FirstEvent(AppDevice appDevice){ this.appDevice = appDevice; } public AppScene getAppScene(){ return appScene; } public AppDevice getAppDevice(){ return appDevice; } }
4、发送消息
EventBus.getDefault().post(new FirstEvent(appDeviceInfo));
5、接收消息
订阅发布可在不同线程,不可做耗时操作
@Subscribe public void onEventMainThread(final FirstEvent event) { Log.d("best", "onEventMainThread收到了消息:" + event.getAppDevice().getDeviceMac()); }//同一线程订阅发布,不可做延时操作 @Subscribe public void onEvent(final FirstEvent event) {Log.d("best", "onEvent收到了消息:" + event.getAppDevice().getDeviceMac()); }//如果UI线程发布,则在子线程执行,如果是在子线程执行,则直接在子线程执行 @Subscribe public void onEventBackground(final FirstEvent event) { Log.d("best", "onEventBackground收到了消息:" + event.getAppDevice().getDeviceMac()); }//无论在哪个线程发布,都会创建新的子线程运行onEventAsync
@Subscribepublic void onEventAsync(final FirstEvent event) { Log.d("best", "onEventAsync收到了消息:" + event.getAppDevice().getDeviceMac());}
6、解除注册
EventBus.getDefault().unregister(this);
本文介绍EventBus作为Android中的事件总线,用于简化不同组件间的消息传递过程。通过示例展示如何添加依赖、注册与注销接收器、定义事件类及发送与接收事件。
1632

被折叠的 条评论
为什么被折叠?



