【Android Hilt 依賴注入完整教學】系列文章目錄:連結
Youtube 教學頻道:HKT線上教室
今天要跟大家分享的是如何在 Android 專案中使用 Hilt Modules。這是一個非常重要的主題,因為 Modules 是 Hilt 依賴注入框架中用於組織和提供依賴的核心機制。透過 Modules,我們可以更有效地管理複雜的依賴關係,提供介面的具體實作,以及控制物件的生命週期。本文將深入探討 Modules 的概念、使用時機與實作方式,幫助您更好地運用這個強大的功能。
Hilt Modules 本質上是一個類別,用於告訴 Hilt 框架如何建立和管理物件的生命週期。當我們需要注入的對象是介面(Interface)或是抽象類別時,Modules 就特別重要,因為 Hilt 需要知道具體要建立哪個實作類別。
Modules 在 Hilt 中扮演著以下重要角色:
使用時機:
讓我們透過一個實際的範例來了解:
// 定義一個介面
interface AlertSystem {
fun startAlerting()
}
// 實作介面
class NoiseAlertSystem(private val context: Context) : AlertSystem {
override fun startAlerting() {
println(context.getString(R.string.test_string))
}
}
// 建立 Module
@Module
@InstallIn(ActivityComponent::class)
object AlertSystemModule {
@Provides
fun provideAlertSystem(@ApplicationContext context: Context): AlertSystem {
return NoiseAlertSystem(context)
}
}
使用 @InstallIn
註解來指定 Module 中提供的依賴項的生命週期範圍:
SingletonComponent
:整個應用程式生命週期ActivityComponent
:Activity 生命週期ViewModelComponent
:ViewModel 生命週期FragmentComponent
:Fragment 生命週期注意事項:
在 Module 中,我們使用 @Provides
註解來標記提供依賴的方法。這個方法需要:
Hilt Modules 特別適用於以下情況:
@InstallIn
使用正確的 Component:在下一篇文章中,我們將探討如何在同一個介面提供多個實作,這在需要根據不同情境使用不同實作時特別有用。