我正在使用 Dagger1,并且有一个笑话列表。在我的 AwesomeJokeModule 中,我提供了一个列表。该列表由 JokeDataLayer.getJokeCache() 提供。问题是,如果尚未建立缓存,则 getJokeCache() 方法会访问数据库以获取大量笑话。这可能需要一段时间,并且在将我的笑话注入(inject)我的 Activity 时,这可能会导致速度变慢,因为笑话是我的 Activity 的成员。将成员异步注入(inject) Activity 之类的最佳方法是什么?
我想到的一些事情是,如果尚未构建缓存,则立即返回一个空列表,然后以某种方式尝试传达缓存已更新?但感觉就像我在绕过 Dagger/DI。有什么建议或方法吗?
最佳答案
这是 Lazy<T>
的位置是为了。考虑使用 LAZY INJECTION
class GridingCoffeeMaker {
@Inject Lazy<Grinder> lazyGrinder;
public void brew() {
while (needsGrinding()) {
// Grinder created once on first call to .get() and cached.
lazyGrinder.get().grind();
}
}
}
这lazyGrinder
对象只会在您需要使用它时被初始化。
关于android - 如何使用 Dagger 异步提供对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003820/