位置: 编程技术 - 正文

EventBus使用之基础(event_base_new)

编辑:rootadmin

推荐整理分享EventBus使用之基础(event_base_new),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:eventbus的原理,eventbus怎么用,eventbus的原理,eventbus.$on,eventbus.$on,eventbus原理解析简书,eventbus原理解析简书,eventbus.$on,内容如对您有帮助,希望把文章链接给更多的朋友!

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!

开源项目链接

EventBus项目: EventBusDemo下载: ‘de.greenrobot:eventbus:2.4.0’。按照文档HOWTO.md进行操作。

Subscriber以onEvent开头的4个函数区别:

onEvent:事件的处理在和事件的发送在相同的线程,所以事件处理时间不应太长,不然影响事件的发送线程。

onEventMainThread: 事件的处理会在UI线程中执行。事件处理时间不能太长,长了会出现臭名远之的ANR。

onEventBackgroundThread:事件的处理会在一个后台线程中执行。虽然名字是BackgroundThread,事件处理是在后台线程,但事件处理时间还是不应该太长,因为如果发送事件的线程是后台线程,会直接在当前后台线程执行事件;如果当前线程是UI线程,事件会被加到一个队列中,由一个线程依次处理这些事件,如果某个事件处理时间太长,会阻塞后面的事件的派发或处理。

onEventAsync:事件处理会在单独的线程中执行,主要用于在后台线程中执行耗时操作,每个事件会开启一个线程,但最好限制线程的数目。

下面还是先上代码再总结分析。

实战一把屌爆天的功能

如下示例演示了EventBus的线程间通信与线程内通信及自定义消息结构的通信。

下载该实例工程完整代码点击我

EventBus使用之基础(event_base_new)

如下是主界面显示效果:

接着看代码:

首先自定义一个消息数据类型,如下:

接着编写主界面及逻辑代码:

xml代码太简单就省略了。

如下运行结果:

下载该实例工程完整代码点击我

从上面代码可以看见,当发过来一个消息的时候,EventBus区分onEventxxx被调运通过发送消息的参数类型区分(如:post(new MsgBean(“type”))对应onEvent(MsgBean event),post(“test!”)对应onEvent(String event))。

总结

通过上面基础实战发现,使用EventBus的基本步骤就是如下4步:

定义事件类型(或者不定义)。例如:MsgBean等定义事件处理方法。例如:onEvent等注册订阅者。例如:EventBus.getDefault().register(this)发送事件。例如:EventBus.getDefault().post(new MyEvent())

通过这个例子基本上你就可以上手EventBus框架使用了,也知道了大致基本原理。其实这还是不够,玩意出现bug又很郁闷不知道怎么改,所以下一篇还是老规矩,走读一下EventBus的大致源码,学习下作者的代码思想,同时熟悉EventBus的原理。

Wifi 的基本知识 原文链接地址1.IE.简介标准号IEEE.bIEEE.aIEEE.gIEEE.n标准发布时间年9月年9月年6月年9月工作频率范围2.4-2.GHz5.-5.GHz5.

android:gravity和android:layout_gravity的区别 android:gravity定义当前元素内容或当前元素里所包含的子元素(下属元素)的显示位置。android:layout_gravity定义当前元素在父元素里的显示位置。例子1?xmlve

Android requires compiler compliance level 5.0 or 6.0. Found &#;1.7&#; instead. Please use Android Tool 重装操作系统后,要重新配置Android开发环境。配置成功后,添加原本项目时却出现了错误!Androidrequirescompilercompliancelevel5.0or6.0.Found'1.7'instead.PleaseuseAndro

标签: event_base_new

本文链接地址:https://www.jiuchutong.com/biancheng/374598.html 转载请保留说明!

上一篇:Intent数据的传递(intent传递数据的方法)

下一篇:Wifi 的基本知识(wifi基本功能)

  • 房产契税什么时候交的小知识
  • 小规模纳税人开专票税率是1%还是3%
  • 办公费税前扣除标准2023
  • 个税申报人员报送成功怎么删除
  • 公司投资股票亏损,要交企业所得税和个人所得税吗
  • 制作费开票属于什么科目
  • 事业单位不用纳税吗
  • 预缴企业所得税会计处理
  • 负债类会计科目表
  • 免单计入什么科目
  • 存货暂估入账会引起存货账面价值发生增减变动吗
  • 建筑劳务有哪些税种
  • 离职员工竞业限制协议
  • 银行贷款的纳税申报表指的所得税还是增值税
  • 普票6个点怎么算
  • 个人生产经营所得
  • 股份转让的溢价是什么意思
  • 固定资产可以一次计入费用吗
  • 公司注销还需要登报吗
  • 银行承兑汇票到期后多长时间失效
  • 企业所得税法中规定的收入总额包括
  • 企业收到应收账款6要素哪个增加哪个减少
  • 跨年应收账款账务错误怎么调整
  • w11怎么更新
  • 鸿蒙系统大文件夹怎么调节大小
  • linux系统中如何查看日志
  • linux 创建sh
  • 商业银行的票据贴现业务与票据抵押贷款业务的区别
  • 二级资本债是什么意思
  • springboot+vue+elementsUI 实现分角色注册登录界面
  • 旅游 服务业
  • 材料采购计入资产负债表哪里
  • 离职后原单位不给开离职证明
  • vue的watch监听
  • 委托加工的材料成本包括辅助材料成本吗
  • 公立医院增值税抵扣
  • gpt3 api
  • transformer add norm
  • opencv语句
  • cdr快捷键命令大全
  • vmware vmtools
  • 私募基金成立的规模条件
  • 小规模附加税减免性质代码如何选
  • 如果已经结帐,发现凭证有误,应该如何处理
  • 销售黄金的会计分录
  • db2数据库备份文件为bkd格式
  • 个体户不刻公章也要报税吗
  • 哪些税种影响当期损益
  • 小规模纳税人出售使用过固定资产
  • 免税农产品按多少抵扣
  • 已经认证抵扣的发票会计分录
  • 用友软件操作流程图片
  • 长期闲置机器设备评估方法
  • 研究费用记入什么费用
  • 研发支出属于什么要素
  • 购进生产车间增值税税率
  • 原始凭证错误的更正方法
  • 非营利性组织和营利性组织的区别
  • 中小型企业会计
  • 费用分摊的分录
  • xp系统怎么设置自动重启
  • win10一年更新几次
  • win8系统关机后电脑一直运行
  • cocos2dx在暂停某些元素后导致crash问题
  • 寒江孤影原文
  • cocos2dx shader
  • Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
  • firefox background-image垂直平铺问题的解决方法
  • jquery 插件写法
  • shell echo 特殊字符
  • python 内连接
  • javascript怎么用
  • node exit
  • python list set dict tuple
  • Python中断言语句
  • 残疾人个人所得税减免政策
  • 怎么知道税控盘有没有注销
  • 深圳企业公积金更改代扣银行
  • 税务一体化监督起主导作用的是
  • 四季度预缴申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设