《Android进阶之光》--事件总线
No1:
EventBus三要素:
1)Event:事件
2)Subscriber:事件订阅者
3)Publisher:事件发布者
No2:
EventBus的4种ThreadMode(线程模型):
1)POSTING(默认):该事件是在哪个线程发布出来的,事件处理函数就会在哪个线程中运行
2)MAIN:事件的处理会在UI线程中执行
3)BACKGROUND:在新线程或者发布的子线程中执行,禁止进行UI更新操作
4)ASYNC:在新建的子线程中执行,禁止进行UI更新操作
No3:
EventBus源码解析
EventBus.getDefault()->(单例模式)
new EventBus()->
EventBus(EventBusBuilder)->(建造者模式)
register->
SubscriberMethodFinder.findSubscriberMethods->findUsingInfo->getSubscriberInfo->findUsingReflectionInSingleClass->
subscribe->
...
No4:
otto使用
compile 'com.squareup:otto:1.3.8'
public class BusData{ public String message; public BusData(String message){ this.message = message; } public String getMessage(){ return message; } public void setMessage(String message){ this.message = message; } }
public class OttoBus extends Bus{ private volatile static OttoBus bus; private OttoBus(){} public static OttoBus getInstance(){ if(bus == null){ synchronized(OttoBus.class){ if(bus==null){ bus = new OttoBus(); } } } return bus; } }
Bus bus = OttoBus.getInstance(); bus.register(this); bus.unregister(this); @Subscribe public void setContent(BusData data){ tv_message.setText(data.getMessage()); } OttoBus.getInstance().post(new BusData("刘望舒的博客更新了"));
No5:
Otto主要类的功能
1)Produce、Subscribe:发布者和订阅者注解类
2)Bus:事件总线类,用来注册和取消注册,维护发布-订阅模型,并处理事件调度分发
3)HandlerFinder、AnnotatedHandlerFinder:用来查找发布者和订阅者
4)EventProducer、EventHandler:分别封装发布者和订阅者的数据结构
标签:
android进阶之光
, 事件总线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2017-03-14 【转载】图片压缩最优方案