问题标签 [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 回答
636 浏览

android - 使用 EventBus onClick 将 ListView 中项目的 Uri 发送到 Fragment

有没有办法在不通过 startActivity 发送意图的情况下为 listView 项注册 onClick 事件,而只需使用 EventBus 发送和事件。

分段:

事件类:

我敢肯定这里有很多问题,但我想至少了解我正在尝试做的事情是否可行,也许是指向一些相关示例或阅读的指针。在尝试使用 EventBus 之前,我可能应该更熟悉常规意图,但如果我可以先学习更灵活的选项,那就太好了。

0 投票
1 回答
1801 浏览

android - eventbus是如何在类被调用之前注册onevent方法的呢?

listItemFragment 向 ItemDetailFragment 发布事件以刷新 UI。但是以前从未使用过 ItemDetailFragment,因此从未调用过 ItemDetailFragment 中的 register() 方法。所以我想知道listItemFragment中发布的事件是如何知道ItemDetailFragment中的onevent方法的。这是源代码:

0 投票
0 回答
5480 浏览

android - 没有订阅者注册事件类错误 - Greenrobot

我收到了这个警告,并且写在我的事件订阅者中的代码并不总是被触发..它是非常随机的。

有人可以帮我弄这个吗。谢谢。

在此处输入图像描述

我有这个发布事件的课程......
EventListAdapter

Event class

the subscriber

不知道为什么我会收到这个警告......
而且我在切换事件中编写的代码也不是每次都执行......
它被遗漏了,并且事件被调用是非常随机的......

0 投票
1 回答
229 浏览

android - 如果发生 configChanges 或后台活动,EventBus.post() 会传递事件吗?

我在这里阅读了文档,但是如果 configChanges 发生在活动中或者如果活动在后台使用EventBus.getDefault().post(). 现在我像这样使用 EventBus:

我想避免使用这个样板代码。

0 投票
1 回答
698 浏览

java - 从 AbstractThreadedSyncAdapter 到 Activity 的 EventBus Post 或 postSticky

我已经用谷歌搜索了一段时间,阅读了文档,但我找不到任何答案。我的[简化]场景是:

用户首先登录到应用程序,同步请求被触发,我的 onPerformSync 被调用。我正在尝试通过 EventBus 从 AbstractThreadedSyncAdapter 将事件发布到我的 MainActivity。同步完成后,我发布了一个事件,应该在 MainActivity 上调用该事件以将其全部完成,但它不起作用。我的代码:

AbstractThreadedSyncAdapter

onPerformSync:

和 MainActivity:

甚至可以从 syncService 发布事件吗?如果不是,这个问题的最佳解决方案是什么?

谢谢 !

0 投票
1 回答
1110 浏览

android - android ui 组件的事件总线和生命周期

我一直在寻找完美的 android 应用程序架构,并阅读了一些关于这个主题的精彩博文。

1) http://www.mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html

2) http://birbit.com/a-recipe-for-writing-responsive-rest-clients-on-android/

两篇文章都描述了如何利用事件总线在 android 组件(活动、片段、服务)之间进行通信。

一个,但非常重要的话题没有涉及。如何处理暂停时发布到 UI 组件的事件。

例如:服务在完成将数据下载到活动时发布事件。此时活动已暂停。由于事件总线在 onPause() 中被注销,我们完全失去了这个事件。

greendao 的 EvenBus 提供粘性事件。但如果不删除它们可能会导致内存泄漏。

Square 的 Otto 引入了“Producer”模式,可以用来代替粘性事件。

如果不手动删除粘性事件,第一个解决方案可能会导致内存泄漏。

第二个要求将数据保存在某个地方,直到 Producer 方法将其返回给订阅者。这个解决方案似乎更正确,但需要编写更多代码。

任何人都可以分享如何解决这种极端情况的想法吗?任何干净的解决方案?

0 投票
1 回答
2205 浏览

android - 具有线程安全的事件总线的最佳实践

我的应用程序具有用户交互活动和后台服务,这是修改数据模型的唯一地方。后台服务侦听用户所做的操作以及来自网络的传入消息。因此可能会出现并发问题,我试图通过使用处理程序来防止这些问题。对于事件层,我使用 greenrobots Eventbus。

这一切都很好,但我想知道是否有更智能/更快/更少代码扩展(因此更不容易出错)的方式来处理这个用例?

更加具体:

  • 有没有办法确保在没有处理程序的情况下串行执行 onEvent 方法?
  • 对于每个可能的事件,是否有替代方法?
  • 我在这里做的事情有更好的模式吗?

这是我的方法:

在 oncreate 方法中,我确实注册了服务(如果有活动,我在 onstart 中执行此操作)

在 onDestroy 中,我再次取消注册

每当我对传入事件做出反应时,我都希望确保串行执行,因为可能会出现并发问题,因为存在来自用户交互以及来自其他用户通过网络的传入事件。所以我决定和一个处理程序一起工作:

对于每个感兴趣的事件,我确实有一个 onEvent 方法,它只是将事件传递给处理程序以确保通过一个小的“passToHandler”辅助函数串行执行

“过程..”方法是“数据魔法”发生的地方,不应该与我的问题相关。

当然,对于每个可能的事件,我确实创建了一个通常非常苗条的类,如下所示:

0 投票
1 回答
178 浏览

android - 用于与服务器通信的 Android 服务

我需要该服务与服务器建立稳定的连接。
活动和服务应该有双向通信。

这是我知道的选项

  • 使用意图服务
  • 扩展 Service 类(使其在不同的进程中运行)并使用 Messaging 进行通信

我的想法:

  • Intent 服务很好,它们在自己的线程中运行,但在任务完成时会停止。我不想要那个。例如,如果由于某种原因连接被中断,它应该尝试重新连接,而不是退出服务

  • 扩展服务类是有道理的。我之前参与过一个使用 Messaging 与服务通信的项目,这里的问题是随着项目的增长,管理通信变得很困难。

我正在寻找一种方法,其中服务在不同的进程或线程中运行,如果因任何原因终止(例如 START_STICKY)应该重新启动。

如果通信容易并且可以使用OttoEventBus之类的东西,那就太好了。

编辑:所以问题是,实现它的理想方法是什么,这使我免于处理消息并提供 STICKY 服务。

0 投票
4 回答
9414 浏览

android - 未收到 Greenrobot EventBus 事件

我正在使用 Greenrobot EventBus 将事件从一个活动传递到另一个活动。

流程是这样的:Activity1 开始 -> 扫描条形码 -> Activity2 开始 -> 接受或拒绝响应并向 Activity1 发送事件。

因此 Activity2 通过执行以下操作向 Activity1 发送一个新事件:

在 Activity1 中,我注册了事件总线,并且我还拥有用于接收事件的公共 onEvent(MyEvent myEvent) 方法。

问题是 onEvent 没有被触发。我查看了事件总线对象上可能存在问题(例如不同的实例或活动 1 和 2 中的某些东西),但它是同一个实例。

我不知道似乎是什么问题。如果有人可以看看并告诉我我做错了什么,我将不胜感激。

谢谢!

0 投票
1 回答
756 浏览

java - 使用 Rxjava 作为 EventBus 时如何从事件中获取参数

我在服务中接受来自网络的 json。

它通知 RxBus 事件:

在订阅方面,我如何使用“message1”参数,这是我需要操作的 json。如何从事件中提取和使用 json: