草庐IT

AndroidAnnotations 和 Dagger 2

全部标签

java - Dagger 2 "Dagger"前缀组件无法编译?自动生成类

我正在尝试在Android上使用Dagger2。我以前让它工作,我有一个appModule将依赖项注入(inject)应用程序中的特定类。我的问题是我收到错误Error:(14,55)error:cannotfindsymbolclassDaggerAppComponent正在尝试导入。这是一个自动生成的类下面是我的build.gradle文件中我的Dagger特定依赖项compile'com.google.dagger:dagger-compiler:2.0.2'compile'com.google.dagger:dagger:2.0.2'provided'javax.annotat

android - Dagger2 - 如何在运行时有条件地选择模块

我有一个大型Android应用程序,需要根据操作系统版本、制造商和许多其他内容运行不同的代码。但是,此应用程序需要是单个APK。它需要在运行时足够聪明才能确定要使用的代码。到目前为止,我们一直在使用Guice,但性能问题导致我们考虑迁移到Dagger。但是,我一直无法确定我们是否可以实现相同的用例。主要目标是让我们在启动时运行一些代码以提供兼容模块的列表。然后将此列表传递给Dagger以连接所有内容。这是我们要迁移的Guice当前实现的一些伪代码importcom.google.inject.AbstractModule;@Feature("Wifi")publicclassWifiD

android - Dagger 2 : Error when two components has same inject method signature

我有这个组件:@Singleton@Component(modules=OauthModule.class)publicinterfaceOauthComponent{voidinject(LoginActivitya);}和模块:@ModulepublicclassOauthModule{@Provides@SingletonOauth2ServiceprovideOauth2Service(){returnnewOauth2StaticService();}}这是另一个组件:@Singleton@Component(modules=LoggedUserModule.class)pu

android - Dagger 在模块上找不到可注入(inject)成员

我正在使用Dagger用于在Android项目中进行依赖注入(inject),并且可以很好地编译和构建应用程序。对象图看起来是正确的并且可以工作,但是当我添加dagger-compiler作为依赖项以在编译时出错时,它会报告一些奇怪的错误:[ERROR]error:Nobindingforcom.squareup.tape.TaskQueuerequiredbycom.atami\.mgodroid.ui.NodeIndexListFragmentforcom.atami.mgodroid\.modules.OttoModule[ERROR]error:Nobindingforcom.

android - 在 Android 上使用 Dagger 2 进行延迟注入(inject)

我是Dagger2的新手。我有这种情况,我不想在我的应用程序中注入(inject)对象(在演示者中,在api中)我最初没有办法提供它。它是在我的应用程序的某个阶段进行身份验证后才创建的。来自文档http://google.github.io/dagger/我看到延迟加载可能是解决这个问题的一种方法,例如@InjectLazylazyGrinder;然后使用以下方法获取这样的值:lazyGrinder.get().grind();我的问题是:在此之后我可以安全地将对象换成新对象吗?还有其他推荐的方法吗?谢谢 最佳答案 这不适合Lazy

使用 Dagger 进行 Android 功能测试

我正在尝试使用Mockito&Dagger测试Activity.我已经能够在我的应用程序中向Activity注入(inject)依赖项,但是在测试Activity时,我无法向Activity注入(inject)模拟。我应该注入(inject)Activity来测试还是让getActivity()创建它?publicclassMainActivityTestextendsActivityInstrumentationTestCase2{@InjectEngineengineMock;privateMainActivitymActivity;privateButtonmLogoutBtn;

android - Dagger 可以用来在 Content Provider 上执行注入(inject)吗?

我最近一直在将Dagger集成到一个使用ContentProviders的项目中。我在我的自定义应用程序对象中创建了一个ObjectGraph实例,基本上在每个托管组件中:Activity,fragment,服务...然后,我调用getApplication(),向下转换为我的自定义Application对象,并通过我的Application类中的一些自定义实现强制注入(inject)。这似乎是根据我在Square的人发布的示例执行注入(inject)的规定方法。此模式不适用于ContentProvider实例,因为它们的生命周期与Application对象的生命周期并不像可预测的那样

android - Dagger 2 : Unable to inject dependencies in WorkManager

所以据我了解,Dagger还不支持在Worker中注入(inject)。但是正如人们所建议的那样,有一些解决方法。我已经尝试按照在线示例通过多种方式来做到这一点,但它们都不适合我。当我不尝试向Worker类中注入(inject)任何东西时,代码工作正常,只是我不能做我想做的事,因为我需要访问一些DAO和服务。如果我在这些依赖项上使用@Inject,则依赖项要么为null,要么worker永远不会启动,即调试器甚至不会进入Worker类。例如,我尝试这样做:@Component(modules={Module.class})publicinterfaceComponent{voidinj

安卓 Dagger 2 : Inject versus Provides

我对AndroidDagger2和@Inject和@Provide注释的使用有疑问。给出以下两个简化示例:publicclassA{Stringmsg;publicA(Stringmsg){this.msg=msg;}}publicclassB{publicAa;publicB(Aa){this.a=a;}}@ModulepublicclassAModule{@ProvidesAprovidesA(){returnnewA("blah");}@ProvidesBProvidesB(Aa){returnnewB(a);}}该示例非常简单,我的AModule中有两个方法,带有@Provid

Android之Dagger&Hilt依赖注入使用指南

简介Dagger2是一个DependencyInjection(DI)依赖注入框架。它提供给Java和Android使用,主要用于模块间解耦、提高代码的健壮性和可维护性。使用了IOC(控制反转)的思想,在编译阶段使用APT利用Java注解生成Java代码,然后结合部分手写代码来完整依赖注入工作。运行前需要先编译一次项目,目的是用APT生成中间代码。Dagger2不使用反射,在编译阶段生成代码,所以不会程序性能有影响。Dagger2官网Dagger2GithubIOC解释:IOC全名为InversionofControl,概念大体是借助于“第三方”实现具有依赖关系的对象之间的解耦。IOC和DI的