Sobes.tech
Junior — Middle

Jak je zachována závislost Hof, označená anotací Singleton, v rámci injekce závislostí Dagger?

sobes.tech AI

Odpověď od AI

V Daggeru anotace @Singleton zaručuje, že objekt bude vytvořen pouze jednou v rámci komponenty (Component) a bude znovu použit při všech následujících požadavcích na závislosti.

Jak to funguje:

  • Když je komponenta Dagger vytvořena, ukládá vnitřní cache singleton instance.
  • Při prvním požadavku závislosti s anotací @Singleton Dagger vytvoří objekt a uloží jej.
  • Při následných požadavcích stejného typu Dagger vrací uloženou instanci místo vytváření nové.

Důležité je, že rozsah singletonu je omezen na komponentu. Pokud existuje více komponent, každý může mít svůj vlastní singleton.

Příklad:

@Singleton
@Component
interface AppComponent {
    MyService getMyService();
}

@Singleton
class MyService {
    @Inject
    MyService() {}
}

Zde bude MyService vytvořen jednou na úrovni AppComponent a bude znovu použit.