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.