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

  • 相关阅读:
    (二)ABP+MetroNic--- 用户管理及角色管理的实现
    BootstrapValidator 自定义服务端验证
    ASP.Net Web API 的参数绑定[翻译]
    ABP webapi IDInput传参
    JqueryTable ServerSide Ajax 数据加载及样式设置
    JqueryTable踩过的坑
    Lambda 表达式中 动态解析OrderbyLinQ语句的实现
    jenkins问题整理
    maven profile实现多环境配置
    Spring 发送内嵌图片的邮件 遇到的问题
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8510442.html
Copyright © 2020-2023  润新知