KoinをAndroidで開始する
koin-androidプロジェクトは、Androidの世界にKoinの機能を提供することに特化しています。詳細については、Androidのセットアップセクションを参照してください。
Applicationクラスから
Applicationクラスから、startKoin関数を使用し、androidContextでAndroidコンテキストを以下のように注入(インジェクト)できます。
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
// KoinをAndroidロガーに出力
androidLogger()
// Androidコンテキストを参照
androidContext(this@MainApplication)
// モジュールをロード
modules(myAppModules)
}
}
}INFO
ApplicationクラスからKoinを開始したくない場合は、どこからでも開始できます。
Koinを他のAndroidクラスから開始する必要がある場合は、startKoin関数を使用し、AndroidのContextインスタンスを次のように提供できます。
startKoin {
// Androidコンテキストを注入
androidContext(/* your android context */)
// ...
}追加の構成
Koinの設定(startKoin { }ブロックコード内)から、Koinのいくつかの部分を設定することもできます。
Android向けのKoinロギング
KoinApplicationインスタンス内で、AndroidLogger()クラスを使用する拡張関数androidLoggerがあります。 このロガーは、KoinロガーのAndroid実装です。
ニーズに合わない場合は、このロガーを変更してください。
startKoin {
// Androidロガーを使用 - デフォルトではLevel.INFO
androidLogger()
// ...
}プロパティのロード
assets/koin.propertiesファイルでKoinプロパティを使用して、キー/値を保存できます。
startKoin {
// ...
// assets/koin.propertiesからプロパティを使用
androidFileProperties()
}Androidx Startup (4.0.1) でKoinを開始 [実験的]
Gradleパッケージkoin-androidx-startupを使用することで、KoinStartupインターフェースを使用して、ApplicationクラスにKoin設定を宣言できます。
class MainApplication : Application(), KoinStartup {
override fun onKoinStartup() = koinConfiguration {
androidContext(this@MainApplication)
modules(appModule)
}
override fun onCreate() {
super.onCreate()
}
}これは、通常onCreateで使用されるstartKoin関数を置き換えます。koinConfiguration関数はKoinConfigurationインスタンスを返します。
INFO
KoinStartupは起動時にメインスレッドをブロックするのを防ぎ、パフォーマンスを向上させます。
Koinとの起動時の依存関係
Koinがセットアップされる必要があり、依存関係を注入できるようにするには、InitializerをKoinInitializerに依存させることができます。
class CrashTrackerInitializer : Initializer<Unit>, KoinComponent {
private val crashTrackerService: CrashTrackerService by inject()
override fun create(context: Context) {
crashTrackerService.configure(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
return listOf(KoinInitializer::class.java)
}
}