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

android - 在 ViewPager 中使用 EventBus 时获取混合数据

当成功发出 http 请求时,我正在使用EventBus将结果发布到片段。当存在一个订阅者和一个发布者关系时,这很有效。

但是,在我的应用程序中,我有一个使用ViewPager选项卡的屏幕。而且由于页面非常相似,我使用相同的片段,每个选项卡对应不同的参数,来下载数据。

Fragment 看起来是这样的:

您可能已经猜到收到数据时会发生什么。

由于有许多具有相同签名的订阅者,等待 a ServerResponse,因此响应不会转到相应的选项卡,但会在每个片段中接收并显示相同的响应,并且数据会混合。

你知道如何解决这个问题吗?

0 投票
1 回答
11622 浏览

android - EventBus, register and registerSticky method

I use greenrobot EventBus library to send data between two fragments in my android app and I want to know what is the diffeence between register(Object b) method and registerSticky(Object object) method?

0 投票
5 回答
8782 浏览

android - 多次收到事件 - Greenrobot eventbus

我在我的应用程序中使用了 Greenrobot 的 EventBus,它运行良好。

但是,如果我按下后退按钮关闭应用程序,然后立即重新启动应用程序,我似乎收到了两次事件。如果我再这样做,我将收到三遍,依此类推。

我正在检查日志和调试以查看我是否有任何类的多个实例,或者我是否正在注册多次,但我看不到任何额外的类并且使用 isRegistered 返回 false。

有任何想法吗?

谢谢

0 投票
3 回答
1079 浏览

android - Android 生命周期和事件总线问题

我在使用 android 生命周期和 Eventbus 时遇到了一些问题。 https://github.com/greenrobot/EventBus

目前,我正在 onCreate 生命周期回调中将活动注册到总线。

我也在 onStop 回调中取消注册它。然后我在 onRestart 上注册它。

当我从我的应用程序中点击主页按钮,然后重新启动应用程序时,它会记录 onRestart 正在被调用。但是,在此之后,当我尝试做某事时,它给了我:

01-24 05:23:44.504: D/Event(3134): 没有订阅者注册事件类 com.garrrila.iconolist.events.IconSelectorEvent。

这是怎么回事?

我的 onRestart 代码:

编辑****

原来我是个白痴。

在取消注册或注册之前没有打电话给超级,并且在意外之后做了。

0 投票
2 回答
1868 浏览

android - 如何在 Intent 服务中接收事件(Greenrobots 事件总线)

我正在尝试在IntentService. 我已经尝试捕捉事件onEvent()onEventBackgroundThread()但我没有收到事件。我知道如何在无法将事件发送到服务工作的活动和片段之间发送和接收事件。事件总线是否发布到服务?如果它确实在哪里订阅事件?我尝试在onHandleIntent(Intent intent)服务的构造函数中订阅。没运气。有人可以帮忙吗?

0 投票
1 回答
244 浏览

android - 通过 Greenrobot Eventbus 从后台线程与主线程通信

在我的应用程序中,我使用 SyncAdapter(AbstractThreadedSyncAdapter) 与服务器同步。基本上在后台服务中我将数据插入到 sql 表中,然后在完成时我想通知 UI 用新数据更新 ListView。对于这件事我尝试使用GreenRobot EventBus,但没有成功。

我的活动

将数据插入数据库后,我像这样调用 EventBus

在我显示 ListView 的片段中,我尝试像这样接收 EventBus:

0 投票
1 回答
612 浏览

android - 不同的sqlite数据库在android app中进行测试和实际使用

免责声明 - 我使用 GreenDAO ORM 从我的 android 应用程序中创建和管理 sqlite db。

对于我的 android 应用程序,在编写单元测试时,我希望告诉应用程序切换到使用与正常数据库不同的某个数据库,以确保测试不会污染真实的数据库。相应地,我使用了适当的函数来创建新的数据库并像这样切换到它

在我的应用程序 onCreate 和 setupDatabase 是这样的

FetchPersonsFromServer 的 onEvent 获取人员列表并使用 PersonDao 将他们保存到数据库。

现在,如果我从我的设备中清除所有应用程序数据并直接运行测试,则测试通过了。但是,如果我正常运行应用程序,然后运行测试,断言语句将失败

大小与默认 db 值相同。

我要疯了,试图找出原因。setupDatabase 中的日志语句显示正确的数据库名称正在显示,即freshdbinstall-db ...

android中不允许使用两个数据库吗?逻辑上应该没有问题吧?是GreenDao不允许吗?我是不是犯了一些基本错误...

请帮忙。


编辑:使用greenDao android ORM库创建超过1个* .db文件甚至模糊相关吗?

更新 1

我使用 adb shell、run-as cat /sdcard/debug/db 和 adb pull 在测试失败后查看默认数据库和新数据库

新数据库与预期的一样,没有 Person 条目,默认有 10 个条目。所以我想问题出在断言/查询调用上...似乎出于某种原因使用了默认数据库...查看存储库代码

根据这似乎会话没有被更新,前一个仍在使用

0 投票
2 回答
1634 浏览

android - 同一类的多个粘性对象?

我在 EventBus 中使用粘性事件将我的“选定”对象传递给即将到来的活动。detail 活动允许用户“选择”另一个对象来获取新列表。我想再次将具有相同对象类的另一个粘性事件发布到另一个列表活动中,但据我了解,以前的粘性将被覆盖。请参阅底部的示例插图。

解决此问题的推荐方法是什么?我需要在 EventBus 中拥有具有相同类的 n 嵌套粘性事件。

我真的很喜欢粘性对象,它消除了我手动连接 Android Parcelable 接口的需要,只是为了通过该Intent机制将对象从一个活动活动发送到另一个活动。即使在获得一个完全工作的 EventBus 之后,我也不想被迫去实现 Parcelable,因为我不能嵌套粘性对象!

我想到的一种方法是Item在 Singleton 的 ArrayList 中维护我自己的对象堆栈,在深入潜水时推送(在 startActivity 之前)并在退出时弹出(但在哪里?onDestroy不使用),但这种方法似乎非常脆弱大部头书。我需要一个强大的机制 - 这是我的应用程序的主要导航支点。

  • 项目列表,用户选择一个Item. Item我们在 Intent 中使用 this 和 startActivity 发布一个带有详细视图类的粘性事件。
  • 用户浏览详细信息并询问相关项目的列表。我们开始另一个显示列表的活动。
  • 用户选择一个Item. 我们在 Intent 中使用第二个 Item和 startActivity 发布一个带有详细视图类的粘性事件。第二个Item覆盖第一个Item,当用户想要向上导航返回堆栈时,它不再可供读取,而是读取创建的最后一个粘性项目。
0 投票
4 回答
15909 浏览

android - 使用 Otto 或 EventBus 之类的事件库是处理活动、片段和后台线程之间关系的推荐方法

在大多数情况下,在处理案件时

  • 用户线程 ( AsyncTask) 执行后台处理
  • 将计算结果传回ActivityFragment
  • Activity或者Fragment在用户线程完成其后台处理之前可能会发生重新创建

到目前为止,从许多可靠的来源,我可以看到推荐的方法是使用 Retained Fragment

来源

有时,我听说事件总线库对于处理活动、片段和后台线程之间的关系很有用。(请参考https://github.com/greenrobot/EventBus。它声明与活动、片段和后台线程一起表现良好

我遇到了一些非常流行的事件总线库

我想知道,在处理活动、片段和后台线程之间的关系时,事件总线方法与保留片段方法有何不同?

哪些方式是推荐的方式?

0 投票
1 回答
637 浏览

android - Android:当用户使用 eventBus 和 arrayadapter 向下滚动到底部时如何更新 ListView

最初,listView 有 20 个项目。当用户一直向下滚动到底部时,我需要用接下来的 20 个项目更新 listView。我正在使用 ArrayAdapter 来实现这一点。listView 中的项目来自 REST API,该 API 使用 EventBus(而不是 AsyncTask)将 startIndex 和限制作为参数。

我在 stackOverflow 中发现了类似的问题,但都在使用 AsyncTask。我不想使用 AsyncTask 并想使用 EventBus 来实现。