EventBus3.0防踩坑指南

    实用过EventBus的人都知道,这个轻量简便的lib真的很好用,耦合度低,

能满足很多场合的使用,不过3.0貌似更好用了,使用也更灵活了。下面给出

官方的使用地址,大家可以去官网了解熟悉下,EventBus3.0.

    Event的使用,3.0引入管擦着模式,Subscriber:事件订阅者,在EventBus3.0

之前消息处理的方法只能限定于onEvent、onEventMainThread、onEventBackgr

oundThread和onEventAsync,他们分别代表四种线程模型。而在EventBus3.0之后

,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定

线程模型(默认为POSTING),四种线程模型下面会讲到。

       EventBus3.0线程模式

      POSTING(默认):如果使用事件处理函数指定了线程模型为POSTING,那么该事

件在哪个线程发布出来的,事件处理函数就会在这个线程中运行,也就是说发布事件和

接收事件在同一个线程。在线程模型为POSTING的事件处理函数中尽量避免执行耗时操

作,因为它会阻塞事件的传递,甚至有可能会引起ANR。

      MAIN:事件的处理会在UI线程中执行。事件处理时间不能太长,长了会ANR的。

      BACKGROUND:如果事件是在UI线程中发布出来的,那么该事件处理函数就会在

新的线程中运行,如果事件本来就是子线程中发布出来的,那么该事件处理函数直接在

发布事件的线程中执行。在此事件处理函数中禁止进行UI更新操作。

      ASYNC:无论事件在哪个线程发布,该事件处理函数都会在新建的子线程中执行,

同样,此事件处理函数中禁止进行UI更新操作。

      四种线程,大家可以根据需要对线程进行控制,线程模式是的EventBus使用起来更

加灵活,选择性也更多。说了这么多没用的 下面个大家介绍下到底怎么用

      使用之前,需要先在gradle中添加

      //EventBus

      compile'org.greenrobot:eventbus:3.0.0'

      主要方法 事件订阅,也就是之前的注册  EventBus.getDefault().register(this);

                      取消订阅  EventBus.getDefault().unregister(this);

                      事件发送  EventBus.getDefault().post(messageEvent);

                      事件接收 @Subscribe(threadMode=ThreadMode.MAIN)

                                     public void onMessageEvent(PostEventevent) {}

                      粘性事件  EventBus.getDefault().postSticky() (粘性事件是发送后再订阅,

                                    异于普通事件)

     用法  创建一个java类 public class PostEvent{/**  类的名字没有局限性,可以随意定

               义   */}  EventBus.getDefault().post(new PostEvent()) 这个时候 ,就可以在需

              要的地方发送事件了 onMessageEvent 可以用来接收所发送的事件

      下面给出我的代码截图


MainActivity


TestActivity


PostEvent

      代码很简单,这里我没有使用粘性事件。上面是根据官方接收的使用方法来实现的

,不过既然是防踩坑,好像跑题了,下面给大家讲解我遇到的情况。

A。

官方使用指南

      官网上说的是要在onStart()中进行订阅,在onStop()中进行取消定语,单貌似这样在

Activity中是行不通的,这样无法接收到事件。熟悉Activity生命周期的都应该知道为什么

吧,这里不再赘述,个人建议,事件订阅放在onCreate()方法中,而注销,要放在onD

estory()中。

B。之前查阅的时候,有人说EventBus3.0要处理不同场所发出的事件的时候要写不同的

java类,这养就要写很多的java事件类,请注意看我上面写的PostEvent类(可根据需

要,自行进行扩展),在这个类中我定义了三个 变量 tag(事件标签 、代号) what(事件

类型,不同事件对应不同类型)event (事件内容)。这样就不需要对应的事件写不同的

java类了,而且,如果写了那么多类,你分得清楚你接收的是哪个java类么?无形中不是

给自己增加了麻烦吗?


      不知道上面的两个问题 ,大家有没有遇到呢?

    总结:1.使用之前,需要先下载,compile'org.greenrobot:eventbus:3.0.0'加到gradle

                   中

               2. 使用常规的订阅及解订阅方式,在需要的地方发送事件,事件类根据自己需

                   要自行定义

              3. 在需要的地方调用 onMessageEvent进行事件接收(订阅过事件一定要解除

                 订 阅,并且 订阅过事件后必须调用onMessageEvent()方法),不要忘了注

                 解@Subscribe(threadMode=ThreadMode.MAIN) 线程根据需要自己切换

       以上为笔者愚见,并且在使用过程中遇到的问题处理方式,工具都是怎么简单怎么

来,易于维护才是王道,当然每个人都有自己得使用心得,适合自己得,才是最好的。

下面给出源码,需要的可以下载看看 http://download.csdn.net/download/qq_27234017/9990752

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容