ToB企服应用市场:ToB评测及商务社交产业平台
标题:
在 Android 应用中利用 Hilt
[打印本页]
作者:
梦见你的名字
时间:
昨天 12:30
标题:
在 Android 应用中利用 Hilt
依赖注入(DI,Dependency Injection)是当代 Android 开发中提高代码可维护性和可测试性的紧张工具。Hilt 是 Google 推出的一个基于 Dagger 的依赖注入框架,它简化了 DI 在 Android 应用中的利用。
在本文中,我们将详细先容如何在 Android 项目中利用 Hilt,包罗其基本概念、利用方式以及一些进阶用法。
1. 为什么利用 Hilt?
在 Android 应用开发中,随着项目规模的增长,类之间的依赖关系会变得复杂。如果手动管理依赖,会导致代码耦合度过高,不利于测试和维护。而 Hilt 通过注解和自动天生代码的方式帮助我们管理依赖关系,使得代码更加清楚、可复用。
2. 配置 Hilt
首先,我们必要在项目中添加 Hilt 依赖。
步骤 1:修改 build.gradle.kts(Project 级别)
plugins {
id("com.google.dagger.hilt.android") version "2.48" apply false
}
复制代码
步骤 2:修改 build.gradle.kts(App 级别)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.dagger.hilt.android")
}
dependencies {
implementation("com.google.dagger:hilt-android:2.48")
kapt("com.google.dagger:hilt-android-compiler:2.48")
}
android {
compileOptions {
sourceCompatibility(JavaVersion.VERSION_17)
targetCompatibility(JavaVersion.VERSION_17)
}
}
复制代码
步骤 3:在 Application 类中启用 Hilt
@HiltAndroidApp
class MyApp : Application()
复制代码
这一步告诉 Hilt 这个应用必要利用依赖注入,并在应用的生命周期中举行初始化。
3. 利用 Hilt 举行依赖注入
Hilt 主要利用 @Inject 和 @Module 注解来提供依赖。
(1)利用 @Inject 直接注入依赖
class Engine @Inject constructor() {
fun start() = "引擎启动..."
}
复制代码
(2)在 Activity 或 Fragment 中利用 Hilt
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var engine: Engine
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
println(engine.start())
}
}
复制代码
(3)利用 @Module 和 @Provides 提供依赖
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun provideEngine(): Engine {
return Engine()
}
}
复制代码
4. 进阶用法
(1)在 ViewModel 中利用 Hilt
@HiltViewModel
class MyViewModel @Inject constructor(
private val engine: Engine
) : ViewModel() {
fun startEngine() = engine.start()
}
复制代码
(2)在 Repository 中利用 Hilt
class Repository @Inject constructor(private val apiService: ApiService) {
fun fetchData(): String {
return apiService.getData()
}
}
复制代码
(3)测试中的依赖注入
@HiltAndroidTest
@RunWith(AndroidJUnit4::class)
class MyTest {
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Inject
lateinit var repository: Repository
@Test
fun testFetchData() {
assert(repository.fetchData() == "测试数据")
}
}
复制代码
5. 结论
通过 Hilt,我们可以轻松管理 Android 应用中的依赖关系,淘汰代码耦合,提高代码的可维护性和可测试性。掌握 Hilt 的基本利用方法后,你可以结合自己的业务场景,灵活地利用 Hilt 举行依赖注入,让代码更加清楚、优雅!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4