草庐IT

java - Dagger 2 单例不工作

使用Dagger2,我试图在单个范围内的多个位置注入(inject)一个单例对象。但是,我的解决方案似乎每次都创建一个新实例。在这个测试项目中,我有一个初始化DaggerModule的MainActivity。DaggerModule提供对象Box和Cat,其中Box以Cat作为参数。我还在我的MainActivity中加入了Cat。最后,我检查了两个注入(inject)的Cat变量的引用(分别在Box和MainActivity中),但它们不是同一个实例。如果我在MainActivity中调用provideCat()两次,则会提供相同的实例。主要Activity:publicclass

java - 如何使用 Dagger2 将依赖项注入(inject)任何类型的对象?

根据http://konmik.github.io/snorkeling-with-dagger-2.html我可以添加inject(Anythinganything)进入AppComponent.java,但这对我不起作用,在文章示例中:@Singleton@Component(modules=AppModule.class)publicinterfaceAppComponent{voidinject(MainActivityactivity);voidinject(MainFragmentfragment);voidinject(MainToolbarViewview);}如果我尝

java - Dagger 2 生成代码中 proxyProvide 的用途

我有这个Dagger模块。我想了解生成的代码,以便验证我的Dagger配置是否最佳。@ModulepublicclassTypefaceModule{@Provides@Singleton@Named("RobotoLight")staticTypefaceprovideRobotoLight(AssetManagerassets){returnTypeface.createFromAsset(assets,"fonts/Roboto-Light.ttf");}}这是生成的代码(Dagger2.14.1):publicfinalclassTypefaceModule_ProvideRo

java - 如何在不强制消费应用程序使用 Dagger 的情况下构建基于 Dagger 的 Android 库?

我正在开发一个Android库,它基本上是我编写的一些REST服务的客户端。我有几个存储类、网络队列、解析器等,并且像许多这样的类一样,它们依赖于Context或诸如SharedPreferences之类的东西,它们是从上下文。这些对象都隐藏在外观类后面,因此我的库的使用者看不到它们或直接与它们交互。为了我自己的理智,我想使用Dagger2进行依赖注入(inject),以在我的库中内部管理这些类的实例。但是,我不想强​​制使用我的库的应用程序自己使用Dagger;仅仅因为我选择使用Dagger并不意味着我的用户必须这样做。我看到的所有教程似乎都期望我正在构建一个应用程序,而不仅仅是一个

android - Dagger- 我们应该为每个 Activity/fragment 创建每个组件和模块吗?

我使用dagger2已经有一段时间了。我对为每个Activity/fragment创建自己的组件/模块感到困惑。请帮我澄清一下:例如,我们有一个应用程序,该应用程序大约有50个屏幕。我们将按照MVP模式和Dagger2为DI实现代码。假设我们有50个Activity和50个演示者。在我看来,通常我们应该这样组织代码:创建一个AppComponent和AppModule,它们将提供在应用程序打开时将使用的所有对象。@ModulepublicclassAppModule{privatefinalMyApplicationClassapplication;publicAppModule(My

android - Dagger- 我们应该为每个 Activity/fragment 创建每个组件和模块吗?

我使用dagger2已经有一段时间了。我对为每个Activity/fragment创建自己的组件/模块感到困惑。请帮我澄清一下:例如,我们有一个应用程序,该应用程序大约有50个屏幕。我们将按照MVP模式和Dagger2为DI实现代码。假设我们有50个Activity和50个演示者。在我看来,通常我们应该这样组织代码:创建一个AppComponent和AppModule,它们将提供在应用程序打开时将使用的所有对象。@ModulepublicclassAppModule{privatefinalMyApplicationClassapplication;publicAppModule(My

java - 如何让 Jersey 使用 Dagger 依赖注入(inject)?

Jersey通常使用HK2依赖注入(inject),但我想将Jersey与Dagger2一起使用。Dagger和HK2都实现了JSR330,我已将其作为证据,证明这应该可以不费吹灰之力。我找到了使Jersey与CDI(例如Weld)、SpringDI和Guice一起工作的方法,但我在Dagger上找不到任何东西。提供一些上下文:我在SE环境中运行Grizzly–Jersey服务器,而不是在EE容器中。我的Maven项目有com.google.dagger:dagger和org.glassfish.jersey.containers:jersey-container-grizzly2-h

java - Dagger 2循环依赖

在我正在从事的一个项目中,我有两个高度相互依赖的类:@SingletonclassWorkExecutor{@InjectProviderservices;...publicvoidexecute(Workw){w.execute(services.get());...}...}classExecutionServicesImplimplementsExecutionServices{@InjectWorkExecutorexecutor;...}这个想法是,当执行一个工作时,该工作可以访问多个服务——其中之一是执行者本身,这样一个工作就能够执行子工作。如您所见,这里存在循环依赖,但我

android - 如何在Android项目中从头开始设置DAGGER依赖注入(inject)?

如何使用Dagger?如何配置Dagger以在我的Android项目中工作?我想在我的Android项目中使用Dagger,但我觉得它很困惑。编辑:Dagger2也从2015年04月15日开始发布,它更令人困惑![这个问题是一个“stub”,当我更多地了解Dagger1和更多地了解Dagger2时,我将添加到我的答案中。这个问题更像是一个指南而不是一个“问题”。] 最佳答案 指南Dagger2.x(修订版6):步骤如下:1.)添加Dagger给您的build.gradle文件:顶级build.gradle:.//Top-levelb

android - 如何在Android项目中从头开始设置DAGGER依赖注入(inject)?

如何使用Dagger?如何配置Dagger以在我的Android项目中工作?我想在我的Android项目中使用Dagger,但我觉得它很困惑。编辑:Dagger2也从2015年04月15日开始发布,它更令人困惑![这个问题是一个“stub”,当我更多地了解Dagger1和更多地了解Dagger2时,我将添加到我的答案中。这个问题更像是一个指南而不是一个“问题”。] 最佳答案 指南Dagger2.x(修订版6):步骤如下:1.)添加Dagger给您的build.gradle文件:顶级build.gradle:.//Top-levelb