GithubHelp home page GithubHelp 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.

eventbus_annotation's People

Contributors

f2prateek avatar friederbluemle avatar greenrobot avatar greenrobot-team avatar jnagels avatar joanzapata avatar justintuchek avatar leandros avatar mikosik avatar mormih avatar nbeloglazov avatar perfectcarl avatar stefanhoth avatar talklittle avatar zane96 avatar zsoltvilagos avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

mengxiaofei007

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.