《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:分别封装发布者和订阅者的数据结构

posted @   嘉禾世兴  阅读(188)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-03-14 【转载】图片压缩最优方案
点击右上角即可分享
微信分享提示