问题标签 [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.
java - Greenbot Eventbus 3.0:onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync有什么区别?
我对Greenrobot的 EventBus 3.0中的 、 和onEvent
的onEventMainThread
用法有点困惑onEventBackgroundThread
onEventAsync
从我在文档中看到的:
onEvent
与ThreadMode.POSTING
(默认)一起使用onEventMainThread
与ThreadMode.MAIN
onEventBackgroundThread
与ThreadMode.BackgroundThread
onEventAsync
与ThreadMode.ASYNC
但是在从后台线程发布事件的情况下:
具有与以下完全相同的行为:
和:
抛出CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
是因为线程与发布线程(我的测试中的背景线程)相同。
从 3.0 版开始,@Subscribe
注释是必需的,所以我不明白在这种情况下我应该使用onEvent
. 是否保留它们以促进从 EventBus 2 升级到 3?
android - 如何使用greenrobot事件总线将事件从Activity发送到服务?
简单的 EventBus.getDefault().post() 带来的异常不是主线程。如何使用greenrobot事件总线将事件从Activity发送到服务?
服务等级
是否可以使用 greenrobot 事件总线发送?
android - Greenrobot 的 Eventbus:调用异步任务作业的两个片段让 Eventbus 感到困惑
我目前正在研究Fragments
是在 with 下创建Activities
的FragmentPagerAdapter
。我使用 GreenRobot 的 EventBus 3.0 返回一些我从服务类创建的 AsyncTask。然而,由于这两个片段是一个接一个地创建的,事件总线的帖子粘性的返回使订阅的片段混淆了。我已经浏览了stackoverflow,做了其他人所做的(例如将eventBus寄存器放到onStart和OnStop等),但我仍然看不到类似的问题。希望您能够帮助我。谢谢!
这是我的两个片段:(我省略了一些不必要的代码)
1.状态片段
2. 状态服务——状态片段的服务类
3.图表片段
4. 海图服务
5.结果类
6.状态类
因此,每次创建片段时,它们都会调用其服务类,该服务类依次发布,List<Status>
并且List<Results>
几乎一个接一个地发布。因此,它在说
这是完整的堆栈跟踪:
你们知道我的代码有什么问题吗?谢谢。
android - Android事件总线:事件无需等待帖子即可触发
我的应用程序中有一个按钮,单击该按钮会启动自定义服务类。然后,当再次单击时,我停止服务并显示一个进度对话框。
那个onClick
按钮看起来像这样:
在onDestroy
我的服务方法中,我正在检查一些事情,如果检查通过,我使用事件总线将消息发送回片段,以便它可以关闭进度对话框:
我的DismissDialogEvent
课在这里:
在我的片段中,我正在这样做:
所以应该发生的是,当第二次单击按钮时,将显示一个进度对话框,服务将检查一些事情,然后将关闭消息发送回片段。片段将收到消息,然后关闭进度对话框
问题是进度对话框似乎立即被关闭(一旦创建),所以它根本不显示。这几乎就像它在继续关闭对话框之前没有等待关闭事件。我可以通过注释掉该dialog.dismiss()
行来确认对话框确实显示
我的代码哪里出错了?
java - 订阅的事件和多态性触发两次
我最近通过切换到 eventbus 更改了我的应用程序,以减少对应用程序其他部分的依赖。现在我看到一个奇怪的问题,我不知道它是否是绿色机器人事件总线的错误或预期功能。
假设我有一个事件 A 和事件 B,那么事件 B 扩展了 A,因为 A 是 A 类型的通用事件。我的助手类订阅了事件 A 和 B,我看到的是它触发 B,然后触发 A。除了检查它是否是通用订阅侦听器中的 instanceof 之外,有没有办法在保持我的多态性的同时防止这种情况发生?如果需要在多个类中处理,我将 A 事件用作类型的广播。
谢谢
android - 简单的 EventBus - 没有订阅者注册
我正在尝试为 Android 实现EventBus库的绝对基本实现。
我试图通过用户输入简单的内容,activity 1
然后我使用 eventbus 将整个对象发布到下一个活动而不是意图附加内容 - activity 2
。我完全遵循给定的指导方针:
第 1 部分:POJO
PART 2:第二个活动的订阅
第 3 部分:发布活动
我得到错误:
我错过了什么?
当我在同一个班级订阅时它正在工作。
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?
java - 使用订阅者索引后,GreenRobot EventBus、ClassNotFoundException 仍然存在
我在 4.4.2 设备上遇到了常见的“ClassNotFoundException” 问题EventBus,它甚至在常见问题解答中都有问题
我首先仔细检查了我没有使用任何不合适的生命周期方法,但我没有。然后我更新到 EventBus 3.0.0,并使用“订阅者索引”。但是错误仍然存在,我仍然可以在我的堆栈跟踪中看到构建器正在尝试使用反射性(findUsingReflectionInSingleClass
):
在Player Activity
:
也MyEventBusIndex
可用,所以我想我的构建文件很好。
如果您看到问题所在,请告诉我。
java - 签名 apk 中的 Eventbus 错误
我发布了一些事件,订阅的代码在调试 apk 上正常工作,但是当我用我的密钥库签署 apk 并安装应用程序时,相同的代码会崩溃。
但我的主要活动有定义了@Subscribe 的订阅者
我的活动中有此订阅者
我正在像这样注册和注销
android - Greenrobot EventBus 粘性事件顺序是否得到保证?
我开始使用EventBus 3.0.0。
我有 3 个粘性事件要从服务发送到活动:
- 行动开始
- 行动进度
- 动作完成
我正在听主线程上的事件:
服务按顺序发送事件:started-progressN-..-progressM-finished
订阅的Activity根据事件更新UI。
活动轮换后,我希望按照发送的顺序获得粘性事件,否则会破坏 ui(因为在开始时将进度设置为 0)。EventBus 是否保证事件顺序(假设我对所有这些事件使用相同的 EventBus、相同的接收器线程、相同的订阅者)?
根据我的测试,不能保证这是功能/问题,是吗?
旋转前:
旋转后(重新发送粘性事件):