2

我需要 OttoonCreate()注册onResume()

  1. 是否会导致同一订阅者多次注册?
  2. 因此,我是否必须调用 unregister 两次?

谢谢

4

2 回答 2

3

是否会导致同一订阅者多次注册?

不是。注册将失败,因为同一订阅者不得注册超过一次。

因此,我是否必须调用 unregister 两次?

此处应用相同的规则。注销只能发生一次。第二次调用register()unregister()将抛出 IllegalArgumentException。此行为可帮助您更早地发现代码中的问题。

我需要 Otto 在 onCreate() 和 onResume() 上注册

您应该重新考虑您决定注册两次或选择另一个库(例如TinyBus),因为 Otto 不允许您这样做。最佳做法是onStart()onStop().

于 2014-11-10T00:02:44.377 回答
1

我正计划创建一个将注册到 otto 总线的服务,所以我想知道是否应该在 onCreate() 或 onStartCommand() 中注册,这可能会被多次调用。如果我把它放在 onStartCommand() 方法中,它注册多次。

环顾四周,我发现了您的问题以及 Jake Wharton OTTO 的创建者/所有者在 google+ 上的这篇文章。从这听起来像是在一个对象上多次调用 register 被认为是一个应用程序错误。

这是我在 google + 上找到的评论

如果您在已注册的对象上调用 register ,它将崩溃。这是您的应用程序中的错误!

这是链接。

https://plus.google.com/communities/109244258569782858265/stream/67e6b6dd-0dcd-40c8-9823-47319d798c25

所以我认为你不能在你的 onCreate() 和 onResume() 方法中调用它。

于 2014-06-06T18:50:33.403 回答