【问题标题】:Using otto for inter fragment communication - dependency injection confusing使用 otto 进行片段间通信 - 依赖注入令人困惑
【发布时间】:2013-07-30 21:29:22
【问题描述】:

我希望使用 Otto 进行片段间通信。如果我能提供帮助,我想使用最佳实践来做到这一点。 Github 上的 Otto 示例为 Bus 对象使用单例,但建议使用依赖注入。我对这两个概念都很陌生,尽管前者似乎更容易实现。尽管阅读了很多内容,但我正在努力了解如何在不费力的情况下完成后者。

有操作系统依赖注入器 dagger、guice 和其他一些,但对于像我这样的相对新手来说,它们似乎相当沉重。我想知道是否真的值得学习使用其中之一来获得看似微小的效率/代码常规性收益。更不用说他们会让我的项目膨胀。

使用 DI 实现 Otto 真的值得吗,而我只打算用它来替换一些接口和监听器?我只会在一些包含片段的活动中真正注册Bus

我不会进行单元测试,我可以忍受两个或三个活动(十个)与它们的片段紧密耦合。我看不出这样做有什么真正不好的地方,尽管这是不明智的做法,尤其是在以后切换到依赖注入相对容易的情况下。

最后,对于单独的活动片段组,我是否需要单独的 Bus 实例,其中仅在所述组内进行通信?我不清楚我是否需​​要这样做以获得最佳实践/效率或安全性?

【问题讨论】:

    标签: android dependency-injection android-fragments singleton otto


    【解决方案1】:

    我想你可能对此有不同的看法,但我自己使用过 Otto 和 dagger,并考虑到你提供的信息,我不认为实施 DI 的成本/收益(使用 dagger、guice 或其他东西)对你来说是值得的。这不是敲门砖——我喜欢它并且正在成功地使用它,但是有一个学习曲线,如果你不进行单元测试,我不知道它会给你带来多大的价值。

    如果稍后开始进行单元测试,那么添加 DI 将是一个不错的举措。

    关于单独的活动片段组的单独Bus 实例的问题,如果这些活动片段组没有发布和订阅相同类型的事件,则可能没有必要。也就是说,如果活动片段组 A 只关心 Foo 事件,而活动片段组 B 只关心 Bar 事件,那么我认为单个 Application-scope Bus 可能满足您的需求。

    【讨论】:

    • 我同意,尽管我认为在某个时候学习单元测试对我来说可能是一个想法,尤其是对于多活动应用程序而言。抛开学习方面的问题不谈,看来以后改用 Dagger 之类的东西还是比较容易的。
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多