位置: 编程技术 - 正文

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基本功能)

  • 所得税税前扣除凭证管理办法
  • 关税及贸易总协定成立时间
  • 税务行政诉讼是由税务机关进行审理并作出裁决
  • 固定资产一次性折旧的账务处理和税务处理
  • 社保工伤保险可以交两家公司吗
  • 外币实收资本入账汇率
  • 加计抵扣进项税进营业外收入
  • 纳税人销售自产门窗并负责安装
  • 出售生产线计入哪里
  • 专项用途财政资金纳税调整规则
  • 房屋租赁可以开住宿费吗
  • 金税设备维护费账务处理
  • 冲减成本费用会计分录
  • 小规模纳税人可以开3%的专票吗
  • 自然人股东转让股权如何避税
  • 私自安装路灯违法吗?
  • 车辆处置入账价值包括哪些
  • 土地闲置费能否扣除
  • 什么叫净资产收益率
  • 预付账款收到发票的会计分录
  • win10专业版虚拟内存怎么设置
  • 用盈余公积弥补亏损会影响所有者权益总额吗
  • 怎么让别人无法访问我的qq空间
  • 会计谨慎性原则是指
  • linux GTK、KDE、Gnome、XWindows 图形界面区别介绍
  • 企业固定资产出售账务处理
  • 建筑企业如何预缴企业所得税
  • Laravel 5.4中migrate报错: Specified key was too long error的解决
  • 公司给员工的油费补贴以什么为依据入账
  • 给员工支付的房租费计入哪里?
  • 预收账款通俗易懂的说法
  • 正在加工的在产品是什么科目
  • js如何转换为数值型
  • python导入其他文件的函数
  • 大数据投资发展有限公司
  • 域名续费多久生效
  • 帝国cms移动端
  • urljoin使用
  • 或有资产什么时候要披露
  • 社保基数是按基本工资还是应发工资
  • 预算凭证可以单张打印吗
  • python中mktime函数
  • mysql有什么优势和特点
  • mongodb删除文档命令
  • 有外币业务的银行
  • 发票遗失要如何补办
  • 偷税行为如何处理
  • c语言http请求解析表单内容
  • mysql的启动方法(windows 平台)
  • 企业拆迁安置房屋没有房产证可以买吗
  • 2018年小规模纳税人
  • 跨年度暂估成本高了怎么办
  • 借主营业务成本贷应付账款
  • 收到技术服务费的账务处理
  • 企业购买原材料属于投资吗
  • 机票行程单上没有金额怎么报销
  • 外派人员房租
  • 股东不能参与公司运营和决策,可以起诉吗
  • 暂估入账的材料对材料成本差异率
  • 小规模纳税人购进税控设备如何抵扣
  • 购买农药化肥怎么入账
  • 车子报废车子怎么处理
  • 快速删除指定位置的结点用单链表还是双链表
  • linux promisc
  • 苹果电脑重新安装macos失败
  • mac不用密码
  • linux怎么使用ping命令
  • cp命令不要覆盖提示
  • win10商店重置后不见了
  • Win10 Mobile RS1预览版14267.1004 修复Lumia 550充电问题
  • android 数据库app
  • ie按钮不显示
  • javascript+
  • javascriptwhile
  • js动态创建script标签
  • js验证码代码怎么写
  • 深圳12366怎么转人工
  • 公司买的保险怎么查询保单明细
  • 建筑企业税务清算流程图
  • 以划拨方式取得土地使用权的,转让房地产时
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设