首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EventBus源码分析之线程分发

EventBus的线程分发中介绍了EventBus中发布和订阅方法设置了ThreadMode之间的关系,最终表格如下: 发布线程 Android主线程 非Android主线程,线程a POSTING Android...而该对象表示当前程序平台是否支持主线程,Builder中的定义如下: MainThreadSupport getMainThreadSupport() { //case:不为null,直接返回...= null) { return mainThreadSupport; } //case:Android平台,返回AndroidHandlerMainThreadSuppoet...executorRunning) { executorRunning = true; //交给EventBus的线程池,执行自己...可以看到与Background的区别,ASYNC模型下,总是会创建一个新的线程进行调用invokeSubscriber()方法的;而Background中有个死循环,会存在很多情况下,很多POST的处理是在同一个线程中的

57030
您找到你想要的搜索结果了吗?
是的
没有找到

EventBus线程分发

EventBus支持线程分发,在上一篇博客EventBus简介以及初步使用中,了解到EventBus的使用主要涉及事件发送者,以及事件订阅者;对于发送和订阅这两个行为,可以在不同的线程中,这就是EventBus...不同于MAIN,总是会被分发到主线程的队列中,不会阻塞post线程。...如果post不是在主线程,那么事件处理会被直接在post线程中调用;如果post是主线程,EventBus使用了一个单一的background线程,那么所有主线程post的事件将会按照队列顺序进入,因此这要求事件处理尽可能快速返回...如果不是在android平台中,那么总是会使用一个background线程。...ThreadMode.ASYNC 事件处理总是在一个单独的线程。总是与post线程和main线程独立。

1.4K30

EventBusEventBus 源码解析 ( EventBus 构建 | EventBus 单例获取 | EventBus 构造函数 | EventBus 构建者 )

双重加锁校验 可以保证 EventBus 实例对象 全局 全时间线 唯一 ; /** * EventBus是Java和Android的中央发布/订阅事件系统。...* 事件处理方法必须由{@link Subscribe}注释,必须是公共的,不返回任何内容(void), * 并且只有一个参数(事件)。...实例对象 ; 在 EventBus(EventBusBuilder builder) 构造函数中 , 初始化了一堆数据 ; /** * EventBus是Java和Android的中央发布/订阅事件系统...* 事件处理方法必须由{@link Subscribe}注释,必须是公共的,不返回任何内容(void), * 并且只有一个参数(事件)。...sendNoSubscriberEvent = true; boolean throwSubscriberException; boolean eventInheritance = true

64110

Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus

对于Android开发者来说,经常使用的消息传递方式有很多种,从最早使用的Handler、BroadcastReceiver、接口回调,到近几年流行的通信总线类框架EventBus、RxBus。...Android消息传递框架,总在不断的演进之中。 从EventBus说起 EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递。...EventBus可以代替Android传统的Intent、Handler、Broadcast或接口回调,在Fragment、Activity、Service线程之间传递数据,执行方法。...现在看来,EventBusAndroid开发者世界带来了一种新的框架和思想,就是消息的发布和订阅。这种思想在其后很多框架中都得到了应用。 ?...实时数据刷新,当组件处于活跃状态或者从不活跃状态到活跃状态时总是能收到最新的数据。 解决Configuration Change问题,在屏幕发生旋转或者被回收再次启动,立刻就能收到最新的数据。

2.2K30

三幅图给你弄懂EventBus核心原理

前言 好多分析EventBus的文章,喜欢上来就贴源码,我看了好多次总是迷迷糊糊的,这次花时间彻底整理一下EventBus,发现EventBus核心其实就是三幅图,这三幅图涉及的是三个HashMap表,...弄懂这三幅图那么EventBus就懂了。...第二幅图(订阅事件和订阅者) 这种表关系是event和subsciption的对应关系,比如在Android中多个activity可能会注册监听同一个event事件,所以在执行: image.png EventBus.getDefault...if (aborted) { break; } } return true...【Android进阶学习视频】、【全套Android面试秘籍】关注我【主页简介】查看免费领取方式 第三幅图 在看第三幅图之前思考一个问题,postSticky到底是怎么执行的?

53500

android事件总线EventBus3.0使用方法详解

一.EventBus概述 1.EventBus的三要素 EventBus有三个主要的元素需要我们先了解一下: Event:事件,可以是任意类型的对象。...可以自己实例化EventBus对象,但一般使用EventBus.getDefault()就好了,根据post函数参数的类型,会自动调用订阅相应类型事件的函数。...2.EventBus的四种ThreadMode(线程模型) EventBus3.0有以下四种ThreadMode: POSTING(默认):如果使用事件处理函数指定了线程模型为POSTING,那么该事件在哪个线程发布出来的...= ThreadMode.POSTING,sticky = true) public void onUserEvent(MessageEvent event) { name.setText("用户名..." android:layout_centerInParent="true" android:gravity="center" android:text="Welcome" android

48320

EventBus轻松使用

什么是EventBus   由greenrobot组织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架,功能:通过解耦发布者和订阅者简化Android事件传递,EventBus...可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。...如何使用   首先gradle中引入 compile 'org.greenrobot:eventbus:3.0.0'   EventBus常用的有三个函数   1.注册事件,注册过的类能够接受EventBus...;   2.注册Eventbus,和之前一样 EventBus.getDefault().register(this);   3.处理消息,注意在注解参数中声明:sticky:true,表示该事件能够接受粘性事件...@Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEvent(String event) { Log.d

58720
领券