Koin ist eine in reinem Kotlin geschriebene Abhängigkeitsinjektionsbibliothek

Verwalten der Abhängigkeitsinjektion mit einem Zeitbereichsmechanismus

Für zukünftige Studenten des Kurses "Android Developer. Professional" wurde eine Übersetzung eines nützlichen Artikels vorbereitet.

Wir laden Sie außerdem ein, an dem offenen Webinar zum Thema "Schreiben eines Gradle-Plugins" teilzunehmen.


Wovon handelt der Artikel

Sie lernen, wie Sie Koin-Module verwenden, um die Überlebensfähigkeit komponentenspezifischer Abhängigkeiten zu begrenzen. Außerdem erfahren Sie mehr über die Standard-Koin-Bereiche und wie Sie mit benutzerdefinierten Bereichen arbeiten.

Einführung

Android-Entwickler empfehlen die Verwendung von Dependency Injection (DI) nicht, wenn Ihre Anwendung drei oder weniger Bildschirme hat. Wenn es jedoch mehr davon gibt, ist es besser, DI zu verwenden.

Eine beliebte Methode zur Implementierung von DI in Android-Anwendungen basiert auf dem Dagger-Framework. Aber es erfordert tiefes Studium. Eine der besten Alternativen zu diesem Framework ist Koin, eine Bibliothek, die in reinem Kotlin geschrieben ist.

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

Koin

Koin Android. , , (ViewModel) , .

, Koin .

  • single ( ) —  , ( );

  • factory ( ) — , ( );

  • scoped ( ) — , .

Einzelobjekt.  Fabrik von Gegenständen (Fabrik)
(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