问题标签 [greenrobot-eventbus]

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 投票
1 回答
495 浏览

android - EventBus 在我注册时抛出 No public method onEvent(Message message)

我有这个非常直接的声明

我不知道为什么它仍然抛出

没有称为 onEvent 的公共方法

如果我错过了什么,请告诉我。我的片段也扩展了一个 AbstractClass

0 投票
0 回答
110 浏览

java - Android:从服务更新 GUI

我想要的是?

我期待在 android 中使用服务,我想更新 GUI 并使用服务中的数据库。我开始了解名为 的库EVENTBUS by greenrobot,但我不知道它是否可以安全使用。

为什么我想要?

实际上,我想为我的 android 编写代码,以便有一个在后台运行的服务执行所有与数据相关的工作,它只负责后台HTTP callsDatabase update后台,所有片段只负责服务的事件和它subscribes的服务publish当一些事件发生时。我想以Pub-Sub某种方式编写我的代码。

通过这样做,我可以good separation between logic and GUI完成相关的工作。此外,我可以通过仅在片段re-usability of the code 中定义和 GUI 中的所有数据相关工作来实现。services

这就是为什么我正在寻找一些pub-sub library我们可以从服务中使用它的好东西。

0 投票
1 回答
739 浏览

android - Android EventBus - hasSubscriberForEvent() 总是返回 false

据我了解,hasSubscriberForEvent(Class<?> eventClass)如果我正在侦听 this 上的任何 Event,EventBus 的方法应该返回 true eventClass。但它总是返回假,我不知道为什么。

在我的片段中,我注册和注销 EventBus,并声明监听 Post 的方法:

在我的服务中,我需要检查这个 Fragment 是否可见,我假设的一种方法是使用EventBus.getDefault().hasSubscriberForEvent(MyFragment.class). 我预计如果 EventBus 会看到MyFragment已注册的任何内容将返回 true,否则将返回 false。

我错过了什么,或者hasSubscriberForEvent()没有这样的行为吗?

注意:如果我确实EventBus.getDefault().post(new MyDummyObject());触发了事件,那么我假设 EventBus 正在成功注册和注销。

0 投票
3 回答
1233 浏览

java - RxJava 和 GreenRobot EventBus

我正在编写一个应用程序,它接收从 JNI 到 Java 类中的静态方法的调用。

举例

我想听这样的事件作为我的 Observable 对象的一部分。

有什么见解吗?

谢谢。

0 投票
1 回答
331 浏览

android - EventBus:如何跟踪?

我正在使用事件总线(greenrobot)在片段和活动之间进行通信。效果很好。

但有一件事我想知道:人们如何跟踪这些被解雇的地方?

示例:当我在onEvent()某处看到一个方法时,我怎样才能找到它被触发的地方?

0 投票
0 回答
98 浏览

android - 关闭进度对话框在 Genymotion 模拟器中有效,但在真实设备上无效

在执行某些后台操作时,我正在显示一个进度对话框。我正在使用 Eventbus 发回显示对话框的片段。我正在使用一个变量来保存对对话框的引用。当我使用 Genymotion 模拟器测试这个程序时,它运行良好。当我在真实设备上测试它时,变量变为空。

首先,用户会看到一个对话框,他们在其中输入一个 4 位代码。当他们单击“确定”时,将处理 4 位代码(异步)并显示 ProgressDialog(mAuthorizeProgress)。

用户单击确定后,将显示进度对话框:

这是显示进度对话框的函数:

这是解除代码的片段:

这是来自真实设备的日志:

这是来自模拟器的日志:

当然,进度对话框在模拟器中被关闭,但在真实设备上却没有。

我完全不知所措。非常感谢有关如何调试此问题的任何建议。

0 投票
2 回答
590 浏览

android - 如何防止 EventBus 将事件传递给错误的 Activity

假设我们的应用程序有 3 个活动:A、B 和 C。并且只有 A 注册到EventBusonStart()并在此处取消注册,并且它有一个事件处理程序方法:在接收到事件 X 时将用户导航到 C。onStop()onEvent(X event){...}

但请看下面不愉快的场景:

  1. 用户启动 A。
  2. 用户在 A 上启动后台操作。
  3. 用户通过点击 A 上的按钮导航到 B,而无需等待后台操作完成。A 将从 EventBus 中注销。
  4. 用户导航回 A。A 将再次注册到 EventBus。
  5. 在用户导航到 B 之前请求的后台操作完成,从后台触发事件 X。
  6. 事件 X 被传递给 A,事件处理程序 ( onEvent(X event){...}) 立即将用户导航到活动 C。

这是一种奇怪的用户体验,我们如何避免再次注册时将事件传递给A?

一种解决方案是在 处取消正在进行的后台操作onStop(),以使该事件永远不会被触发;但是,取消后台操作可能并不总是可行的。

我正在使用 GreenRobot 的 EventBus。

0 投票
2 回答
719 浏览

android-annotations - AndroidAnnotations - Create Singleton EBean without adding the dependency

I am using androidannotations in an Android project and I have an EBean defined as:

This bean is created whenever it is first required, that is, whenever I have:

in some class. I am also using EventBus in this project, and a function in MyBean is a @Subscriber. This function is not called (when an Event is posted) because an instance of MyBean does not exist (since I don't have the dependency anywhere). How can I create an instance of MyBean without specifically adding the dependency anywhere?

My temporary solution is to simply define the bean in my Application class.

0 投票
4 回答
6726 浏览

android - Greenrobot EventBus 和 Guava 的 EventBus 的区别

我经常使用来自 greenrobot 的 EventBus

https://github.com/greenrobot/EventBus

但我刚刚意识到 Guava 有自己的 EventBus

com.google.common.eventbus.EventBus

有人知道是否有很大差异吗?

0 投票
1 回答
4981 浏览

java - GreenRobot 的 eventbus 看不到注解,“没有公共方法”

所以,我发现了 Green Robots 的 eventbus 模块。按照此页面上的说明尝试使其正常工作: http: //greenrobot.org/eventbus/documentation/how-to-get-started/

看起来很简单。

我输入了适当的代码,但是在设备上运行时出现崩溃:

我班级的前几行如下所示:

它/似乎/注释在那里。编译在没有任何警告的情况下发生。我正在使用 gradle 文件中指定的版本 3.0.0 ...

那么有什么问题呢?(RTFM 欣然接受,只要说出相关文章的 FM 在哪里。)

谢谢!

-肯