草庐IT

java - 如何在 android 库项目中使用 dagger

我目前正在尝试将Dagger添加到我的android项目中。对于应用程序项目,我很容易明白如何构建ObjectGraph。但我不太清楚在我的android库项目中执行此操作的最佳方法是什么。我是否应该继续在应用程序的Application类中构建ObjectGraph并将OG传递给LibraryModule-将库的OG加到AppsOG中?还是应该在库中构建整个ObjectGraph?如果我需要通过ObjectGraph.inject(this)在库中注入(inject)一个类怎么办?在我的Apps项目中,我可以从Application类中获取OG。但是如何在图书馆处理这个问题?我应该为

java - 如何在 android 库项目中使用 dagger

我目前正在尝试将Dagger添加到我的android项目中。对于应用程序项目,我很容易明白如何构建ObjectGraph。但我不太清楚在我的android库项目中执行此操作的最佳方法是什么。我是否应该继续在应用程序的Application类中构建ObjectGraph并将OG传递给LibraryModule-将库的OG加到AppsOG中?还是应该在库中构建整个ObjectGraph?如果我需要通过ObjectGraph.inject(this)在库中注入(inject)一个类怎么办?在我的Apps项目中,我可以从Application类中获取OG。但是如何在图书馆处理这个问题?我应该为

java - Android 上的 Dagger 2 @Singleton 注释类未被注入(inject)

我目前正在尝试将Dagger2集成到Android应用程序中。我的项目设置如下:图书馆应用程序(取决于图书馆)在我的库项目中,我定义了一个类,稍后我会将其注入(inject)到库以及应用程序项目中需要它的其他类(Activity和常规类)中。@SingletonpublicclassMyManager{@InjectpublicMyManager(){//Dosomeinitializing}}现在-例如在我的Fragments或Activity或常规类中,我将按如下方式注入(inject)上述Singleton:publicclassSomeClass{@InjectMyManage

kotlin - 使用 Kotlin 进行单元测试的 Dagger 2

在KotlinBlog有说明如何使Dagger2与Kotlin一起工作。一切都像魅力一样。到目前为止……我只是无法让它在测试中工作。DaggerTestSomeComponent不是从TestSomeComponent:SomeComponent生成的。我尝试了各种组合。包括在测试中创建全新的组件。还是什么都没有。有什么解决方法吗?或者我可以提供一些其他详细信息吗? 最佳答案 确保将kaptAndroidTest'com.google.dagger:dagger-compiler:2.0'添加到您的依赖项中。

java - 使用(外部)DI 容器(Dagger 1)在 Android 中进行适当的依赖注入(inject)

我目前正在开发(实际上是构建)一个带有蓝牙连接和HTTP通信以及RESTful服务的Android应用程序。我碰巧遇到了一个名为Dagger的“依赖注入(inject)”框架,它对我来说是非常具有革命性的。然而,我开始更多地思考依赖注入(inject)的“真正精神”,并且遇到了更多解释这个概念并实际上建议使用“构造函数注入(inject)”并将其他(字段和setter注入(inject))标记为“反注入(inject)”的博客文章/意见-图案。”我确实理解了他们对通过DI框架进行字段和setter注入(inject)的担忧,因为前者没有明确揭示对象的依赖关系,而后者也没有严格地“要求”

android - 在 Dagger 2 中模拟注入(inject)的构造函数

我有一个具有依赖性的Activity:publicclassMyActivityextendsAppCompatActivity{@InjectDependency;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//inject}}publicclassDependency{@InjectpublicDependency(){//..}}由于Dependency有一个注入(inject)的构造函数,Dagger2不需要模块来知道如何实例化它,这非常方便。我的问题是:出于测试目的,我是否必须有一个提供Dependency

android - Dagger 2 - 如何只注入(inject)基本 Activity/fragment

我正在从许多来源研究Dagger2,例如:http://fernandocejas.com/2015/04/11/tasting-dagger-2-on-android/但我仍然没有找到问题的答案。我在处理相当复杂的应用程序,其中包含数十个fragment和几个我想在其中使用DI(dagger2)的Activity。对于所有这些fragment和Activity,我有一个BaseActivity和一个BaseFragment。但是,据我阅读和尝试,为了在我的MainActivity中使用@Inject,我必须在Component接口(interface)中指定它,并在onCreate方

android - PowerMock + Robolectric + Dagger2。第一部分

这个问题是从PowerMock+Robolectric+Dagger2的第一部分创建的所以我又有点。对不起。我测试了包含以下内容的自定义View类:安卓用户界面元素一些逻辑静态方法调用dagger2依赖项所以我使用下一个工具进行测试用于模拟UI元素的Robolectric用于逻辑测试的单元测试用于静态方法模拟的PowerMockRobolectric+PowerMock集成问题已知且解决方案已知-https://github.com/robolectric/robolectric/wiki/Using-PowerMock但是有了这个解决方案,dagger2依赖项就会失败。注意代码我的自

android - Dagger 2 inject() 包含一个依赖循环

我在尝试迁移到Dagger2的Dagger中有以下设置:publicclassOrigin{finalAa;publicOrigin(Aa){this.a=a;}}publicclassA{finalBb;@InjectpublicA(Bb){this.b=b;}}publicclassB{finalLazya;@InjectpublicB(Lazya){this.a=a;}}然后在我的模块上我有:@Provides@SingletonOriginprovidesOrigin(Aa){returnnewOrigin(a);}问题是,即使我使用的是Lazy,Dagger2也会给我以下编译

android - 如果我不在 Activity onDestroy() 中将 Dagger 2 Component 设置为 null 会怎样?

我看到如果有人在Activity中实例化Dagger2组件,那么它稍后会在onDestroy()方法中为空,如here所示.publicclassMyActivity{privateMyActivityComponentcomponent;//...publicvoidonCreate(){component=Dagger_MyActivityComponent.builder().myApplicationComponent(App.getComponent()).build().inject(this);//...}publicvoidonDestroy(){component=n