Sobes.tech
Junior — Middle

Jak zdefiniować zakres zależności w Dagger i do czego jest potrzebny?

sobes.tech AI

Odpowiedź od AI

W Daggerze zakres (Scope) określa cykl życia i unikalność tworzonych zależności. Jest to konieczne do zarządzania czasem życia obiektów i unikania niepotrzebnego tworzenia nowych instancji.

Na przykład, jeśli oznaczymy komponent i dostawcę zależności tym samym zakresem, Dagger utworzy pojedynczą instancję tej zależności na cały okres życia komponentu.

Zakres pomaga:

  • Ponownie używać obiektów w ramach tego samego zakresu (np. sesja lub ekran).
  • Kontrolować tworzenie i niszczenie zależności.
  • Unikać wycieków pamięci i nadmiernego zużycia zasobów.

Przykład definicji zakresu:

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

@ActivityScope
@Component(modules = MyModule.class)
public interface MyComponent {
    // zależności
}

Tutaj ActivityScope gwarantuje, że wszystkie zależności z tą adnotacją będą tworzone raz na cykl życia komponentu.