美文网首页
otto初体验

otto初体验

作者: 尔乐 | 来源:发表于2017-02-07 16:33 被阅读24次

在这之前用过EventBus,发现到处都可以postEvent,事件的订阅者也可以指定线程。支持不同线程,先后台互相传递消息。

最近使用了下otto,模式都是一样的,eventbus3.0之前采用的是方法名前缀的方式来注册订阅者。3.0之后也采取了跟otto一样的注解的方式来注册。基本方法都是register,unregister,post

不同点在于otto更轻量级,默认的使用范围,是UI线程。mainlooper。

Bus 类里实例化了一个ThreadEnforcer enforcer 用来检验线程的。

默认的构造方法Bus();使用的是ThreadEnforcer.MAIN作为enforcer.

ThreadEnforcer MAIN=new ThreadEnforcer() {

@Override public void enforce(Bus bus) {

   if(Looper.myLooper() != Looper.getMainLooper()) {

      throw new IllegalStateException("Event bus "+ bus +" accessed from non-main thread "+ Looper.myLooper());

   }

  }

};

如果想在非UI线程调用,可以使用public Bus(ThreadEnforcer enforcer) 构造方法,传入ThreadEnforcer.ANY

需要注意的是,订阅者执收到消息时跟发布者是在同一个线程。如果有对UI的操作还需要读者自己定义handler处理。

如果考虑的哦啊跨线程传递,最好还是考虑使用EventBus 更方便一些。

相关文章

  • otto初体验

    在这之前用过EventBus,发现到处都可以postEvent,事件的订阅者也可以指定线程。支持不同线程,先后台互...

  • [Android组件解读] 被square公司抛弃的Otto框架

    最近讲的都是square出品的组件,今天还是继续讲解Square旗下的Otto框架 引用otto官网说的 Otto...

  • otto

    otto是在安卓中组件之间用来通信的库,优点是可以降低多个组件之间的通信的耦合度,也就是解耦.比如说:界面A要跳转...

  • Otto框架

    一、Otto介绍 OTTO是Square推出的库,地址:https://github.com/square/ott...

  • Android事件总线(四)源码解析otto

    前言 上一篇文章中讲到了otto的用法,这一篇我们来讲一下otto的源码。可能有人觉得otto过时了,但是通过源码...

  • Otto快速使用

    引入 otto 1、创建AppBus单例,提高效率 2、创建数据类(因为otto没有EventBus的tag标记功...

  • yii初体验(7-15)

    yii初体验(7)视图 yii初体验(8)模块 yii初体验(9) 小部件widgets yii初体验(10) 前...

  • EventBus源码解析开篇

    开篇说明 上篇博文《Otto源码解读》简单分析了Otto的实现原理,总的来说就是检索收集各个注册对象中的@Subs...

  • 深入浅出otto——一款轻量的消息总线框架

    otto背景 ​ otto是sqaure推出的一款应用主要被应用在android上的轻量级事件总线框架,目的是...

  • Otto的使用

    Otto是一个用来进行组件之间通信的框架 GitHub地址使用方式 Otto主要概念就是发布事件和接收事件,如果要...

网友评论

      本文标题:otto初体验

      本文链接:https://www.haomeiwen.com/subject/awkmittx.html