问题标签 [otto]

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 投票
2 回答
4446 浏览

java - 使用 Otto 时订阅者不会被解雇

我正在 Android 上试用 Otto,我正在尝试从我的 Fragment 向 Activity 发回一条消息。这是我的代码的基础知识:

我的巴士供应商:

我的活动有以下代码:

这些是我的片段中的重要代码位:

我没有收到任何错误。但是当我从片段中单击我的按钮时,不会调用 onButtonChoicePicked 事件。

难道我做错了什么?我误解了奥托的工作原理吗?是不是 ButterKnife 和 Otto 的奇怪组合使它不起作用?

0 投票
1 回答
152 浏览

android - 具有长时间运行任务的活动

我正在开发一个 android 应用程序,它执行由用户调用或由警报安排的长时间运行的任务。

我在Activity -> Service -> AsyncTask 形式的调用中设计了它。

我使用 Otto 库将 UI 更新直接从 AsyncTask 带到 Activity。

我有两个问题:
1 是否有理由使用 Otto 从 AsyncTask -> Service 然后从 Service -> Activity 进行通信。我见过很多应用程序使用这种模式。

2 我应该什么时候在前台运行服务?不被低内存杀死的说法可以被滥用。我想做一个有意识的决定。我相信它应该在用户手动调用而不是被警报踢时在前台运行。

0 投票
2 回答
1941 浏览

android - Otto 从 Fragment 到 Activity 通信

过去几天我一直在和 Otto 一起玩,这真是太棒了。但是,我遇到了一个问题,我正在尝试从 Fragment 与 Activity 进行通信。为了简单起见,我有一个 Activity 来保存 Fragment,并且在 Fragment 中我有一个 Button,它只是发布一个事件。

在活动中,我有一个订阅方法。

这是活动

我正在使用 Dagger,所以我的 Otto Bus 是一个由 SimpleModule 文件注入的单例。

我一整天都在努力,但由于某种原因,从未调用过 Subscribe 方法。

编辑:我刚刚尝试使用Android Studio 的 Otto 插件,每当我点击 @Subscribe 或 bus.post(..) 时,它都会继续搜索但没有找到任何东西(到目前为止没有找到任何用法)。我想我在某个地方做错了什么。

0 投票
1 回答
664 浏览

android - 在 FragmentDialog 中使用订阅事件

我使用 FragmentDialog 订阅使用 otto 库的事件。

我在 OnResume 事件中注册 FragmentDialog 并在 onPause 方法中取消注册。

然后在活动中我发布活动

但我的 FragmentDialog 不处理此事件。

0 投票
3 回答
8850 浏览

android - 奥托与本地广播:

我是开源贡献 Square 对 Android 社​​区所做的贡献的忠实粉丝,并且正在研究他们的最新贡献 Otto(事件总线)

http://square.github.io/otto/

深入挖掘,我发现 Otto 使用反射并且没有有序广播(未使用的消息从一个接收器传递到下一个接收相同类型事件的接收器的模式) Otto 相信更多的是“一劳永逸”模型。

现在 androidLocalBroadcastManager在它的 v4 支持库中有 (LBM) 用于同样的目的,虽然它更笨重并且对传递的对象有更多的限制。但从好的方面来说,它确实支持有序广播,并且更类似于正常广播。

Otto 和 LBM 都在同一个进程空间内,所以就速度而言,我猜两者都是一样的。我能看到的唯一真正区别是 Otto 允许您定义自定义事件,并且您不必序列化/打包 Objects 。

因此,我真正的问题是,如果 LBM 做同样的事情,你什么时候会使用 Otto。

参考 :

http://nick.perfectedz.com/otto-event-system/

使用 Intent 或事件总线在同一个应用程序中进行通信

https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY

0 投票
1 回答
3498 浏览

android - 在 onDestroy 中注销监听器 - 有什么危害/它们会泄漏吗?

我试图了解等到onDestroy取消注册听众是否有任何潜在危害。我特别指的是取消订阅事件总线(otto),但相信答案适用于大多数listener pattern实现(SharedPreferenceListener、、引用等)LocationListenerstatic

我已经看到了这个问题的其他几个 答案,引用了“不保证调用 onDestroy”这个短语。完整的onDestroy 文档文本实际上是:

注意:不要指望这个方法被称为保存数据的地方!例如,如果一个活动正在内容提供者中编辑数据,那么这些编辑应该在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在这里。此方法通常用于释放资源,例如与活动关联的线程,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。在某些情况下,系统会简单地终止 Activity 的宿主进程,而不会在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。

我理解这意味着onDestroy不应将其用于保存数据,因为在应用程序进程被终止之前可能不会调用它(如生命周期图所示)。

简而言之,是否存在由于未调用 onDestroy 而导致注册为侦听器的 Activity 泄漏的情况?

0 投票
0 回答
165 浏览

dagger - 如何使用 Otto 和 Dagger 创建工作进程?

当某些事件发生时,我想做一些工作。

为了使用 Android SDK 解决这个问题,我可以创建 BroadcastReceiver 来启动 IntentService 来完成这项工作。

我不想使用 Android 类,而是使用普通的 Java 类来做同样的事情。

如何使用 Otto 和 Dagger 解决相同的问题?

0 投票
1 回答
548 浏览

java - 在片段之间使用 Otto 传递字符串

我正在尝试使用 Otto 在片段之间传递字符串值。它看起来像@Produce并且.post运作良好。但是@Subscribe不起作用...我已经BusProvider在两个片段上注册了。但它不起作用。我应该怎么做才能让它工作?

AppDrawerFragment.java https://gist.github.com/sukso96100/a636a7ead69839cfa5b6

WorkspaceFragment.java https://gist.github.com/sukso96100/5f4fc8d3f74997d830c1

BusProvider.java https://gist.github.com/sukso96100/733118a4c03bc5fc5d5f

AddAppShortcutToHomeEvent.java https://gist.github.com/sukso96100/a6c09f27ec6264d5d9c4</p>

0 投票
1 回答
1249 浏览

android - 奥托和凌空定位

我正在将 Volley 和 Otto 集成到一个项目中以处理所有服务调用,同时考虑改变方向。通过使用 Otto,我可以在方向更改时取消注册和重新注册总线,然后当 Volley 返回响应时,我可以将结果发回活动,这非常有效。但是我相信我有一个尚未处理的差距,也就是说,如果我在暂停时取消注册我的总线,然后在活动仍然被破坏时返回来自 volley 的响应,然后 volley 发布响应,(但没有活动会得到它),然后活动恢复,总线再次重新注册,并且由于广播已经发布,因此不会收到响应。

有没有办法解决这个问题?我的第一个想法是实现类似 Android 粘性广播的工作原理?还有其他更好的想法或想法吗?

0 投票
1 回答
1003 浏览

java - 如何有效地使用事件总线?

现在我正在探索一个 android 学习项目的一些选项。我正在尝试与我的 rails api(也是一个学习项目)进行交流。

在做了一些研究之后,我想我已经确定了一个使用改造和 otto 的方案。

我最终得到的是这个。当我想调用我的 Rails 服务器时(在这种情况下进行注册),我在活动中执行此操作。

然后在同一个活动中我有这个。

这里的问题是,就目前而言,每个 api 请求类型及其对应的响应类型都是唯一的事件类型,并且需要它自己的类,这看起来像是很多样板类型的代码。

例如,要处理登录和注销,我需要这两个类:

而且我认为大多数事件类几乎是相同的。

我在想我应该只有 2 个事件用于 api 调用,一个用于请求,一个用于响应,但是每个接收 api 响应事件的方法都需要检查它是否是对所需请求的响应。

这个选项的意思是这样的:

然后处理这样的响应:

也许有一种使用泛型的方法?

当有一组事件可以像这样组合在一起时,有人可以解释如何有效地使用事件总线吗?