Otto:EventBus
Otto:EventBus
2014年6月20日 星期五
15:14
参考: http://www.mythroad.net/?p=4151
Otto 是Android系统的一个Event Bus模式类库。用来简化应用组件间的通信.
主要使用的类有com.squareup.otto.Bus类、@Produce、@Subscribe注解
@Subscribe 注解告诉Bus该函数订阅了一个事件,该事件的类型为该函数的参数类型;
@Produce注解告诉Bus该函数是一个事件产生者,产生的事件类型为该函数的返回值。
可以在Activity或者Fragment的onResume中注册监听器,在onPause中取消注册:
@Override protected void onResume() { // Register outselves so that we can provide the initial @Override protected void onPause() { // Always unregister when an object no longer should be on the |
在一个位置定义生产函数:@Produce
@Produce |
在需要订阅该事件的地方捕获该事件:@Subscribe
@Subscribe public void onLocationChanged(LocationChangedEvent … } |
不管是生产者还是订阅者都需要向Bus注册自己:
Bus.register(this); |
Otto的事件调用默认在主线程(应用的UI线程):
下面的效果是一样的 |
如果不关系在哪个线程中执行:可以通过ThreadEnforcer.ANY指定 |
还可以通过ThreadEnforcer接口自定义线程模型 |
生产(发布):bus.post(new
AnswerAvailableEvent(42));
Posting是同步的,所以程序执行时保证所有的订阅者都准确被调用
订阅:@Subscribe,仅包含一个参数,public描述符,方法名任意
最新文章
- 【Xcode 4 无法打开 Xcode 5 DP 打开过的工程文件 解决方法】
- 《DSP using MATLAB》示例Example4.12
- 变废为宝,将Discuz废弃的cache机制引入到memory体系中
- 内存管理算法--Buddy伙伴算法
- Android开发--去掉标题栏
- 格而知之9:一些关于GCD的笔记
- 浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】
- SQLAlchemy on the way
- 条形码--JsBarcode
- 使用tcpcopy复制线上流量进行测试
- Codeforces Round #485 (Div. 2) D. Fair
- Java 使用 int 数据计算百分比
- js数据校验插件
- Codeforces 264C Choosing Balls 动态规划
- 51nod 1349 最大值(单调栈)
- 【Java并发编程】:并发新特性—Executor框架与线程池
- HDU 4548 美素数 在线打表加数状数组
- idea 常用快捷键 笔记
- SQL连接的分类
- 常用的Oracle的doc命令