欢迎光临散文网 会员登陆 & 注册

观察者模式之EventBus

2023-07-10 12:24 作者:便宜酒  | 我要投稿

基本要素:被观察者Subject要有notify方法,用于遍历观察者Observer,并调用观察者的update方法。观察者要重写update方法。

说明:虽然Java中已经提供了Observer和Observable这两个接口,但是它们并不是最好的选择。因为它们存在一些缺陷,比如Observable是一个类而不是接口,从而限制了被观察者对象的继承层次;同时,Observer接口只提供了一个update()方法,不能够满足复杂的业务需求。因此,在实际开发中,我们可以自己定义Subject和Observer接口。

【EventBus】

demo介绍: 两个页面之间使用eventbus传递信息,第一个页面作为发布者将一些用于ai画图的词语,发送给第二个作图页面,也就是观察者,进行作图

发布者

订阅者

基本步骤:

1.构建事件类

事件很简单,就是ai画图要用的描述词。右边是02。


2.在观察者中注册register和解除绑定

注册

解绑

3.在观察者中使用@Subscribe(threadMode  = )订阅事件

eventbus的线程介绍:

POSTING: 默认模式

表示发送事件 post() 发生在哪个线程,接收事件就发生在哪个线程环境中。

MAIN / MAIN_ODERED: 主线程接收事件

表示无论事件在什么线程环境发布 post(),事件的接收总是在主线程环境执行。

 BACKGROUND:

不管post事件发生在那个线程环境, 事件接收始终在一个子线程中执行。

 ASYNC:

不管post事件处于哪种线程环境,事件接收处理总是在子线程。

4.被观察者使用EventBus的post方法发送事件。

EventBus缺点

1、使用的时候有定义很多event类
2、event在注册的时候会调用反射去遍历注册对象的方法在其中找出带有@subscriber标签的方法,性能不高。
3、需要自己注册和反注册,如果忘了反注册就会导致内存泄漏


观察者模式之EventBus的评论 (共 条)

分享到微博请遵守国家法律