栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Dagger 2-注入非Android类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dagger 2-注入非Android类

请不要仅仅

component.inject(myObject)
用于所有事情。始终喜欢使用构造函数注入或从模块中提供构造函数注入,您可以在其中执行其他设置步骤。
.inject(myObject)
适用于您无权访问构造函数的framework组件。

我最初的想法是创建各种UtilityComponent和ManagerCompoent,但是我不知道如何让它们与AppModuel或AppComponent中的任何东西一起使用。

您不需要为此单独的组件。见下文。

但是,由于我在Activity,Fragments和ViewModels之外使用这些类,所以我不能只注入它们。

这与注射无关。您在谈论范围,听起来您的实用程序是

@Singleton
。您
AppComponent
是有
@Singleton
作用域的组件,因此它也可以用于提供您的工具。

不过,我在那里我会需要一个实用工具类的情况下,依赖于

Application
,对于
context

如果它们是

@Singleton
可以访问您的应用程序的组件的一部分,则也可以在其他任何地方提供它们。无需更多组件或任何其他东西。只需声明您的依赖项,不要想太多。


只需声明您的util,用批注并用

@Singleton
标记构造函数,即可
@Inject
进行构造函数注入。
@Singleton
确保您将提供它,
AppComponent
并且可以访问
Application
它所依赖的对象。

@Singleton public class MyUtil {  private Application application;  @Inject public MyUtil(Application application) {    this.application = application;  }}

然后,您可以将其注入到Activity,Fragments甚至其他工具中。

@Singleton public class MyUtilWrapper {  private MyUtil myUtil;  @Inject public MyUtilWrapper(MyUtil myUtil) {    this.myUtil = myUtil;  }}

您可以将其中之一或两者都注入您的活动或片段中…

@Inject MyUtil myUtil;@Inject MyUtilWrapper myUtilWrapper;void onCreate(..) {  AndroidInjection.inject(this);}

不会 需要任何模块,提供了一些方法,或组件,以提供简单的类。只要确保添加正确的范围即可!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号