首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )

文章目录 一、EventBus 注册订阅者 二、订阅方法 三、查找订阅方法 findSubscriberMethods 方法 四、查找订阅方法 findUsingInfo 方法 五、查找订阅方法 findUsingReflectionInSingleClass...* 事件处理方法必须由{@link Subscribe}注释,必须是公共的,不返回任何内容(void), * 并且只有一个参数(事件)。...findSubscriberMethods 方法 ---- 订阅方法缓存机制 : 从缓存中获取 订阅方法 , METHOD_CACHE 缓存是一个 HashMap 集合 ; 如果订阅者有很多方法 ,...如果每次订阅都要查询所有的方法 , 如果遍历一次 Activity 的所有方法 很消耗性能 ; 因此这里引入了缓存机制 ; 第一次订阅时 , 将方法都放在缓存集合中 , 如果第二次订阅 , 不用再次查找方法...(findState); } } 五、查找订阅方法 findUsingReflectionInSingleClass ---- 通过反射获取订阅者类中的所有方法 , 遍历 订阅者 类中的所有方法

2.2K20

【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )

文章目录 一、检查订阅方法缓存 二、反射获取订阅类中的订阅方法 三、完整代码示例 一、检查订阅方法缓存 ---- 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1....获取订阅者类 : 通过反射获取该订阅者类中的所有订阅方法 , 凡是订阅方法 , 都带有 @MySubscribe 注解 ; // 获取订阅者所属类 Class<?...查看方法缓存 : 查看方法缓存中 , 是否有该订阅者对应的 订阅类 和 订阅方法 信息 ; // 获取 Class<?...有缓存 : METHOD_CACHE 缓存中获取的 订阅者封装类 集合 , 如果该集合不为空 , 说明 则直接返回该集合 ; if (subscriberMethods == null)...返回订阅方法 : 将 订阅类 中的 所有 订阅方法 打包 , 放入返回集合中 ; // 要返回的 MySubscriberMethod 集合 List<MySubscriberMethod

3.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

【EventBus】事件通信框架 ( 订阅类-订阅方法缓存集合 | 事件类型-订阅者集合 | 订阅对象-事件类型集合 )

| 从封装的数据结构角度分析 EventBus ) 博客 , 仿 EventBus , 设置几个重要的集合 ; 一、订阅类-订阅方法缓存集合 ---- METHOD_CACHE 作用仅用于作为订阅方法的缓存类..., Key - 订阅类类型 ; Value - 订阅方法 MySubscriberMethod 的集合 ; 每个类可能会创建多个对象 , 当第一个对象注册后 , 就将该类类型与类中的订阅方法 , 都缓存到该...+ 订阅方法 的封装类 ; /** * Key - 订阅方法事件参数类型 * Value - 封装 订阅者对象 与 订阅方法 的 MySubscription 集合...>>> typesBySubscriber ; Key - 订阅者对象 ; Value - 订阅者对象中所有的订阅方法的事件参数类型集合 ; 在注册时 , 设置该对象对应的订阅方法接收的事件类型 , 在取消注册时...中封装 订阅者对象 + 订阅方法 ; /** * 解除注册时使用 * Key - 订阅者对象 * Value - 订阅者对象中所有的订阅方法的事件参数类型集合

87920

【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )

文章目录 前言 一、EventBus 注册订阅者 二、注册订阅方法的具体过程 三、Subscription 类 前言 在上一篇博客 【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法...| 查找订阅方法 ) 中 , 介绍了注册订阅者的第一个步骤 , 查找订阅者 ; 首先要获取当前的 List subscriberMethods 订阅方法集合 , 该集合从...: 如果是第一次获取订阅方法 , 缓存是空的 , 此时通过反射获取该 订阅类 所有符合条件的订阅方法 , 将 订阅方法 封装到 SubscriberMethod 中 , 然后添加到 findState.subscriberMethods...集合中 ; 一、EventBus 注册订阅者 ---- 获取到订阅方法集合后 , 然后开始遍历订阅方法集合 , 调用 subscribe 方法 , 注册订阅者 ; public class EventBus...* 事件处理方法必须由{@link Subscribe}注释,必须是公共的,不返回任何内容(void), * 并且只有一个参数(事件)。

38310

【EventBus】事件通信框架 ( 实现几个关键的封装类 | 消息中心 | 订阅注解 | 订阅方法封装 | 订阅对象-方法封装 | 线程模式 )

文章目录 一、消息中心 二、订阅方法时的注解 三、订阅方法封装 四、订阅对象-方法封装 五、线程模式 一、消息中心 ---- 此处暂时只实现一个单例类 , 后续 注册订阅者 , 处理事件传递 , 取消注册订阅者...* @return */ MyThreadMode threadMode() default MyThreadMode.POSTING; } 三、订阅方法封装 ---- 将 订阅方法..., 订阅方法的线程模式 , 订阅方法接收的事件类型 , 封装到类中 ; package com.eventbus_demo.myeventbus; import java.lang.reflect.Method...; /** * 该类中用于保存订阅方法相关信息 */ public class MySubscriberMethod { /** * 订阅方法 */ private...> getEventType() { return eventType; } } 四、订阅对象-方法封装 ---- 再次进行封装 , 将 订阅者对象 和 订阅方法 , 封装到一个类中

28910

android bindservice方法,Android bindservice方法返回false

我想从另一个类(BaseExpandableListAdapter)的活动中调用一个方法。活动中的方法启动服务并调用bindService(,,)方法。...但是,bindService方法总是返回false。我查了其他类似的帖子,但没有一个解决了我的问题。任何评论非常感谢。...Android bindservice方法返回false 这里是BaseExpendableListAdapter类中,我调用该方法的活动: class myExpandableListAdapter...,它工作得很好,但是当我在continue()方法中使用bindservice()方法时,绑定失败。...– +0 那么因为否则,我无法从其他活动中引用MyActivity中的继续方法。 – +1 首先,您不应该从其他活动中调用该方法,而是在引用该活动的适配器中,它是’_context’。

1.1K30

【EventBus】事件通信框架 ( 发送事件 | 根据事件类型获取订阅者 | 调用订阅方法 )

文章目录 一、根据事件类型获取订阅者 二、调用订阅方法 一、根据事件类型获取订阅者 ---- 接收到了 发布者 Publisher 发送给本消息中心 的 Event 消息事件对象 , 将该事件对象转发给相应接收该类型消息的...订阅者 ( 订阅对象 + 订阅方法 ) ; 通过事件类型到 Map<Class<?...( 订阅对象 + 订阅方法 ) * 通过事件类型到 * Map<Class<?...---- 通过反射调用订阅方法 ; 在 MySubscription 中封装了 订阅者对象 和 订阅方法 , 订阅方法中封装了 Method 方法 ; 直接调用 Method 对象的 invoke 方法..., 通过反射调用订阅方法 , 传入的第一个参数是 订阅者对象 , 即订阅方法所在的对象 , 传入的第二个参数是 订阅方法接收的事件参数对象 ; /** * 调用订阅者的订阅方法

50910

微信小程序对接在线客服系统,对接小程序订阅消息模板,小程序订阅方法以及后端发送订阅模板消息的方法

但是,使用webview嵌入的形式,当用户离开页面以后,就收不到客服回复的消息了 所以,我们需要当用户离开聊天页面后,客服回复消息,使用小程序的订阅模板来进行通知。...我们前往小程序后台,去开启一下订阅消息,并且选用一个模板。...咨询回复通知”  配置一下字段,我们就需要三个字段就可以了,分别是,“回复内容”  “回复时间”  “回复者” 这样会得到模板ID,后面我们会通过这个模板ID进行发送 现在,我们去小程序端,增加一下订阅事件...// 'accept'表示用户同意订阅该条id对应的模板消息 // 'reject'表示用户拒绝订阅该条id对应的模板消息 // 'ban'表示已被后台封禁...= nil { log.Println("发送小程序订阅消息失败:", err) } 现在其实已经就能发送模板消息了 稍后,会开发客服系统后台,详细配置硬编码的字段。

52910

关于Power BI订阅功能的使用方法

三、Power BI订阅方法 1.打开需要订阅的PBI报表,单击上方菜单栏的订阅报表菜单 2.如果以前没有创建订阅,则此处需单击“创建订阅”,如果以前有订阅,可以对现有订阅进行编辑或删除 3.设置订阅的相关信息...四、开启邮箱的自动转发功能 Office365邮箱自动转发规则设置后,需要开启邮箱的自动转发功能策略,开启方法如下: 1.打开Microsoft35的安全模块 2.在office365安全中心找到策略和规则.../威胁策略/反垃圾邮件策略 3.添加保护设置,自动转发选项设置为“打开启用转发” 4.保存后出现客户端错误,则需要开启管理员权限 5.开启管理员权限的方法如下: 5.1用管理员权限打开powershell...注意事项: 在订阅的时候,如果订阅选项中不能添加PDF附件时,则需要新建一个工作区,并在工作区设置中,将工作区设置为“每用户高级版”(PPU),再次订阅该工作区内的报表,可以实现PDF作为邮件附件订阅。...必须是新发布到该工作区的报表才可以订阅为PDF附件的邮件(别的工作区复制过来的报表不能订阅) 总结 本文通过总结Power BI订阅功能的使用方法,为企业更高效便捷地进行沟通交流与分享提供帮助,对企业整体的运行效率进行了提升

52110
领券