【问题标题】:What is the difference between Binding Views and Injecting Views?绑定视图和注入视图有什么区别?
【发布时间】:2017-08-04 18:47:52
【问题描述】:

我正在学习 ButterKnife 和 dagger,并开始知道 Butterknife 仅有助于避免样板代码(绑定视图)并且它并没有真正注入。在这种情况下,匕首恭维 Butterknife,因为它注入了代码。现在绑定视图和注入视图有什么区别?

【问题讨论】:

    标签: android performance dagger android-annotations butterknife


    【解决方案1】:

    Butterknife - 绑定视图:它将视图从 XML 布局绑定到 Java 成员变量。因此您不必手动调用findViewById 来绑定视图。

    Dagger - 依赖注入库,注入依赖:

    依赖注入,简单来说,就是将依赖传递(注入)到任何类,而不是在类本身内部创建依赖。

    假设您有一个名为 ClassA 的类,它需要一个 ClassB 的实例。一种方法是您可以在 Class A 本身内创建 ClassB 的实例。但是在依赖注入中,我们在外部创建 ClassB 实例,并通过其构造函数或 setter 方法将其传递给 ClassA。

    依赖注入可以在没有任何框架的情况下完成,但是如果你有一个大型项目并且它有很多复杂的依赖项,它会变得很丑。 Dagger 是一个 Android 框架,它有助于以更清洁的方式进行依赖注入。

    【讨论】:

    • 有什么叫做“视图注入”的东西吗?或者“视图注入”和“依赖注入”是一样的吗?
    • 我想,“视图注入”只是意味着将视图从 xml 绑定到 java。在这里查看:github.com/JakeWharton/kotterknife
    • 依赖注入是一种编程设计模式/概念,使用它我们可以注入任何依赖,包括视图依赖,到任何其他类。
    • "如果你使用 Dagger 来尝试注入视图,你将会有一个非常糟糕的时间 :) 尝试将 Butter Knife 视为绑定视图而不是注入的一种手段。我只称它为注入,因为所有 RoboGuice 转换者都在抱怨 Dagger 缺少“视图注入”。这根本不是真正的注入。就像答案提到的那样,这只是一种减少样板的方法。在引擎盖下,它只是像你一样调用 findViewById!这是匕首和黄油刀的开发者杰克沃顿的评论。现在他将注入和绑定作为两个不同的词使用
    • 你可以在链接上看到上面的评论:- stackoverflow.com/questions/20821148/…
    【解决方案2】:

    Dagger 依赖注入'构造应用程序类的实例并满足它们的依赖关系'。它构建实例的方式基于 dagger 提供和模块中定义的规则集。

    Butterknife 使用注解处理来注入视图。它具有简化按 ID 等查找视图的方法。

    ButterKnife

    Dagger 2

    【讨论】:

    • 它没有回答我的问题“绑定视图和注入视图有什么区别?”
    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2010-09-10
    • 1970-01-01
    相关资源
    最近更新 更多