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项目。