java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1845字,纯文字阅读大概需要3分钟。
内容图文
![java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?](/upload/InfoBanner/zyjiaocheng/741/84ef005157cb4b7fa2676d51d897d236.jpg)
从这里查看Android架构蓝图“todo-mvp-dagger”:https://github.com/googlesamples/android-architecture.
我正在尝试理解Dagger2实现,我似乎无法弄清楚他们如何让Dagger2提供TasksRepository.
他们有@Provides用于“provideTasksLocalDataSource”和“provideTasksRemoteDataSource”,但实际的TaskRepository是哪一个?
在TodoApplication类中,他们有:
@Inject
TasksRepository tasksRepository;
怎么能在没有@Provides的情况下注入它呢?
如果我尝试在我自己的应用程序中使用相同的方法,我会收到此错误:
cannot be provided without an @Provides- or @Produces-annotated method
所以我在Blueprints代码中到处寻找,但我看不出他们是如何做到的.是否有一些技巧允许他们没有@Provides?它肯定会建立起来,所以他们以某种方式绕过它.
有人在实际的github页面上问了同样的问题,但在撰写本文时没有答案. https://github.com/googlesamples/android-architecture/issues/561.
我在撰写本文时的最新提交是“082bd72d62472f9caadd2979046067fb928bbfef”.
解决方法:
在您提到的存储库中,Dagger 2知道如何通过使用@Inject标记的构造函数注入TasksRepository.从source:
@Inject
TasksRepository(@Remote TasksDataSource tasksRemoteDataSource,
@Local TasksDataSource tasksLocalDataSource) {
mTasksRemoteDataSource = tasksRemoteDataSource;
mTasksLocalDataSource = tasksLocalDataSource;
}
由于构造函数是使用@Inject注释的,Dagger 2将尝试使用构造函数将TasksRepository注入到消费者(如TodoApplication)中.
由于TasksDataSource已经绑定在TasksRepositoryModule中,因此Dagger 2有足够的信息来执行注入,而不需要额外的@Provides或@Binds方法.
同样,您可以执行以下操作:
class Foo {
private final Bar bar;
@Inject
Foo(Bar bar) {
this.bar = bar;
}
}
class Bar {
@Inject
Bar() {}
}
class Activity extends AppCompatActivity {
@Inject Foo foo;
}
而Dagger 2将能够在AppCompatActivity中注入Foo.为什么?
> Dagger 2知道如何构造一个Bar对象(通过调用空构造函数)
> Dagger 2知道在创建Foo实例时,必须使用带有@Inject注释的构造函数和单个参数Bar.
> Foo没有其他依赖关系,换句话说,完整的对象图可用.
内容总结
以上是互联网集市为您收集整理的java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?全部内容,希望文章能够帮你解决java – Android架构蓝图“todo-mvp-dagger”,其中是@Provides for TasksRepository?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。