草庐IT

AndroidAnnotations 和 Dagger 2

全部标签

android - java.lang.NoClassDefFound 使用适用于 Android 4 的 Dagger 2

我有一个使用Dagger2的项目,但我无法在Android4+上运行该应用程序,它崩溃了。但在Android5+上它工作得很好。所以这是我得到的错误:08-0505:03:38.07625444-25444/app.xqute.com.xquteE/AndroidRuntime﹕FATALEXCEPTION:mainProcess:app.xqute.com.xqute,PID:25444java.lang.NoClassDefFoundError:app.xqute.com.xqute.AppModule_ProvideProfileFactoryatapp.xqute.com.xq

android - Dagger 2 从两个组件注入(inject)

我遇到了一个我无法解决的问题。我在我的Android应用程序中使用Dagger2作为DI框架。我试图用两个不同的组件注入(inject)我的Activity,但是apparentlyitcan'tbedone.显而易见的解决方案似乎是创建一个具有所有所需行为的独特组件,但我的模块中有不同的范围。那么什么是正确的方法呢?我是否应该拥有相同的示波器,即使这不是计划? 最佳答案 不可能将两个组件注入(inject)到一个类或Activity中,您应该更改组件结构并将其划分为子组件或为每个类创建一个单独的组件(不推荐),此链接也讨论了您的问

java - 在方向改变时处理 Dagger 组件

假设已经说过here,开发人员有责任保留组件实例以实现他们自己的作用域逻辑(因为作用域方法将为给定组件返回相同的实例)。在整个Activity生命周期中保持此组件引用的简洁方法是什么?示例:您正在实现MVP模式,因此您的Activity中需要一个Presenter。此Presenter可以执行网络操作以下载项目。当设备旋转时,您的Activity将被销毁并重新创建,但您希望继续进行网络操作并只取回旋转前的演示者。为Presenter提供自定义PerActivity范围的Component范围是解决方案,因此您必须通过此轮换保持Component实例,以便注入(inject)与第一次启动

android - 使用 Dagger 2 在单元测试中进行字段注入(inject)

根据Daggerdocumentation中的建议,对于单元测试,我们根本不需要涉及Dagger,对于提供的示例,它是有意义的:classThingDoer{privatefinalThingGettergetter;privatefinalThingPutterputter;@InjectThingDoer(ThingGettergetter,ThingPutterputter){this.getter=getter;this.putter=putter;}StringdoTheThing(inthowManyTimes){/*…*/}}有了这个类结构,单元测试很简单,只需模拟get

android - ButterKnife 和 Dagger 之类的依赖注入(inject)框架会让应用变慢吗?

我即将开始一个比较大的项目,并且很纳闷使用这些依赖注入(inject)框架的真正好处是什么?DI会增加应用加载时间吗?或者提供任何性能值(value)?Google的文档反对使用Robojuice,因为它会占用RAM,这是所有DI的共同点吗?有兴趣听听大家的意见。 最佳答案 我在NYTimes工作,使用Dagger2在2个范围内实例化数百个托管对象只需不到100毫秒。Dagger帮助我们组织对象并从Activity或业务对象中删除大量样板。我会为任何规模的应用推荐它。 关于android

android - Dagger 2 没有生成我的组件类

我正在使用Dagger2创建我的依赖注入(inject)。它在几个小时前工作,但现在不再生成组件。这里是我创建组件的地方:publicclassAppextendsApplication{CacheComponentmCacheComponent;ApiComponentmApiComponent;DataBaseComponentmDataBaseComponent;@OverridepublicvoidonCreate(){super.onCreate();mCacheComponent=DaggerCacheComponent.builder().cacheModule(newC

android - dagger-android 自定义作用域

我对使用dagger-android的Dagger中的作用域依赖感到困惑。使用@ContributesAndroidInjetor我有一个类似下面的代码:@ModulepublicabstractclassActivityBindingModule{@ContributesAndroidInjector(modules=PotatoesModule.class)publicabstractMainActivitycontributeMainActivityInjector();@ContributesAndroidInjectorpublicabstractUserActivityco

Android 应用程序在使用 Proguard 和 Dagger 的 Release Build 上崩溃

我不熟悉将Proguard和Dagger用于Android应用程序,所以如果有人能给我一些指导,我将不胜感激。Proguard和Dagger已在应用程序中实现。当应用程序通过Debug模式(即从Eclipse推送)安装时,运行应用程序没有问题。但是,当我运行应用程序的发布版本时,它崩溃并显示以下跟踪:Noinjectablemembersoncom.example.test.d.Doyouwanttoaddaninjectableconstructor?requiredbycom.example.test.dcom.example.test.SampleActivity.aNoinje

android - Dagger 2 在 AppCompatActivity 中注入(inject)错误

我是Dagger的新手。目前我创建示例项目一些fragment代码:我的组件.java@PerActivity@Component(modules=MyModule.class)publicinterfaceMyComponent{voidinject(TutorialActivityactivity);}MyModule.java@ModulepublicclassMyModule{@ProvidesPositionprovidePosition(){returnnewPosition();}}PerActivity.java@Scope@Retention(RUNTIME)publ

android - 使用 Dagger2 (Robolectric) 模拟 jetpack ViewModel 进行单元测试

所以我正在尝试使用Robolectric为我的Activity编写单元测试,但是我不知道如何提供模拟View模型,因为我的虚拟机是如何在类中直接实例化的。这是因为Jetpack的生命周期感知ViewModel需要一个Provider类来实例化。所以,我实际上是在注入(inject)自定义提供程序,然后使用它来创建我的ViewModel。我看过其他示例,但它们看起来都非常令人困惑。我如何实现这一点?classActivityEpisodeList:AppCompatActivity(){@InjectlateinitvarvmFactory:ViewModelProvider.Facto