Otto是一个提供事件总线实施的开源项目。组件可以发布和订阅事件。
Otto是Google 的Guava事件总线库的一个分支,并且已被重新设计以尽可能支持Android。与Guava事件总线不同,Otto不考虑基类或接口的事件订阅。这样做是为了提高库的性能,并保持应用程序代码简单明了。
如果您使用Maven或Gradle作为构建系统,您可以简单地为其添加依赖关系
在gradle中配置:
您也可以从Download Otto手动下载 JAR ,并将其添加到应用程序的类路径中
如何设置Otto?
要使用Otto,请创建Bus该类的单例实例并为您的Android组件提供访问权限。这通常是在应用程序的Application对象中完成的
这里使用了ThreadEnforcer.MAIN参数。这强制Otto始终从主线程发送事件。如果你希望能够从任何线程发送事件,请使用ThreadEnforcer.ANY参数。
如何注册和注销事件?
事件注册是通过@Subcribe公共单参数方法的注释完成的。方法参数是事件键,即如果通过Otto事件总线发送这种数据类型,则调用该方法。
事件接收者必须通过该类的register方法进行注册Bus。
事件注销使用该unregister()方法。
如何发送活动
发送事件,不需要注册事件总线
新组件如何接收一个事件?
有时,新组件,如动态创建的fragment,应该在创建过程中接收事件数据。如果这个案件组件可以注册为这种事件数据的注册制作者@Produce。
有时,新组件,如动态创建的fragment,应该在创建过程中接收事件数据。如果这个案件组件可以注册为这种事件数据的注册制作者@Produce。
事件接收者必须通过该类的register方法进行注册Bus。
例子:
将依赖关系添加到build.gradle文件中。
activity_main.xml布局文件应该如下所示
fragment_main.xml的布局文件
这个例子是故意简单的。在真正的应用中,将Bus在Application该类中创建单例。