问题标签 [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.
android - EventBus 在我注册时抛出 No public method onEvent(Message message)
我有这个非常直接的声明
我不知道为什么它仍然抛出
没有称为 onEvent 的公共方法
如果我错过了什么,请告诉我。我的片段也扩展了一个 AbstractClass
java - Android:从服务更新 GUI
我想要的是?
我期待在 android 中使用服务,我想更新 GUI 并使用服务中的数据库。我开始了解名为 的库EVENTBUS by greenrobot
,但我不知道它是否可以安全使用。
为什么我想要?
实际上,我想为我的 android 编写代码,以便有一个在后台运行的服务执行所有与数据相关的工作,它只负责后台HTTP calls
和Database update
后台,所有片段只负责服务的事件和它subscribes
的服务publish
当一些事件发生时。我想以Pub-Sub
某种方式编写我的代码。
通过这样做,我可以good separation between logic and GUI
完成相关的工作。此外,我可以通过仅在片段re-usability of the code
中定义和 GUI 中的所有数据相关工作来实现。services
这就是为什么我正在寻找一些pub-sub library
我们可以从服务中使用它的好东西。
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 正在成功注册和注销。
java - RxJava 和 GreenRobot EventBus
我正在编写一个应用程序,它接收从 JNI 到 Java 类中的静态方法的调用。
举例
我想听这样的事件作为我的 Observable 对象的一部分。
有什么见解吗?
谢谢。
android - EventBus:如何跟踪?
我正在使用事件总线(greenrobot)在片段和活动之间进行通信。效果很好。
但有一件事我想知道:人们如何跟踪这些被解雇的地方?
示例:当我在onEvent()
某处看到一个方法时,我怎样才能找到它被触发的地方?
android - 关闭进度对话框在 Genymotion 模拟器中有效,但在真实设备上无效
在执行某些后台操作时,我正在显示一个进度对话框。我正在使用 Eventbus 发回显示对话框的片段。我正在使用一个变量来保存对对话框的引用。当我使用 Genymotion 模拟器测试这个程序时,它运行良好。当我在真实设备上测试它时,变量变为空。
首先,用户会看到一个对话框,他们在其中输入一个 4 位代码。当他们单击“确定”时,将处理 4 位代码(异步)并显示 ProgressDialog(mAuthorizeProgress)。
用户单击确定后,将显示进度对话框:
这是显示进度对话框的函数:
这是解除代码的片段:
这是来自真实设备的日志:
这是来自模拟器的日志:
当然,进度对话框在模拟器中被关闭,但在真实设备上却没有。
我完全不知所措。非常感谢有关如何调试此问题的任何建议。
android - 如何防止 EventBus 将事件传递给错误的 Activity
假设我们的应用程序有 3 个活动:A、B 和 C。并且只有 A 注册到EventBusonStart()
并在此处取消注册,并且它有一个事件处理程序方法:在接收到事件 X 时将用户导航到 C。onStop()
onEvent(X event){...}
但请看下面不愉快的场景:
- 用户启动 A。
- 用户在 A 上启动后台操作。
- 用户通过点击 A 上的按钮导航到 B,而无需等待后台操作完成。A 将从 EventBus 中注销。
- 用户导航回 A。A 将再次注册到 EventBus。
- 在用户导航到 B 之前请求的后台操作完成,从后台触发事件 X。
- 事件 X 被传递给 A,事件处理程序 (
onEvent(X event){...}
) 立即将用户导航到活动 C。
这是一种奇怪的用户体验,我们如何避免再次注册时将事件传递给A?
一种解决方案是在 处取消正在进行的后台操作onStop()
,以使该事件永远不会被触发;但是,取消后台操作可能并不总是可行的。
我正在使用 GreenRobot 的 EventBus。
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.
android - Greenrobot EventBus 和 Guava 的 EventBus 的区别
我经常使用来自 greenrobot 的 EventBus
https://github.com/greenrobot/EventBus
但我刚刚意识到 Guava 有自己的 EventBus
com.google.common.eventbus.EventBus
有人知道是否有很大差异吗?
java - GreenRobot 的 eventbus 看不到注解,“没有公共方法”
所以,我发现了 Green Robots 的 eventbus 模块。按照此页面上的说明尝试使其正常工作: http: //greenrobot.org/eventbus/documentation/how-to-get-started/
看起来很简单。
我输入了适当的代码,但是在设备上运行时出现崩溃:
我班级的前几行如下所示:
它/似乎/注释在那里。编译在没有任何警告的情况下发生。我正在使用 gradle 文件中指定的版本 3.0.0 ...
那么有什么问题呢?(RTFM 欣然接受,只要说出相关文章的 FM 在哪里。)
谢谢!
-肯