问题标签 [greenrobot-eventbus-3.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4814 浏览

java - Greenbot Eventbus 3.0:onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync有什么区别?

我对Greenrobot的 EventBus 3.0中的 、 和onEventonEventMainThread用法有点困惑onEventBackgroundThreadonEventAsync

从我在文档中看到的:

  • onEventThreadMode.POSTING(默认)一起使用
  • onEventMainThreadThreadMode.MAIN
  • onEventBackgroundThreadThreadMode.BackgroundThread
  • onEventAsyncThreadMode.ASYNC

但是在从后台线程发布事件的情况下:

具有与以下完全相同的行为:

和:

抛出CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.是因为线程与发布线程(我的测试中的背景线程)相同。

从 3.0 版开始,@Subscribe注释是必需的,所以我不明白在这种情况下我应该使用onEvent. 是否保留它们以促进从 EventBus 2 升级到 3?

0 投票
1 回答
1539 浏览

android - 如何使用greenrobot事件总线将事件从Activity发送到服务?

简单的 EventBus.getDefault().post() 带来的异常不是主线程。如何使用greenrobot事件总线将事件从Activity发送到服务?

服务等级

是否可以使用 greenrobot 事件总线发送?

0 投票
1 回答
686 浏览

android - Greenrobot 的 Eventbus:调用异步任务作业的两个片段让 Eventbus 感到困惑

我目前正在研究Fragments是在 with 下创建ActivitiesFragmentPagerAdapter。我使用 GreenRobot 的 EventBus 3.0 返回一些我从服务类创建的 AsyncTask。然而,由于这两个片段是一个接一个地创建的,事件总线的帖子粘性的返回使订阅的片段混淆了。我已经浏览了stackoverflow,做了其他人所做的(例如将eventBus寄存器放到onStart和OnStop等),但我仍然看不到类似的问题。希望您能够帮助我。谢谢!

这是我的两个片段:(我省略了一些不必要的代码)

1.状态片段

2. 状态服务——状态片段的服务类

3.图表片段

4. 海图服务

5.结果类

6.状态类

因此,每次创建片段时,它们都会调用其服务类,该服务类依次发布,List<Status>并且List<Results>几乎一个接一个地发布。因此,它在说

这是完整的堆栈跟踪:

你们知道我的代码有什么问题吗?谢谢。

0 投票
1 回答
826 浏览

android - Android事件总线:事件无需等待帖子即可触发

我的应用程序中有一个按钮,单击该按钮会启动自定义服务类。然后,当再次单击时,我停止服务并显示一个进度对话框。

那个onClick按钮看起来像这样:

onDestroy我的服务方法中,我正在检查一些事情,如果检查通过,我使用事件总线将消息发送回片段,以便它可以关闭进度对话框:

我的DismissDialogEvent课在这里:

在我的片段中,我正在这样做:

所以应该发生的是,当第二次单击按钮时,将显示一个进度对话框,服务将检查一些事情,然后将关闭消息发送回片段。片段将收到消息,然后关闭进度对话框

问题是进度对话框似乎立即被关闭(一旦创建),所以它根本不显示。这几乎就像它在继续关闭对话框之前没有等待关闭事件。我可以通过注释掉该dialog.dismiss()行来确认对话框确实显示

我的代码哪里出错了?

0 投票
1 回答
192 浏览

java - 订阅的事件和多态性触发两次

我最近通过切换到 eventbus 更改了我的应用程序,以减少对应用程序其他部分的依赖。现在我看到一个奇怪的问题,我不知道它是否是绿色机器人事件总线的错误或预期功能。

假设我有一个事件 A 和事件 B,那么事件 B 扩展了 A,因为 A 是 A 类型的通用事件。我的助手类订阅了事件 A 和 B,我看到的是它触发 B,然后触发 A。除了检查它是否是通用订阅侦听器中的 instanceof 之外,有没有办法在保持我的多态性的同时防止这种情况发生?如果需要在多个类中处理,我将 A 事件用作类型的广播。

谢谢

0 投票
6 回答
15982 浏览

android - 简单的 EventBus - 没有订阅者注册

我正在尝试为 Android 实现EventBus库的绝对基本实现。

我试图通过用户输入简单的内容,activity 1然后我使用 eventbus 将整个对象发布到下一个活动而不是意图附加内容 - activity 2。我完全遵循给定的指导方针:

第 1 部分:POJO

PART 2:第二个活动的订阅

第 3 部分:发布活动

我得到错误:

我错过了什么?
当我在同一个班级订阅时它正在工作。

0 投票
1 回答
215 浏览

android - No subscribers for events posted from background service

I post EventBus.getDefault().post(new SendPlayer(player)); from a services, which is running in non main thread:

I expect to receive even in my fragment:

However, I get message:
D/EventBus: No subscribers registered for event class yarh.com.tryexo.player.SendPlayer.

Events are delivered only if I remove android:process=":player".

Is it a bug or I misunderstood flow of posting events between background thread and main thread?

0 投票
1 回答
1960 浏览

java - 使用订阅者索引后,GreenRobot EventBus、ClassNotFoundException 仍然存在

我在 4.4.2 设备上遇到了常见的“ClassNotFoundException” 问题EventBus,它甚至在常见问题解答中都有问题

我首先仔细检查了我没有使用任何不合适的生命周期方法,但我没有。然后我更新到 EventBus 3.0.0,并使用“订阅者索引”。但是错误仍然存​​在,我仍然可以在我的堆栈跟踪中看到构建器正在尝试使用反射性(findUsingReflectionInSingleClass):

Player Activity



MyEventBusIndex可用,所以我想我的构建文件很好。

如果您看到问题所在,请告诉我。

0 投票
1 回答
890 浏览

java - 签名 apk 中的 Eventbus 错误

我发布了一些事件,订阅的代码在调试 apk 上正常工作,但是当我用我的密钥库签署 apk 并安装应用程序时,相同的代码会崩溃。

但我的主要活动有定义了@Subscribe 的订阅者

我的活动中有此订阅者

我正在像这样注册和注销

0 投票
1 回答
1135 浏览

android - Greenrobot EventBus 粘性事件顺序是否得到保证?

我开始使用EventBus 3.0.0。

我有 3 个粘性事件要从服务发送到活动:

  1. 行动开始
  2. 行动进度
  3. 动作完成

我正在听主线程上的事件:

服务按顺序发送事件:started-progressN-..-progressM-finished订阅的Activity根据事件更新UI。

活动轮换后,我希望按照发送的顺序获得粘性事件,否则会破坏 ui(因为在开始时将进度设置为 0)。EventBus 是否保证事件顺序(假设我对所有这些事件使用相同的 EventBus、相同的接收器线程、相同的订阅者)?

根据我的测试,不能保证这是功能/问题,是吗?

旋转前:

旋转后(重新发送粘性事件):