【应用组件:EventBus】实例演示
2015-11-03 09:17
537 查看
作者:郭孝星
微博:郭孝星的新浪微博
邮箱:guoxiaoxingv@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/guoxiaoxing
通过上一个文档对EventBus的介绍,我们对EventBus的功能有了大致的了解,下面我们就通过具体的例子来演示EventBus的功能。
EventBus的使用步骤
1 定义事件
只需要定义一个简单的Java对象即可,没有其他特殊需求。
2 准备订阅者
订阅者实现了事件的处理方法onEvent(),该方法会处理到来的事件,订阅者可以在总线中注册和取消注册这些事件。
3 发布事件
我们可以在代码的任何位置发布事件,当订阅者接收到这些事件时会去匹配它们。
添加EventBus到项目
Gradle
Maven
举例
Tips:本例来源于android-open-project-demo,原作者的例子是Eclipse工程,这里迁移到了Android Studio上并做了改进和注释。
源码和APK下载地址
如上图所示,MainActivity界面写了5个按钮来演示不同类型的事件处理。如下所示:
简单事件
自定义事件
不同的线程模式
微博:郭孝星的新浪微博
邮箱:guoxiaoxingv@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/guoxiaoxing
通过上一个文档对EventBus的介绍,我们对EventBus的功能有了大致的了解,下面我们就通过具体的例子来演示EventBus的功能。
EventBus的使用步骤
1 定义事件
只需要定义一个简单的Java对象即可,没有其他特殊需求。
public class MessageEvent { public final String message; public MessageEvent(String message) { this.message = message; } }
2 准备订阅者
订阅者实现了事件的处理方法onEvent(),该方法会处理到来的事件,订阅者可以在总线中注册和取消注册这些事件。
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { EventBus.getDefault().unregister(this); super.onStop(); } // This method will be called when a MessageEvent is posted public void onEvent(MessageEvent event){ Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show(); } // This method will be called when a SomeOtherEvent is posted public void onEvent(SomeOtherEvent event){ doSomethingWith(event); }
3 发布事件
我们可以在代码的任何位置发布事件,当订阅者接收到这些事件时会去匹配它们。
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
添加EventBus到项目
Gradle
compile 'de.greenrobot:eventbus:2.4.0'
Maven
<dependency> <groupId>de.greenrobot</groupId> <artifactId>eventbus</artifactId> <version>2.4.0</version> </dependency>
举例
Tips:本例来源于android-open-project-demo,原作者的例子是Eclipse工程,这里迁移到了Android Studio上并做了改进和注释。
源码和APK下载地址
如上图所示,MainActivity界面写了5个按钮来演示不同类型的事件处理。如下所示:
简单事件
自定义事件
不同的线程模式
相关文章推荐
- 九种基本数据类型
- 玩转Visual Studio-管理多种释出版本
- java检测某个类所在的包名路径
- 关于Matlab中avi视频的读取问题
- 农村深化改革方案公布 宅基地制度改革思路确定
- 【应用组件:EventBus】开篇
- BCB中使TPanel透明
- EasyCodeScanner(Zbar)遇到libzbar.a问题(遇到arm类似问题)
- MySQL
- LeetCode70——Climbing Stairs
- MySQL性能优化的最佳21条经验
- java SE复习笔记61
- Win8无线网络受限或无线网络无法连接怎么办 Win8无线网络受限或无连接的五种解决方法
- JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
- iOS中大流中的自定义cell 技术分享
- 你真的会玩SQL吗?无处不在的子查询
- 练习 !!猜拳
- copy
- 当前架构认知 - 20151103
- ios 读取通讯录