【发布时间】:2016-03-07 02:40:24
【问题描述】:
我是 Dagger 2 的新手。我有这种情况,我不想在我的应用程序中注入对象(在演示者中,在 api 中)
我最初无法提供它。直到在我的应用程序的某个阶段进行身份验证后才会创建它。
来自文档http://google.github.io/dagger/
我看到延迟加载可能是解决这个问题的一种方法,例如
@Inject
Lazy<Grinder> lazyGrinder;
然后使用以下方法获取值: lazyGrinder.get().grind();
我的问题是:
- 之后我可以安全地将对象换成新对象吗?
- 还有其他推荐的方法吗?
谢谢
【问题讨论】:
-
覆盖是什么意思?
-
@cyroxis 我的意思是交换,问题已更新
-
我只用过一次
Lazy<T>。它让我在启动时陷入僵局。再也不。顺便说一句,我不知道我做错了什么。我个人只会创建一个单例Holder对象,如GrinderHolder并在你拥有它时设置它(否则null) -
Dagger 提供程序是延迟加载的,这意味着只要您不使用该对象,它就不会启动。
标签: android dependency-injection lazy-initialization dagger-2