Giter Club home page Giter Club logo

eventbus_annotation's Introduction

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.