Android 匕首&x2B;奥托体系结构指南

Android 匕首&x2B;奥托体系结构指南,android,architecture,dagger,otto,Android,Architecture,Dagger,Otto,我正在尝试开发一个具有某种模块化架构的应用程序(没有人知道没有人,但每个人仍然可以通信)。我将从一个例子开始: 在登录片段中: @OnClick void login() { bus.post(new AuthorizeEvent(email, password)); // bus is a Bus from Otto } @Subscribe public void onAuthorizedEvent(AuthEvent event) { // ... user was au

我正在尝试开发一个具有某种模块化架构的应用程序(没有人知道没有人,但每个人仍然可以通信)。我将从一个例子开始:

登录片段中

@OnClick
void login() {
    bus.post(new AuthorizeEvent(email, password)); // bus is a Bus from Otto
}

@Subscribe
public void onAuthorizedEvent(AuthEvent event) {
    // ... user was authorized
}
验证器捕获此事件,然后发回:

@Subscribe
public void onAuthorizeEvent(AuthorizeEvent event) {
    // ... login
    bus.post(new AuthEvent(user));
}
Authenticator
通过Dagger依赖于很多东西:

@Inject
public Authenticator(ApiService apiService, Context context, Bus uiBus, Scheduler ioScheduler,
                     Scheduler uiScheduler) {
    this.apiService = apiService;
    this.context = context;
    this.uiBus = uiBus;
    this.ioScheduler = ioScheduler;
    this.uiScheduler = uiScheduler;

    uiBus.register(this);
}
AuthModule
提供:

@Module(
    complete = false,
    library = true,
    includes = {
            ApiModule.class,
            ApplicationModule.class
    }
)
public class AuthModule {
    @Provides
    @Singleton
    Authenticator provideAuthenticator(ApiService apiService, @ForApplication Context context,
                                       @UIBus Bus uiBus, @IOScheduler Scheduler ioScheduler,
                                       @UIScheduler Scheduler uiScheduler) {
        return new Authenticator(apiService, context, uiBus, ioScheduler, uiScheduler);
    }
}
我的
应用程序
课程:

public class AbsApplication extends Application {
    private ObjectGraph graph;

    @Override
    public void onCreate() {
        super.onCreate();
        graph = ObjectGraph.create(getModules());
    }

    public Object[] getModules() {
        return new Object[]{
                new ApplicationModule(this),
                new ApiModule(),
                new AuthModule()
        };
    }

    public void inject(Object object) {
        graph.inject(object);
    }
}

问题是-我在哪里实例化(
@Inject
)身份验证器
?我没有在我的任何课程中直接使用它。它可以是
abs应用程序
类中的字段吗?我是否应该将匕首用于
验证器
?我没有正确使用Dagger的模块吗



我知道我可以在
登录片段
中插入验证器,但我正在探索新的模式。请恕我直言。

对不起,您是否有github中所有可用的源代码可供浏览?我有一个Android演示项目,但是有了Roboguice和Guice而不是dagger,也许它可以帮助你。@NicolasJafelle不,没有GitHub项目。