Zane96 / EventBus_Annotation

EventBus源码的中文注释

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EventBus

###EventBus中文注解。个人对EventBus源码的阅读理解。

  • 说明和看法
    • 目前为止对于register, unRegister, post中涉及到的类和重要方法都做了注释,有很深刻的认识。比如post的线程调度,注册函数是如何通过反射找到的等等流程
    • EventBus一般在用的时候我们一般直接getDefault,其实可以通过EventBusBuilder这个类进行链式操作来构造EventBus实例,具体请自己查看源码。很重要的一个变量就是ignoreGeneratedIndex,如果你通过new EventBusBuilder().ignoreGeneratedIndex(true);这个对象来去构造EventBus,那么EventBus不会通过反射去得到注册函数,而是通过编译时期的注解处理器去获得信息。具体代码请查看SubscriberMethodFinder类。
    • 虽然EventBus会默认通过反射获得注册函数,但是获取一次之后会缓存在一个map里面,所以不会每一次都去通过反射去获得注册函数
    • 可以很明显的看到EventBus对于扩展性,框架设计做的一些操作。并且代码简单易懂,不会像系统源码那样一个类就几千行。还是很值得阅读的入门级别的源码。

不论是设计模式,还是ThreadLocal,Executor,反射注解的运用,EventBus都是一个很值得阅读的框架源码。


EventBus is a publish/subscribe event bus optimized for Android.

EventBus...

  • simplifies the communication between components
    • decouples event senders and receivers
    • performs well with Activities, Fragments, and background threads
    • avoids complex and error-prone dependencies and life cycle issues
  • makes your code simpler
  • is fast
  • is tiny (~50k jar)
  • is proven in practice by apps with 100,000,000+ installs
  • has advanced features like delivery threads, subscriber priorities, etc.

Build Status

EventBus in 3 steps

  1. Define events:
    public class MessageEvent { /* Additional fields if needed */ }

  2. Prepare subscribers
    Register your subscriber (in your onCreate or in a constructor):
    eventBus.register(this);

    Declare your subscribing method:
    @Subscribe
    public void onEvent(AnyEventType event) {/* Do something */};

  3. Post events:
    eventBus.post(event);

This getting started guide shows these 3 steps in more detail.

Add EventBus to your project

Please ensure that you are using the latest version by checking here

Gradle:

    compile 'org.greenrobot:eventbus:3.0.0'

Maven:

<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>3.0.0</version>
</dependency>

Or download EventBus from Maven Central

Homepage, Documentation, Links

For more details on EventBus please check EventBus' website. Here are some direct links you may find useful:

Features

Documentation

Changelog

FAQ

How does EventBus compare to other solutions, like Otto from Square? Check this comparison.

License

Copyright (C) 2012-2016 Markus Junginger, greenrobot (http://greenrobot.org)

EventBus binaries and source code can be used according to the Apache License, Version 2.0.

More Open Source by greenrobot

greenrobot-common is a set of utility classes and hash functions for Android & Java projects.

greenDAO is an ORM optimized for Android: it maps database tables to Java objects and uses code generation for optimal speed.

Follow us on Google+ or check our homepage to stay up to date.

About

EventBus源码的中文注释

License:Apache License 2.0


Languages

Language:Java 95.6%Language:CSS 4.4%