我使用Dagger1并且我有一个笑话列表。在我的AwesomeJokeModule中,我提供了一个List。该列表由JokeDataLayer.getJokeCache()提供。问题是,如果缓存尚未构建,则getJokeCache()方法会在数据库中获取大量的笑话。这可能需要一段时间,并且在将我的笑话注入我的活动时,由于笑话是我的活动的成员,这可能会导致速度减慢。什么是将成员异步注入活动的最佳方式?
我想到的一些事情是,如果缓存尚未构建,则立即返回一个空列表,然后以某种方式尝试通知缓存已更新?但感觉就像是在绕过Dagger / DI。有任何建议或方法吗?
答案 0 :(得分:1)
这是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
对象。