事件总线by姚鑫留言邮箱发demo
2019-11-19 22:14:19 19 举报
AI智能生成
android事件总线简介 留言邮箱发demo
作者其他创作
大纲/内容
otto
注:Activity 命名首字母必须大写,否则找不到
使用
添加依赖库
implementation 'com.squareup:otto:1.3.8'
定义消息类
单例封装Bus
注册和取消注册订阅事件
事件订阅者处理事件
使用post发送事件
使用@Produce来发布事件
Produce注解用于生产发布事件
需要进行注册
生产完事件后需要取消注册
事件总线 by姚鑫 留言邮箱发demo
EventBus
简介
针对Android优化的发布-订阅事件总线。
简化了应用程序内各组建间,组件与后台线程间的通信
开销小,代码更优雅,以及将发送者和接收者解耦
如果Activity与Activity进行交互还好说,但是如果Fragment与Fragment进行交互则着实令人头疼
如果用广播处理,麻烦效率也不高
三要素
Event
事件,可以是任意类型的对象
Subscriber
事件订阅者
Publisher
事件发布者,可以任意线程任意位置发送事件,直接调用EventBus的post方法
四中线程模型ThreadMode
POSTING
发布事件与接收事件在同一个线程中
MAIN
事件的处理会在UI线程中执行
BACKGROUD
如果事件在UI线程中发布出来的,那么该事件处理函数就会在新的线程中运行,如果本身就在子线程中发布出来,那么该事件处理函数直接在发布事件的线程中执行
ASYNC
无论事件在哪个线程中发布,该事件处理函数都会在新建的子线程中执行
基本用法
自定义一个事件类
在需要订阅事件的地方注册事件
发送事件
处理事件
消息处理可以随意取名
需要添加一个@Subscribe
指定线程模型,默认为POSTING
取消订阅事件
应用举例
implementation 'org.greenrobot:eventbus:3.0.0'
定义消息事件类
注册和取消订阅事件
事件发布者发布事件
粘性事件
发送事件之后,在订阅该事件也能收到该事件
订阅者处理粘性事件
发送粘性事件
禁止进行UI操作
0 条评论
回复 删除
下一页