zoukankan      html  css  js  c++  java
  • andorid jar/库源码解析之EventBus

    目录:andorid jar/库源码解析 

    EventBus:

      作用:

        用于不同Activity,Service等之间传递消息(数据)。

      栗子:

    A页面:onCreate定义   EventBus.getDefault().register(this);

      onDestroy定义 EventBus.getDefault().unregister(this);

           添加public方法,一个Object参数(所有继承与Object的对象),用于接收消息通知。

    B页面:使用  EventBus.getDefault().post(new 对象);  通知消息(这个时候,如果是同一个类型对象,A中的方法可以收到通知)

      源码解读:

    EventBus.getDefault()

      使用,双重判断,创建/获取一个EventBus对象。

    EventBus.getDefault().register(

      1、注册参数类对象,到EventBus的缓存中,

      2、保存当前类,包含 Subscribe 注释的public方法(且改方法只有一个参数)

      3、同时按照传递对象的类型(消息类型),对数据进行在分类存储,便于查找。

      4、然后循环,当前类的父类,同样的操作,直到,父类StartWith  android.、androidx.、java.、javax. 跳出循环

    EventBus.getDefault().unregister(

      1、移除注册的对象,和方法信息,和注册的方法成员的类型对应的类信息。

    EventBus.getDefault().post(

      1、从记录注册表中查找,当前参数对象对应的注册类集合,数据记录的时候,保存的可以被调用的集合

      2、进行循环调用。已注册方法(知道cancelEventDelivery 被触发,或者循环完成)。

      3、方法有多种调用模式,其实内部就四种调用方式:a、直接调用方法。b、主线程,使用自定义Handler来调用方法。c、使用新建线程,来调用方法。d、线程池来调用方法。

       源码:https://github.com/greenrobot/EventBus

      引入:

    implementation 'org.greenrobot:eventbus:3.1.1'
  • 相关阅读:
    Hive UDF 用户自定义函数 编程及使用
    Hive 常用命令和语句
    Hive 配置显示表头和数据库信息
    Hive 安装配置
    Hadoop完全分布式集群环境搭建
    Java 文件切割工具类
    MongoDB 安装配置
    NodeJS 安装配置
    Java 截屏工具类
    Maven 配置本地依赖jar
  • 原文地址:https://www.cnblogs.com/Supperlitt/p/12762679.html
Copyright © 2011-2022 走看看