Sobes.tech
Junior — Middle

Ako určiť rozsah závislostí v Dagger a na čo je to potrebné?

sobes.tech AI

Odpoveď od AI

V Daggeri určuje Scope (rozsah) životný cyklus a jedinečnosť vytvorených závislostí. Je nevyhnutný na správu doby života objektov a na zabránenie zbytočného vytvárania nových inštancií.

Napríklad, ak označíme komponent a poskytovateľa závislostí rovnakým rozsahom, Dagger vytvorí jedinú inštanciu tejto závislosti počas celého životného cyklu komponentu.

Rozsah pomáha:

  • Opakovane používať objekty v rámci rovnakého rozsahu (napríklad relácia alebo obrazovka).
  • Kontrolovať tvorbu a zničenie závislostí.
  • Vyhýbať sa únikom pamäti a nadmernému využívaniu zdrojov.

Príklad definície rozsahu:

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

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

Tu ActivityScope zaručuje, že všetky závislosti s touto anotáciou budú vytvorené iba raz počas životného cyklu komponentu.