![]() |
1
4
代替接口,我们可以简单地使用EventBus。我们可以将消息从一个类传递到一个或多个类。EventBus分3个步骤
定义事件:
注册和注销您的订户。例如,在Android上,活动和片段通常应根据其生命周期进行注册:
注销
活动后:
|
![]() |
2
3
您可以将EventBus视为一个轻量级通信通道,用于在活动、服务、片段或它们之间传递数据。 将EventBus视为 应用程序中的底层 其独立于任何活动或服务或片段及其生命周期。
EventBus工作的主要概念是: 订阅活动 在活动、片段、服务或任何类似组件中,只要事件总线 类型的特定事件 你订阅了 通知您订阅的方法 在该组件中,您可以根据收到的事件执行任何任务。
触发事件很简单,您可以从应用程序的任何区域进行触发,只需
传递特定事件
(
这基本上是一个POJO类
我建议你试一试 事件总线3 来自GreenRobot,并在这里查看他们的文档,将他们的库合并到您的代码中。我一直在使用,没有任何问题。 希望这有帮助。 |
![]() |
3
2
大多数情况下,你不应该。一般来说,当你的程序架构错误,并且由于你的应用程序是如何封装的,以及什么对象在什么级别上是已知的,所以无法轻松地将数据从一个点传递到另一个点时,这是一种黑客行为。它可能导致真正的意大利面代码,很难确定事件发生时实际调用什么代码。您不应该围绕事件总线编写代码,如果您不能以正确的方式进行重构,它应该是最后的手段。 |
![]() |
4
1
事件的优点之一是,您可以将对象传递到“某处”,而不需要知道它在哪里被拾取。这使得将活动或片段状态推送到控制器类,然后使用从该控制器发送回活动或片段的事件变得容易。 由于事件,控制器不需要知道接收端是活动还是片段。这使得从一个切换到另一个非常容易。另一方面,这也使得将控制器放置在其他地方变得容易。比如,首先将其作为应用程序类中的实例,然后将其移动到服务中。 我写了一篇文章,其中有一个非常具体的例子,说明如何使用事件来处理如上所述的Android生命周期: https://medium.com/@JuliusHuijnk/beating-the-android-life-cycle-d00a2f3ed88 |
![]() |
taha khamis · 在一个数字中组合元素的省道 2 年前 |
![]() |
Tyler · 如何引用Android Fragment中创建的地图 2 年前 |
![]() |
Frederik Roland · Gradle文件夹在打开时填充 2 年前 |
![]() |
leah · 如何将图像下的文本居中 2 年前 |