- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 dagger 进行依赖注入(inject),我很抱歉没有深入研究并亲自实践:)我使用两个模块(ApplicationModule、ContactServiceModule)和一个组件(AppComponent)。我已经在 App.java 中初始化了 Dagger,并且尝试将依赖项注入(inject)到后台服务中。这是代码 fragment 。1)ApplicationModule.java
@Module
public class ApplicationModule {
private final App mApp;
private Service contactService;
public ApplicationModule(App app) {
mApp = app;
}
@Provides
@Singleton
public ContactModel contactModel(SQLiteDatabase database) {
return new ContactModel(mApp, database);
}
@Provides
@Singleton
public Context appContext() {
return mApp;
}
@Provides
@Singleton
public ContactController contactController() {
return new ContactController(mApp.getAppComponent());
}
//.....Some more code
}
2)ContactServiceModule.java
@Module
public class ContactServiceModule {
ContactService contactService;
public ContactServiceModule(ContactService contactService){
this.contactService =contactService;
}
@Provides
@Singleton
ContactService provideContactService() {
return this.contactService;
}
}
3)AppComponent.java
@Singleton
@Component(modules = {ApplicationModule.class,ContactServiceModule.class})
public interface AppComponent {
ContactController contactController();
Context appContext();
//...Some code
void inject(ContactController contactController);
//...Some code
void inject(ContactService contactService);
}
4)App.java
public class App extends Application {
private AppComponent mAppComponent;
@Override
public void onCreate() {
super.onCreate();
FlowManager.init(this);
mAppComponent = DaggerAppComponent.builder()
.applicationModule(new ApplicationModule(this))
.build();
}
public AppComponent getAppComponent() {
return mAppComponent;
}
}
5) ContactService.java
public class ContactService extends Service {
@Inject
Context appContext;
@Inject
ContactController contactController;
@Override
public void onCreate() {
super.onCreate();
getAppComponent().inject(this);
}
private AppComponent getAppComponent() {
return ((App)getApplication()).getAppComponent();
}
}
这可能是注入(inject)后台服务的 UI 线程的依赖性问题。但我不明白应该如何实现将相同的依赖项注入(inject)到服务中。或者什么是应用程序级依赖项和服务之间通信的理想方式。我希望该服务始终在后台运行并监听各种 Intent ,并与其他依赖项(如 eventbus 等)进行通信。
最佳答案
错误信息:
contactServiceModule must be set at DaggerAppComponent$Builder.build(DaggerAppComponent.java)”
意味着您已经在构造函数中创建了一个具有依赖项的模块(ContactServiceModule
将您的 Service
作为构造函数中的参数)。因此,Dagger 2 无法自动实例化该模块,并且必须在创建组件时在构建器中实例化:
mAppComponent = DaggerAppComponent.builder()
.applicationModule(new ApplicationModule(this))
.contactServiceModule(contactService);
.build();
但是,您尝试创建的架构存在一个根本问题。服务(如 Activity)被设计为自治的并由 Android 操作系统实例化。就像您不会直接将 Activity 作为依赖项传递给另一个 Activity 一样,您也不应该将 Service 设为依赖项。相反,您需要使用 Intent
、服务绑定(bind)或 EventBus 事件与服务进行通信。安卓 Service文档涵盖了这一点,您应该在继续之前仔细阅读它。
关于java - 对服务的 Dagger 依赖项注入(inject)失败并显示 "contactServiceModule must be set at DaggerAppComponent$Builder.build(DaggerAppComponent.java)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001465/
我正在使用 dagger 进行依赖注入(inject),我很抱歉没有深入研究并亲自实践:)我使用两个模块(ApplicationModule、ContactServiceModule)和一个组件(Ap
我浏览了各种 stackoverflow 链接,其中一些链接是: LInk 1 Link 2 但没有人解决这个问题,下面是 gradle 文件和我的应用程序: // dependency in
我正在尝试构建具有较大依赖关系图并使用 dagger 2 的项目。我使用以下依赖项 implementation 'com.google.dagger:dagger:2.11' androidTest
我一直在添加 di folder 中的所有组件githubbrowsersample (java) 的并且似乎没有引起任何大惊小怪,直到创建 AppInjector 因为它不想生成 DaggerApp
使用 dagger 2.10,我曾经能够通过以下方式创建应用程序组件 sAppComponent = DaggerAppComponent.builder() .app
请帮我将 Dagger 2 连接到 Kotlin。 我的应用程序构建 gradle: apply plugin: 'com.android.application' apply plugin: 'ko
这个问题在这里已经有了答案: Unresolved reference DaggerApplicationComponent (14 个回答) 4年前关闭。 我已经面临这个问题3个小时了。我找不到任何
我克隆了这个项目https://github.com/robohorse/RoboPOJOGenerator并尝试在 IntelliJ IDE 的帮助下进行构建。 它已成功导入并下载了必要的依赖项,但
我正在尝试使用 retrofit 2、dagger 2 和 MVP 创建一个简单的应用程序,但我在与依赖项作斗争,实际上,这是我在尝试重建项目后遇到的错误错误:任务执行失败:应用程序:compileD
在我的类上添加注入(inject)后我得到了这个错误然后它给了我一个编译错误。如果我删除 @Inject static ApiService mApiService; 一切正常 我正在使用 2 个应用
我已经遵循了许多关于如何使用 dagger 实现依赖注入(inject)的示例。 上次我收到此错误时,我彻底检查了新添加的 Activity 和之前添加的 Activity ,没有问题。 一切都是相似
在尝试集成最新的 Dagger 2 版本时,我遇到了 Dagger 自动生成的问题。尽管有几个 Rebuilds 和 Make Module App 过程,但 Dagger 不会自动生成 Dagger
我今天已经使用 Dagger 2 将 Kotlin 插件安装到现有项目中。在安装 Kotlin 之前,我对 Dagger 没有任何问题。但是,现在编译器提示: Error:(5, 32) Unreso
我的“BaseServiceModule”是: @Module public class BaseServiceModule { private static final int TIMEOUT =
我在构建 android 项目时收到“错误:找不到符号类 DaggerAppComponent”,我将 Dagger 和其他依赖项的版本更改为最新版本,我也厌倦了旧版本但仍然出现同样的错误。 我的bu
我正在尝试构建一个基于 [todo-mvp-dagger] 和改造的应用程序。创建初始类、模块、房间数据库(第一次使用)并重建项目后,我收到一个错误:找不到符号变量 DaggerAppComponen
我是一名优秀的程序员,十分优秀!