Hướng Dẫn Triển Khai Hilt Dagger Trong Dự Án Android Với Kotlin
Hilt là một thư viện Dependency Injection (DI) được phát triển bởi Google, dựa trên Dagger, nhằm đơn giản hóa quá trình sử dụng DI trong các ứng dụng Android. Bài viết này sẽ hướng dẫn bạn từng bước từ cài đặt Hilt đến áp dụng thực tế trong dự án Android của bạn.
1. Tại Sao Nên Sử Dụng Hilt?
Trước khi đi vào chi tiết triển khai Hilt, có một số lý do chính để bạn xem xét việc áp dụng Hilt trong dự án của mình:
- Đơn giản hóa DI: Hilt giúp việc cấu hình và sử dụng Dependency Injection dễ dàng hơn so với Dagger truyền thống. Điều này đặc biệt hữu ích cho những ai mới bắt đầu với concept DI.
- Tích hợp sâu với Android: Hilt cung cấp các annotation tối ưu cho các thành phần Android như Activity, Fragment và ViewModel, giúp việc tiêm phụ thuộc trở nên dễ dàng và trực quan hơn.
- Quản lý vòng đời hiệu quả: Hilt tích hợp chặt chẽ với lifecycle của Android, giúp bạn quản lý vòng đời của các dependency một cách hiệu quả và an toàn hơn.
2. Cài Đặt Hilt Trong Dự Án Android
Để sử dụng Hilt, trước tiên bạn cần thực hiện một số bước cài đặt đơn giản:
Bước 1: Thêm Dependency Vào Tệp build.gradle Của Project
Bạn cần thêm các dependency cần thiết bằng cách mở tệp build.gradle cấp project:
gradle
buildscript {
ext.hilt_version = '2.42'
dependencies {
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Bước 2: Thêm Plugin và Dependency Vào Tệp build.gradle Của Module
Tiếp theo, mở tệp build.gradle của module (thường là app) và thêm các plugin cũng như dependency sau:
gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
dependencies {
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
}
Bước 3: Kích Hoạt Hilt Trong Ứng Dụng
Cuối cùng, bạn cần kích hoạt Hilt trong ứng dụng của mình bằng cách thêm annotation dưới đây vào lớp Application:
kotlin
@HiltAndroidApp
class MyApplication : Application() {
}
3. Triển Khai Hilt Trong Các Thành Phần Android
Để sử dụng Hilt trong các thành phần của ứng dụng Android, bạn có thể tham khảo các ví dụ sau:
Triển Khai Hilt Trong Activity
kotlin
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var myDependency: MyDependency
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Sử dụng myDependency ở đây
}
}
Triển Khai Hilt Trong Fragment
kotlin
@AndroidEntryPoint
class MyFragment : Fragment() {
@Inject lateinit var myDependency: MyDependency
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Sử dụng myDependency ở đây
return inflater.inflate(R.layout.fragment_my, container, false)
}
}
Triển Khai Hilt Trong ViewModel
Để tạo ViewModel với Hilt:
kotlin
@HiltViewModel
class MyViewModel @Inject constructor(
private val myRepository: MyRepository
) : ViewModel() {
// Logic của ViewModel
}
Sử Dụng ViewModel Trong Activity hoặc Fragment
kotlin
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
// Sử dụng viewModel ở đây
}
}
4. Tạo Module Hilt Để Cung Cấp Dependency
Modules trong Hilt được sử dụng để cung cấp các dependency cho ứng dụng của bạn. Dưới đây là ví dụ về cách tạo một module:
kotlin
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
@Singleton
fun provideMyRepository(apiService: ApiService): MyRepository {
return MyRepositoryImpl(apiService)
}
@Provides
@Singleton
fun provideApiService(): ApiService {
return Retrofit.Builder()
.baseUrl("https://api.example.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(ApiService::class.java)
}
}
5. Kết Luận
Hilt là một công cụ mạnh mẽ giúp đơn giản hóa việc quản lý Dependency Injection trong các dự án Android. Việc triển khai Hilt không chỉ giúp mã nguồn gọn gàng và dễ hiểu hơn, mà còn giúp bạn mở rộng và bảo trì ứng dụng hiệu quả hơn trong tương lai. Chúng tôi hy vọng rằng qua bài viết này, bạn đã nắm vững những bước cơ bản để triển khai Hilt cho dự án Android của mình.
source: viblo