2

moduleオブジェクトを提供する次の 2 つのメソッドを持つ短剣を想像してみてください。

@Provides @Singleton Cache<Settings> providesSettingsCache( Database db )
{
    return new StateCache( db, BuildConfig.VERSION_CODE );
}

@Provides @Singleton Cache<User> providesUserCache( Database db )
{
    return new StateCache( db, BuildConfig.VERSION_CODE );
}

私の例では、とインターフェイスStateCacheの両方を実装しています。のインスタンスを返す両方のメソッドの代わりに、両方のメソッドが明らかに同じインスタンスを指すようにしたいと思います。これはダガーでどのように達成できますか? はの 1 つのインスタンスへの参照を保持し、両方のメソッドがそれを返すようにしますか?Cache<User>Cache<Settings>StateCachemoduleStateCache

4

1 に答える 1

6

Dagger にStateCacheインスタンスを管理させます。

@Provides @Singleton StateCache provideStateCache(Database db) {
  return new StateCache(db, BuildConfig.VERSION_CODE);
}

@Provides @Singleton Cache<Settings> provideSettingsCache(StateCache cache) {
  return cache;
}

@Provides @Singleton Cache<User> provideSettingsCache(StateCache cache) {
  return cache;
}
于 2015-01-19T17:50:57.693 に答える