Android項(xiàng)目中使用Hilt

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í)例了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容