Koin est une bibliothèque d'injection de dépendances écrite en pur Kotlin

Comment gérer l'injection de dépendances avec un mécanisme de portée temporelle

Pour les futurs étudiants du cours "Développeur Android. Professionnel" a préparé une traduction d'un article utile.

Nous vous invitons également à participer au webinaire ouvert sur le thème "Ecrire un plugin Gradle"


De quoi parle l'article

Vous apprendrez à utiliser les modules Koin pour limiter la survie des dépendances spécifiques aux composants. Vous découvrirez également les étendues Koin standard et comment travailler avec des étendues personnalisées.

introduction

Les développeurs Android ne recommandent pas d'utiliser l'injection de dépendances (DI) si votre application comporte trois écrans ou moins. Mais s'il y en a plus, il vaut mieux utiliser DI.

Un moyen populaire d'implémenter DI dans les applications Android est basé sur le framework Dagger. Mais cela nécessite une étude approfondie. L'une des meilleures alternatives à ce framework est Koin, une bibliothèque écrite en pur Kotlin.

Dagger DI, , , , (scope). , ,  — . .

Koin

Koin Android. , , (ViewModel) , .

, Koin .

  • single ( ) —  , ( );

  • factory ( ) — , ( );

  • scoped ( ) — , .

Objet unique.  Usine d'objets (usine)
(single). (factory)

single , factory .

single factory Koin Koin. .

. , OnBoardRepository Android- . , .

Koin, API . Koin . .

1

, . CustomScope. . :

creating custom koin scope

2

single factory . . :

dependencies inside custom scopes

3

Koin. , . Android-, Activity, Fragment . .

, Koin, createScope, .

val stringQualifiedScope = getKoin().createScope(    
  "ScopeNameID", named("CustomeScope"))

CustomScope , Koin , Koin. ScopeNameID — , , . .

Android-, createScope getOrCreateScope. , .

4

, , . . .

val sampleClass = stringQualifiedScope.get<SampleClass>(        
qualifier = named("scopedName"))

scopedName factoryName — , Koin  2.

5

, stringQualifiedScope,   sampleclass, close. , , close onDestroy. :

override fun onDestroy() {
    super.onDestroy()
    stringQualifiedScope.close()
}

Koin-Android

. , Koin. Android-, Koin , , .

Koin-Android. dependencies build.gradle :

// Koin for Android
implementation "org.koin:koin-android:$koin_version"
// Koin Android Scope features
implementation "org.koin:koin-android-scope:$koin_version"

Koin-Android

, , onDestroy Android. Koin lifecyclescope.

Koin Android. :

val androidModule = module {

    scope<SampleActivity> {
        scoped { SampleClass() }
    }
  
}

scoping dependency with android activity

lifecyclescope:

val sampleClass : SampleClass by lifecycleScope.inject()

, . :

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)    
fun onDestroy() {
    if (event == Lifecycle.Event.ON_DESTROY) {       
        scope.close()
        }
    }
}

, . , , . , .

. , - . !


"Android Developer. Professional". " Gradle plugin" .




All Articles