Dagger2运行时问题

时间:2016-01-04 21:53:27

标签: java android dependency-injection dagger-2 android-runtime

我正在尝试为依赖注入实现dagger2。以前我使用Roboguice进行依赖注入,但是当我将其更新为RG3时它停止了工作。所有注入的视图都为null。所以我想尝试使用Dagger2。从未有过使用dagger1的经历。

以下是我尝试使用的课程。

@Module
public class NTMAModule {

NTMA app;

public NTMAModule(final NTMA app) {
    this.app = app;
}

// EdgeConnection
@Provides
@Singleton
EdgeConnection provideEdgeConnection() {
    return new EdgeConnection();
}

// MessageCenterConnection
@Provides
@Singleton
MessageCenterConnection provideMessageCenterConnection() {
    return new MessageCenterConnection();
}

// ConnectionManager
@Provides
@Singleton
ConnectionManager provideConnectionManager() {
    return new ConnectionManager();
}

// AccountManager
@Provides
@Singleton
AccountManager provideAccountManager(EdgeConnection connection) {
    return new AccountManager(connection);
}
....
}

所以在上面的模块中,我实例化了我需要的所有对象。

以下是我的组件类

@Singleton
@Component(modules = {NTMAModule.class})
public interface NTMAComponent {
ConnectionManager connectionManager();
EdgeConnection edgeConnection();
MessageCenterConnection messageCenterConnection();
AccountManager accountManager();
void inject(Order order);
void inject(Position pos);
void inject(GroupObject gp);
void inject(LoginFragment fragment);
void inject(ReconnectingFragment fragment);
void inject(EdgeConnection connection);
void inject(LoginActivity act);
void inject(BaseActivity act);
void inject(ConnectionManager cm);
void inject(MessageCenterManager mcm);
}

这是我的注射器类

public enum Injector {

INSTANCE;

NTMAComponent applicationComponent;

Injector() {
}

void initializeInjector(NTMA application) {
    NTMAComponent component = DaggerNTMAComponent.builder().nTMAModule(new            NTMAModule(application)).build();
    applicationComponent = component;
}

public NTMAComponent getComponent() {
    return applicationComponent;
}
}

正在应用程序类onCreate()中初始化注入器。

然后onCreate的不同活动以及ConnectionManager,AccountManager,EdgeConnection等类我在构造函数中使用它来使用组件注入字段成员来注入它们。

Injector.INSTANCE.getComponent().inject(this);

但是在应用程序启动时,我得到了以下日志......它只是继续下去。然后stackoverflows和应用程序崩溃。什么都没有显示出来。

  

01-04 15:30:36.761 12125-12125 /? A / art:sart / runtime / runtime.cc:292]
  在dagger.internal.ScopedProvider.get(ScopedProvider.java:46)01-04   15:30:36.761 12125-12125 /? A / art:sart / runtime / runtime.cc:292] -   已锁定< 0x13515e62> (一个dagger.internal.ScopedProvider)

0 个答案:

没有答案