Sobes.tech
Junior — Middle

Jak určit rozsah závislostí v Daggeru a k čemu je potřeba?

sobes.tech AI

Odpověď od AI

V Daggeru určuje Scope (rozsah) životní cyklus a jedinečnost vytvářených závislostí. Je nezbytné pro správu doby života objektů a zabránění zbytečnému vytváření nových instancí.

Například, pokud označíme komponentu a poskytovatele závislostí stejným rozsahem, Dagger vytvoří jedinou instanci této závislosti po celou dobu života komponenty.

Rozsah pomáhá:

  • Opakovaně používat objekty v rámci stejného rozsahu (například relace nebo obrazovka).
  • Kontrolovat tvorbu a zničení závislostí.
  • Vyhýbat se únikům paměti a nadměrnému využívání zdrojů.

Příklad definice rozsahu:

@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ActivityScope {}

@ActivityScope
@Component(modules = MyModule.class)
public interface MyComponent {
    // závislosti
}

Zde ActivityScope zaručuje, že všechny závislosti s touto anotací budou vytvořeny pouze jednou během životního cyklu komponenty.