无法理解 android 架构示例中的组件 (TasksRepositoryComponent) todo-mvp-dagger
Unable to understand component (TasksRepositoryComponent) in android-architecture sample todo-mvp-dagger
我正在尝试完成这个 android 架构示例代码:-
https://github.com/googlesamples/android-architecture/tree/todo-mvp-dagger/todoapp
我也阅读了本用户指南 -
https://google.github.io/dagger/users-guide
这是 TasksRepositoryComponent
中的代码
@Singleton
@Component(modules = {TasksRepositoryModule.class, ApplicationModule.class})
public interface TasksRepositoryComponent {
TasksRepository getTasksRepository();
}
扩展应用程序的 ToDoApplication 在 onCreate() 中有这段代码 -
mRepositoryComponent = DaggerTasksRepositoryComponent.builder()
.applicationModule(new ApplicationModule((getApplicationContext())))
.build();
有些事情我不明白:-
为什么 TasksRepositoryComponent 不像应用程序中的其他组件那样具有 inject() 方法?
为什么ToDoApplication在build()之前不也调用DaggerTasksRepositoryComponent中的tasksRepositoryModule()方法?为什么不需要?
有没有什么地方可以找到使用 dagger2 时要遵守的规则的良好文档?
Why doesn't TasksRepositoryComponent
have aninject()
method like
other components in the app?
TaskRepositoryComponent
是父组件,其唯一目的是将 TaskRepository
的绑定发布到其依赖组件。依赖组件将继承 TaskRepository
的绑定,并能够将其注入到它们的注入位置。查看 documentation for dependent components 了解有关此功能的更多信息。
Why doesn't ToDoApplication
also call the method
tasksRepositoryModule()
in DaggerTasksRepositoryComponent
before
build()
? Why isn't that required?
TasksRepositoryModule
有一个没有参数的默认 public 构造函数,因此生成的组件可以初始化它,而无需在构建器中显式构造它。查看 DaggerTasksRepositoryComponent
中生成的代码 - 您会看到类似
的内容
if (tasksRepositoryModule == null) {
tasksRepositoryModule = new TasksRepositoryModule();
}
我正在尝试完成这个 android 架构示例代码:- https://github.com/googlesamples/android-architecture/tree/todo-mvp-dagger/todoapp
我也阅读了本用户指南 - https://google.github.io/dagger/users-guide
这是 TasksRepositoryComponent
中的代码@Singleton
@Component(modules = {TasksRepositoryModule.class, ApplicationModule.class})
public interface TasksRepositoryComponent {
TasksRepository getTasksRepository();
}
扩展应用程序的 ToDoApplication 在 onCreate() 中有这段代码 -
mRepositoryComponent = DaggerTasksRepositoryComponent.builder()
.applicationModule(new ApplicationModule((getApplicationContext())))
.build();
有些事情我不明白:-
为什么 TasksRepositoryComponent 不像应用程序中的其他组件那样具有 inject() 方法?
为什么ToDoApplication在build()之前不也调用DaggerTasksRepositoryComponent中的tasksRepositoryModule()方法?为什么不需要?
有没有什么地方可以找到使用 dagger2 时要遵守的规则的良好文档?
Why doesn't
TasksRepositoryComponent
have aninject()
method like other components in the app?
TaskRepositoryComponent
是父组件,其唯一目的是将 TaskRepository
的绑定发布到其依赖组件。依赖组件将继承 TaskRepository
的绑定,并能够将其注入到它们的注入位置。查看 documentation for dependent components 了解有关此功能的更多信息。
Why doesn't
ToDoApplication
also call the methodtasksRepositoryModule()
inDaggerTasksRepositoryComponent
beforebuild()
? Why isn't that required?
TasksRepositoryModule
有一个没有参数的默认 public 构造函数,因此生成的组件可以初始化它,而无需在构建器中显式构造它。查看 DaggerTasksRepositoryComponent
中生成的代码 - 您会看到类似
if (tasksRepositoryModule == null) {
tasksRepositoryModule = new TasksRepositoryModule();
}