register
- 通过传入的object拿到class
- 通过class拿到Subscribe的注解方法
- 通过参数所带的class作为key,存到一个map集合subscriptionsByEventType
- 如果是粘性事件,会去查询缓存中是否有发送事件,有的话执行事件
post
- 把传进来的event添加到队列eventQueue
- 进入while 循环,在队列不为空的情况下执行postSingleEvent
- 区分线程,如果是主线程执行invokeSubscriber,调用Method的invoke方法
- 如果是子线程,调用backgroundPoster.enqueue通过线程池执行
任务队列 Poster
- 需要在主线程执行的mainThreadPoster,内部实现是HandlerPoster继承于Handler,作用于主线程的Looper
- 在子线程中执行的backgroundPoster,内部是线程池通过while循环执行队列任务,只有调用者在主线程才会启用,并且会循环执行队列的所有任务,直到全部执行完成
- 在子线程中执行的asyncPoster,内部依然是线程池执行,但是每次都会用子线程,并且只是触发一次执行队列