
EventBus阅读
文章平均质量分 76
wbzwind
这个作者很懒,什么都没留下…
展开
-
EventBus源码阅读(1)-ThreadMode
ThreadMode枚举类这个类最简单了,所以先拿它祭刀。柿子拣软的捏。源码如下:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "Licen原创 2016-08-09 11:27:54 · 322 阅读 · 0 评论 -
EventBus源码阅读(14)-BackgroundPoster
上节读的是异步任务处理类。接下来是后台任务处理类了。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may原创 2016-08-10 14:09:12 · 243 阅读 · 0 评论 -
EventBus源码阅读(15)-HandlerPoster
我们平时在开发中经常使用handler。该类继承自Handler,说明要在指定的线程中执行,有可能是主线程,也可能是某个固定的线程,就看试用了。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache原创 2016-08-10 14:21:57 · 384 阅读 · 0 评论 -
EventBus源码阅读(16)-AsyncExecutor
这个从名字读来是异步执行者的意思。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use原创 2016-08-10 14:47:57 · 444 阅读 · 0 评论 -
EventBus源码阅读(17)-EventBusBuilder
我们看到 EventBus,EventBusBuilder,从名字就可以猜到这是建造者模式了。代码都比较多,还好我们已经把外围的困难都扫平了(异常处理在此先忽略,不影响我们理解,最后的时候在阅读相关代码)我们先看EventBusBuilder源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http原创 2016-08-10 15:01:19 · 380 阅读 · 0 评论 -
EventBus源码阅读(19)-EventBus初始化
我们知道,在使用EventBus的时候,需要EventBus.getDeafult().register(this);读代码呢,按图索翼!先看getDefault()做了什么!源码: /** Convenience singleton for apps using a process-wide EventBus instance. */ public原创 2016-08-12 10:20:37 · 445 阅读 · 0 评论 -
EventBus源码阅读(20)-EventBus注册
方法原创 2016-08-12 10:42:04 · 236 阅读 · 0 评论 -
EventBus源码阅读(18)-EventBus-总括
终于到了最关键的,最核心的部分了。溜一眼,发现该类的代码量挺大的,五百多行。全部贴过来也不是很好,我打算分成五部分来讲(1)-初始化(2)-注册(3)-出发(4)-其它我们这部分先整体看一看都有哪些方法,哪些属性原创 2016-08-10 15:29:41 · 192 阅读 · 0 评论 -
EventBus源码阅读(21)-EventBus触发
在注册好后,就该发送事件了。post函数: /** Posts the given event to the event bus. */ public void post(Object event) { PostingThreadState postingState = currentPostingThreadState.get();原创 2016-08-12 13:42:10 · 272 阅读 · 0 评论 -
EventBus源码阅读(22)-EventBus注销
在Activity销毁的时候,我们需要注销其注册的事件此时调用的是unregister /** Unregisters the given subscriber from all event classes. */ public synchronized void unregister(Object subscriber) { List> subscribed原创 2016-08-12 15:06:19 · 903 阅读 · 0 评论 -
EventBus源码阅读(24)-EventBus-Sticky
就从原来没有度过的几个函数开始吧!1、postSticky(Object) /** * Posts the given event to the event bus and holds on to the event (because it is sticky). The most recent sticky * event of an event's t原创 2016-08-12 15:47:58 · 232 阅读 · 0 评论 -
EventBus源码阅读(13)-AsyncPoster
看了那么多的了,还没有看到核心!!干货不好下咽,稀汤才好消化,所以我在此一直注水!AsyncPoster名字上猜测应该是异步发送的意思。在看代码,继承自Runnable源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licens原创 2016-08-10 13:40:47 · 370 阅读 · 0 评论 -
EventBus源码阅读(12)-PendingPostQueue
上节读到了任务结构体,这篇我们读任务队列源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not u原创 2016-08-10 13:58:42 · 420 阅读 · 1 评论 -
EventBus源码阅读(11)-PendingPost
PendingPost用来存储事件的结构。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not原创 2016-08-10 13:46:13 · 361 阅读 · 0 评论 -
EventBus阅读源码(2)-SubscriberMethod
如果说为什么选择源码的阅读顺序,这个其实没有什么跟据,我写在这里的顺序绝对不是我阅读的顺序,阅读的时候都是交叉的,很难说选的顺序正好是循序渐进的。而且一般都是找到一个入口来进行的,例如从EventBus类开始。这适合我们开始的时候通览代码,当对代码有了一个大致的了解之后,如果要细细的分析,则要从根部着手。这篇文章看SubscriberMethod该类只是基于了ThreadMod原创 2016-08-09 11:44:11 · 259 阅读 · 0 评论 -
EventBus源码阅读(3)-Subscribe
这个是注释定义。就是我们在应用中注册事件的时候,使用的注释的定义。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version 2.0 (the "License");原创 2016-08-09 12:19:36 · 279 阅读 · 0 评论 -
EventBus源码阅读(4)-Subscription
在使用EventBus的时候,我们首先要注册(EventBus.register),还要编写相应的消息响应函数(onMainThreadEvent)在EventBUs的不同版本中,有不同的注册响应函数的方法,老版本是通过函数名识别的,所以函数名称只能为既定的几种形式(例如onMainThreadEvent),但我们现在分析的版本是通过注释的方式进行识别的(@Subscribe)该类原创 2016-08-09 14:14:52 · 299 阅读 · 0 评论 -
EventBus源码阅读(5)-SubscriberInfo
前边看了订阅记录信息,接着来看订阅者信息SubscriberInfo该类是个接口,描述了一个订阅者应当具备的特性源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Ver原创 2016-08-09 14:42:14 · 264 阅读 · 0 评论 -
EventBus源码阅读(6)-AbstractSubscriberInfo
看了SubscriberInfo的接口定义,现在来看看抽象实现:AbstractSubscriberInfo源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Version原创 2016-08-09 14:50:20 · 230 阅读 · 0 评论 -
EventBus源码阅读(开篇)
万事由简入深。阅读代码也是如此,晚上虽有很多前辈已经分析过Eventbus.但那是他们的分析,我们学习借鉴,未必是自己的。读过了只是读过了,用过了只是用过了,分析理解了只是理解了,能够复制再现了才是初步掌握,能够发明创造才是真正的学习。已经读源码有些日子了,没有选择Android源码来读,是因为畏惧其工程过于庞大;选择EventBus来读,是因为实用较多,且代码量少。原创 2016-08-09 11:19:42 · 256 阅读 · 0 评论 -
EventBus源码阅读(7)-SimpleSubscriberInfo
看完了SubscriberInfo的接口定义,抽线实现,接下来就是具体实现了:SimpleSubscriberInfo源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache License, Versio原创 2016-08-09 15:03:07 · 271 阅读 · 0 评论 -
EventBus源码阅读(8)-SubscriberMethodInfo
该类很简单,就是一个信息的整个体,或者叫做结构体,用于完整的构造一组信息。用于描述一条我们注册的类似于(onMainThreadEvent)方法。源码:/* * Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org) * * Licensed under the Apache Lic原创 2016-08-09 15:11:45 · 261 阅读 · 0 评论 -
EventBus源码阅读(9)-SubscriberInfoIndex
在读完meta包下的其它类后,发现这个东东还没看,看看什么个定义吧接口,就一个方法。从名称猜猜:订阅者信息索引方法是通过订阅者的类,来获取订阅者信息,也就是说,索引有可能是订阅者类型(就像Activity.class)。源码:public interface SubscriberInfoIndex { SubscriberInfo getSubscriberInfo(C原创 2016-08-09 15:36:01 · 267 阅读 · 0 评论 -
EventBus源码阅读(10)-SubscriberMethodFinder
都写了这么多了,还没到重点,哈哈哈,不急不急,围点打援,慢慢来!再来看看SubscriberMethodFinder该类从字面意思看,就是用来找SubscriberMethod的功能类。这个类定义比较长呀!我们慢慢来看。不要急。书是一字一字读的,快不了。其中有FindState的状态池,关于这个东西。我们先跳到最后看看其具体是什么,然后再回来从头来读。源码:/*原创 2016-08-09 15:48:17 · 522 阅读 · 0 评论 -
EventBus源码阅读(23)-EventBus其它
看看还剩下那些函数没有读:我们一个个的看过来:1、builder() public static EventBusBuilder builder() { return new EventBusBuilder(); }该函数是静态的,返回的是一个新的EventBusBuilder那么可以猜测使用了个性化定制EventBusBuilder的原创 2016-08-12 15:16:09 · 655 阅读 · 0 评论