Hilt 是一個(gè)基于 Dagger 的依賴(lài)注入庫(kù),可以簡(jiǎn)化 Android 應(yīng)用中的依賴(lài)注入流程。下面是在 Android 項(xiàng)目中使用 Hilt 的步驟:
1、添加 Hilt Gradle 插件
在項(xiàng)目的 build.gradle 文件中添加以下依賴(lài):
buildscript {
repositories {
google()
}
dependencies {
...
classpath 'com.google.dagger:hilt-android-gradle-plugin:<version>'
}
}
并在 app 的 build.gradle 文件中應(yīng)用插件:
plugins {
...
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
android {
...
}
dependencies {
...
implementation 'com.google.dagger:hilt-android:<version>'
kapt 'com.google.dagger:hilt-android-compiler:<version>'
}
2、在 Application 類(lèi)中添加 Hilt
在 Application 類(lèi)上添加 @HiltAndroidApp 注解。
@HiltAndroidApp
class MyApplication : Application() {
...
}
3、添加依賴(lài)注入類(lèi)
創(chuàng)建一個(gè)或多個(gè)依賴(lài)注入類(lèi),使用 @Module 和 @Provides 注解來(lái)提供依賴(lài)項(xiàng)。
@Module
@InstallIn(ApplicationComponent::class)
object MyModule {
@Provides
fun provideMyDependency(): MyDependency {
return MyDependencyImpl()
}
}
4、在需要使用依賴(lài)項(xiàng)的類(lèi)中添加 @Inject 注解
在需要使用依賴(lài)項(xiàng)的類(lèi)的構(gòu)造函數(shù)上添加 @Inject 注解,Hilt 將自動(dòng)注入所需的依賴(lài)項(xiàng)。
class MyViewModel @Inject constructor(
private val myDependency: MyDependency
) : ViewModel() {
...
}
以上是在 Android 項(xiàng)目中使用 Hilt 的基本步驟,可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。
比如,使用Hilt依賴(lài)注入Retrofit
1、添加依賴(lài)
在項(xiàng)目的 build.gradle 文件中添加以下依賴(lài):
implementation 'com.google.dagger:hilt-android:2.40.5'
kapt 'com.google.dagger:hilt-android-compiler:2.40.5'
2、在 Application 類(lèi)中添加 Hilt 注解
在 Application 類(lèi)上添加 @HiltAndroidApp 注解,這將告訴 Hilt 應(yīng)用使用 Hilt 進(jìn)行依賴(lài)注入。
@HiltAndroidApp
public class MyApplication extends Application {
...
}
3、創(chuàng)建依賴(lài)注入模塊
在應(yīng)用的依賴(lài)注入模塊中,我們可以使用 @Module 注解來(lái)標(biāo)記一個(gè)類(lèi),表示它是一個(gè)依賴(lài)注入模塊。在這個(gè)類(lèi)中,我們可以使用 @Provides 注解來(lái)標(biāo)記一個(gè)方法,表示它可以提供一個(gè)依賴(lài)項(xiàng)的實(shí)例,這個(gè)模塊提供了一個(gè) Retrofit 實(shí)例,這個(gè)實(shí)例可以在其他地方使用。
@Module
@InstallIn(ApplicationComponent.class)
public class NetworkModule {
@Provides
public static Retrofit provideRetrofit() {
return new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build();
}
}
4、在需要使用依賴(lài)項(xiàng)的類(lèi)中添加 Hilt 注解
在需要使用依賴(lài)項(xiàng)的類(lèi)中,我們可以使用 @AndroidEntryPoint 注解來(lái)標(biāo)記一個(gè)類(lèi),表示它可以接受依賴(lài)注入。在這個(gè)類(lèi)中,我們可以使用 @Inject 注解來(lái)標(biāo)記一個(gè)變量,表示它需要依賴(lài)項(xiàng)的實(shí)例。
@AndroidEntryPoint
public class MyActivity extends AppCompatActivity {
@Inject
Retrofit retrofit;
...
}
在這個(gè)類(lèi)中,我們使用 @Inject 注解來(lái)標(biāo)記 Retrofit 變量,表示它需要一個(gè) Retrofit 實(shí)例。Hilt 將會(huì)自動(dòng)注入這個(gè)變量,這樣我們就可以在這個(gè)類(lèi)中使用 Retrofit 實(shí)例了。