EventBus是一个Android事件发布/订阅轻量级框架
简化了应用程序内各组件间、组件与后台线程间的通信
使用场景:应用程序内各组件间、组件(fragment, Activity, Service等)与后台线程间的通信。
大白话讲解(略抽象):这个框架相当于 我们 与 杂志社 之间的关系 ,当我们向杂志社订阅了一份杂志,那它就会在特定的是时间送到你手里,当然如果你不想要了也可以退订。还有一个简单的概念 就是:杂志社不可能只想我们服务 当别人也订阅了相同的杂志 那它也得给别人送。你也可以当VIP 让它只为你服务。
依赖文件 :
implementation'org.greenrobot:eventbus:3.2.0'
开始应用:
1、 订阅杂志
订阅2 、接收消息 === 相当于 动画里 房子外的邮箱
邮箱注解介绍:★★★★★★★重要程度 满颗星
@Subscribe( threadMode = ThreadMode.BACKGROUND,sticky =true )
threadMode = ThreadMode.BACKGROUND : 事件主线程里发出来 那么该事件就会在新的线程里运行。 如果是子线 则事件直接在发布者的线程中执行。 这个线程模式下 禁止更新UI。
threadMode = MAIN:事件的处理会在主线程中执行,常用于更新UI。
threadMode = POSTING(默认)该事件在哪个线程发布出来的,事件的处理 就会在哪个线程中运行 尽量不要做耗时操作。
threadMode = ASYNC 这个最简单了 不管事件从哪个线程中发出来 它都开启子线程运行 禁止更新U。
sticky = true 粘性事件 :大白话:邮局派人给你去送邮件 如果你不在家 他放在你的邮箱里 保证你想要就能拿到 可以先不注册。
sticky = false 普通事件 :大白话:邮局派人给你去送邮件 如果你不在家 他就给你丢掉了 让你想要也要不到 必须注册。
接收消息的方法 就可以从参数event里get信息方法 使用public void 方法名随意 参数 最好使用JavaBean 因为要传递信息
3 、退订杂志
不需要了 就退掉 防止资源浪费
以上是订阅EventBus的简单逻辑
发送杂志
EventBus.getDefault().post( new Event() );
放张图片看的清楚
网友评论