Sobes.tech
Junior — Middle

Hoe bepaal je de scope van afhankelijkheden in Dagger en waarom is het nodig?

sobes.tech AI

Antwoord van AI

In Dagger bepaalt de Scope (Scope) de levenscyclus en de uniciteit van de gemaakte afhankelijkheden. Het is nodig om de levensduur van objecten te beheren en onnodige creatie van nieuwe instanties te voorkomen.

Bijvoorbeeld, als een component en een afhankelijkheidsprovider met dezelfde scope worden gemarkeerd, zal Dagger een enkele instantie van die afhankelijkheid creëren gedurende de hele levensduur van het component.

De scope helpt:

  • Objecten binnen hetzelfde domein (bijvoorbeeld sessie of scherm) opnieuw te gebruiken.
  • Het creëren en vernietigen van afhankelijkheden te controleren.
  • Geheugenlekken en overmatig resourcegebruik te voorkomen.

Voorbeeld van het definiëren van een scope:

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

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

Hier garandeert ActivityScope dat alle afhankelijkheden met deze annotatie slechts één keer worden gemaakt tijdens de levensduur van het component.