eventBus ThreadMode,根据自己的实际使用场景,设置ThreadMode

【EventBus】Subscribe 注解 threadMode 线程模型深度解析:从 POSTING 到 ASYNC 的实战选择 就像餐厅里的服务员传菜,有的菜必须由主厨亲自处理(UI线程),有的可以交给帮厨(子线程),还有些可以完全扔给后厨不管(异步线程)。我在实际项目中踩过的坑是:在POSTING模式下执行数据库操作,结果阻塞了UI线程的事件发布,导致界面卡死。在开发即时通讯应用时,我的经验是:消息到达事件用MAIN_ORDERED更新UI,消息存储用BACKGROUND,文件下载用ASYNC,三种模式配合使用才能达到最佳效果。POSTING是EventBus的默认线程模式,它的行为最简单直接:事件在哪发布,就在哪处理。 阅读详情

eventBus 官网ThreadMode介绍:http://greenrobot.org/eventbus/documentation/delivery-threads-threadmode/

具体的使用方法可以参照 git:https://github.com/greenrobot/EventBus,重点记录ThreadMode,可以避免在实际写代码过程中出错。

1.eventBus默认有5中ThreadMode,默认的为ThreadMode: POSTING。

  • 1 ThreadMode: POSTING:默认的Called in the same thread (default),在同一个线程中执行。
  • 2 ThreadMode: MAIN : Called in Android UI's main thread
  • 3 ThreadMode: MAIN_ORDERED: Called in Android UI's main thread ,不过需要排队,如果前一个也是main_ordered 需要等前一个执行完成后才执行,在主线程中执行,可以处理更新ui的操作。
  • 4 ThreadMode: BACKGROUND :Called in the background thread,后台进程,处理如保存到数据库等操作。
  • 5 ThreadMode: ASYNC :Called in a separate thread 异步执行,另起线程操作。
2.使用方法
// Called in the same thread (default)
@ Subscribe ( threadMode = ThreadMode . POSTING )
public void onMessage ( MessageEvent event ) {
     log ( event . message ) ;
}








EventBus的使用及实现原理 1.EventBus的介绍与使用 1.1常见的组件间的通信方式 Intent:跳转+传参(局限性非常大) Handler:通常用来更新主线程UI,使用不当容易出现内存泄露 Interface:接口回调,仅限于同一线程中数据交互 BroadcastReceiver:有序广播+无序广播 AIDL:跨进程通信,代码阅读性不友好,维护成本偏高 EventBus优点 代码简单,快 Jar包小,~50k... 阅读详情

相关推荐

EventBus原理与应用:Android高效通信解决方案

事件总线(Event Bus)是一种实现组件间松耦合通信的设计模式,其核心采用发布-订阅机制。在Android开发中,传统组件通信方式如Intent或接口回调容易导致代码臃肿,而EventBus通过解耦发送方和接收方,显著提升代码可维护性。技术实现上,EventBus利用反射和线程调度策略,支持MAIN、BACKGROUND等四种线程模式,确保事件处理的线程安全。性能方面,其轻量级设计(仅60KB)支持每秒超50万次事件分发,特别适合电商购物车同步等高频场景。结合粘性事件和优先级控制等高级特性,开发者可以构

技术百科 364

EventBus之ThreadMode

什么是ThreadMode? ThreadMode翻译为中文即为“线程模式”。 每个事件处理程序方法都有一个线程模式,它确定EventBus调用该方法所在的线程。 EventBus专注于发布事务线程的独立性。 线程模式分类 POSTING 消息订阅者将与发送者所处在同一线程中。这是默认值。该模式避免了线程切换所带来的开销。这是处理简单事务所推荐的模式。如果发布线程是主线程,使用该模式必须立即返回...

Renfer的专栏 1526

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

EventBus之交付线程(Delivery Threads)

Delivery Threads (ThreadMode) EventBus可以为您处理线程:事件(events)可以在不同于发布线程(the posting thread)的线程中发布(be posted)。一个常见的用例是处理UI更改。在Android中,UI更改必须在UI(主)线程中完成。另一方面,网络或任何耗时的任务都不能在主线程上运行。EventBus帮助您处理这些任务并与UI线程同步...

WindfallSheng的博客 888

用FPGA驱动WS2812B点阵,手把手教你实现动态文字显示(附完整Verilog代码)

本文详细介绍了如何使用FPGA驱动WS2812B点阵实现动态文字显示,包括硬件连接、Verilog代码实现和动态效果设计。通过精确的时序控制和数据处理,读者可以掌握FPGA与WS2812B的交互技术,并实现炫酷的显示效果。附完整Verilog代码,适合硬件爱好者和工程师参考实践。

weixin_30482383的博客 669

基于SpringBoot+Vue的公司考勤管理系统

为什么选择我博主是优快云毕设辅导博客第一人兼开派祖师爷、博主本身从事开发软件开发、有丰富的编程能力和水平。专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流和合作。

m0_71849512的博客 1161

EventBus篇一:ThreadMode

TheadMode  每一个事件处理方法都有着自己的线程模式(TheadMode)。线程模式决定了EventBus在哪个线程中调用事件处理方法。   ThreadMode枚举包含四个值:    - PostThread    - MainThread    - BackgroundThread    - Async。A.PostThread(默认模式)调用线程:事件发布线程

奉孝安在 3180

海康门禁二次开发实战:用Java实现员工考勤系统的人脸权限管理

本文详细介绍了如何利用Java技术栈进行海康威视门禁系统的二次开发,实现员工考勤系统的人脸权限管理。从开发环境准备、SDK集成到设备连接、人脸数据批量处理,再到权限管理与异常处理,全面解析了海康门禁对接开发的关键步骤和最佳实践,助力企业构建高效、安全的智能考勤系统。

weixin_29191669的博客 262

EventBus 发送的消息,如何做到线程切换?(1)

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有高级架构技术进阶脑图、Android开发面试专题资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

2401_84121627的博客 736

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2130

【YOLOv11改进- 主干网络】YOLOv11+WTConv(ECCV2024): 基于YOLOv11的主干网络改进,大感受野的小波卷积

论文提出了WTConv,这是一个使用级联小波分解的层,并执行一组小卷积核的卷积,每个卷积专注于输入的不同频率带,并具有越来越大的感受野。这个过程能够在输入中对低频信息给予更多重视,同时仅增加少量可训练参数。实际上,对于一个  的感受野,可训练参数数量只随着  的增长而呈对数增长。而WTConv与常规方法的参数平方增长形成对比,能够获得有效的卷积神经网络(CNN),其有效感受野(ERF)大小前所未有。

qq_41304809的博客 1401

EventBus 3.0 源码分析

from: http://www.jianshu.com/p/f057c460c77e 1.简介 想必每个入了门的Android开发者都多少对EventBus有过了解,EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。EventBus使用简单,并将事件发布和订阅充分解耦,从而使代码更简洁。一直以来很受开发者的欢迎,截止

birthmarkqiqi的专栏 439

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 403

深入理解EventBus - ThreadMode、Sticky Event等

在 深入理解EventBus - 基本使用 已经初步了解了EventBus如何使用,下面从Thread Mode、Sticky Event、EventBus单例模式创建等方面,深入了解EventBus的使用,以满足各种场景的使用。 Configuration         在 深入理解EventBus - 基本使用中,我们获取EventBus单例对象是通过EventBus.getDefa

行云间 1万+

产品路线图的三种模型(RICE/MoSCoW/Kano),教你如何对需求进行优先级排序

RICE/MoSCoW/Kano三种模型,教你如何对需求进行优先级排序。 也许你会让业务提供一份ROI,记得前不久参加过一场立项会评审,一位很有意思的小产品在会上讲不清楚ROI,评审们要求会后重新梳理,小产品表达不要为难业务方干一些他们不擅长的事了。这个看似笑话的经历,背后隐藏着价值判断已经流于形式。 也许你会要求业务方直接给出需求优先级列表,把任务分为P0到P5,这样的划分除了按需求本质的优先级还同时考虑了开发资源、开发难度等问题。毫不夸张地说,我曾经拿到一张全是P0级别的需求清单,如果一切任务都是高

wenyusuran的专栏 5538

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

别再乱用EventBus的@Subscribe了!5种ThreadMode线程模式保姆级选择指南

本文深入解析EventBus中@Subscribe注解的5种ThreadMode线程模式,包括POSTING、MAIN、MAIN_ORDERED、BACKGROUND和ASYNC,帮助开发者根据实际场景精准选择。通过对比特性和适用场景,避免线程相关隐患,提升Android应用性能与稳定性。

weixin_30540691的博客 438

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android EventBus 的使用介绍与原理

EventBus 的使用介绍与原理

OuO-1 的博客 299

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

eventbus threadmode 场景多种模式解释 之三

文章目录POSTING (默认值默认方式)MAINMAIN_ORDEREDBACKGROUNDASYNC POSTING (默认值默认方式) 订阅者将在发布事件的同一线程中直接调用。这是默认值。活动交付 意味着开销最少,因为它避免了线程的完全换。 因此,这是推荐的模式 可以在很短的时间内完成而无需主线程的简单任务。事件处理程序使用此模式必须快速返回以避免阻塞发布线程,该线程可能是主线程。 MAIN 在Android上,订阅者将在Android的主线程(UI线程)中被调用。如果发布线程是主

上上迁的专栏 581

【Andorid】EventBus浅探

订阅者(Subscriber)把自己想订阅的事件(Event)注册(register)到调度中心(EventBus),当发布者(Publisher)发布该事件到调度中心时,也就是该事件触发时,由调度中心统一调度订阅者注册到调度中心的处理代码(onEvent())。(发布/订阅者模式与观察者模式并不完全一样)粘性事件的特点在于能够在发送事件之后再进行订阅,依然可以接收到该事件。这与普通事件不同,普通事件遵循先注册订阅者后发布事件的顺序,而粘性事件允许先发布后注册的操作方式。

2303_79296612的博客 894

【Android】EventBus 的使用

Android 事件总线 EventBus 的使用

LiuYaoheng的博客 1202

别再乱用EventBus的@Subscribe了!5种ThreadMode模式实战详解(附避坑指南)

本文深入解析EventBus中@Subscribe注解的五种ThreadMode模式(POSTING、MAIN、MAIN_ORDERED、BACKGROUND、ASYNC),通过实战案例揭示多线程开发的常见陷阱与优化方案。重点探讨POSTING模式的潜在风险及适用场景,提供线程模式决策框架和性能优化技巧,帮助开发者避免UI卡顿、ANR等典型问题。

weixin_42530458的博客 156

android跨线程通信eventbus

android进程内通信eventbus

闲庭信步的专栏 6420

EventBus源码解析

EventBus作为一个事件处理分发总线框架,如今被广泛用于大大小小的企业之中。其能够如此之火,一定有它的特别之处。今天就来分析一下EventBus的原理。 1、定义事件 2、注册、注销与发送事件 3、设置响应函数 ThreadMode EventBus共包括4种模式: POSTING:在post所在线程执行 MAIN:在主线程(UI thread)中执...

Kongou的有顶天 354

AndroidEventBus线程模式全解析:ThreadMode使用场景与最佳实践

AndroidEventBus是一款轻量级的事件总线框架,它允许组件间通过事件进行通信,而无需显式注册回调接口。作为Android开发中常用的事件处理工具,理解其线程模式(ThreadMode)的使用场景与最佳实践,能够帮助开发者构建更高效、更可靠的应用。 ## 一、ThreadMode核心类型解析 AndroidEventBus通过`ThreadMode`枚举类定义了事件处理的线程策略,主要

gitblog_01148的博客 376

Android EventBus实战 没听过你就out了(1)

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!上面分享的字节跳动公司2021年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。【Android高级架构视频学习资源】Android部分精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!

2401_84149882的博客 884

EventBus

注册时机、粘性事件或普通事件配合,来解决事件的操作与存储,比如App全局使用的环境变量,可以发送粘性事件,实现全局共享;如果想通过事件更新UI,须把注册时机放到onStart中,无论你发的是粘性事件还是普通事件,在UI进入onStop状态后,接收到的事件也不会刷新UI,相当于浪费了事件的发送;如果发送事件是粘性事件,订阅方法是sticky=true,UI再次获取焦点时,会再次接收到事件,可以做行UI的更新,一般不建议这样使用。

crazyhilary的博客 3162
上一篇: andorid 开发常用官网
下一篇: android 官网权限的最佳做法
ms09421
博客等级 码龄17年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值