Modul dan Penyedia
Beri tahu Hilt cara membuat dependensi.
Modul dan Penyedia adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.
Memberi Tahu Hilt Cara Membuat Sesuatu
Hilt dapat membuat sebuah class secara otomatis jika konstruktornya diberi anotasi @Inject. Namun, untuk antarmuka atau tipe yang bukan milik Anda, Anda harus memberi tahu Hilt melalui sebuah Module.
Injeksi Konstruktor
Kasus paling sederhana: beri anotasi pada konstruktor, lalu Hilt akan mengetahui cara membuatnya.
class Analytics @Inject constructor(
private val api: ApiService
)Saat Injeksi Konstruktor Tidak Cukup
Anda tidak dapat memberi anotasi pada konstruktor:
- Sebuah antarmuka (tidak memiliki konstruktor).
- Sebuah class dari pustaka (misalnya Retrofit, Room).
Hal-hal tersebut memerlukan modul.
Mendefinisikan Modul
@Module memberi tahu Hilt cara menyediakan tipe. @InstallIn menyatakan komponen (scope) tempat modul tersebut berada.
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule@Provides untuk Tipe Pustaka
Gunakan @Provides pada fungsi yang membuat dan mengembalikan dependensi. Hilt akan memanggilnya saat tipe tersebut dibutuhkan.
@Provides
@Singleton
fun provideRetrofit(): Retrofit =
Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()Provider Dapat Bergantung Satu Sama Lain
Fungsi @Provides dapat menerima parameter; Hilt akan memasoknya dari graf.
@Provides
fun provideApi(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)@Binds untuk Antarmuka
Untuk mengikat antarmuka ke implementasi, gunakan @Binds dalam modul abstrak. Cara ini lebih efisien daripada @Provides untuk pengikatan sederhana.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModule {
@Binds
abstract fun bindRepo(
impl: NetworkUserRepository
): UserRepository
}@Provides vs @Binds
- @Binds — saat Anda hanya memetakan antarmuka ke implementasi yang memiliki injeksi konstruktor. Fungsi abstrak.
- @Provides — saat Anda harus menjalankan kode untuk membuat objek (misalnya builder).
Menentukan Scope dengan @Singleton
Beri anotasi scope seperti @Singleton pada provider agar Hilt menggunakan kembali satu instance untuk seluruh aplikasi, alih-alih membuat instance baru setiap kali.
Menyesuaikan Scope dengan Komponen
Scope harus sesuai dengan komponennya: @Singleton dengan SingletonComponent, @ActivityScoped dengan ActivityComponent, dan seterusnya.
Ringkasan Modul
@Module+@InstallInmenentukan tempat binding berada.@Providesmembuat tipe pustaka/kompleks.@Bindsmemetakan antarmuka ke implementasi.
Pemeriksaan Singkat
Uji pemahaman Anda tentang modul dan provider.
Rangkuman
Anda telah mempelajari:
- Injeksi konstruktor berfungsi ketika Anda memiliki class tersebut.
@Module+@InstallInmemberi tahu Hilt cara menyediakan tipe lainnya.@Providesmembuat objek pustaka/kompleks;@Bindsmemetakan antarmuka.- Sesuaikan scope seperti
@Singletondengan komponennya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Modul dan Penyedia” gratis?
Ya — teks lengkap “Modul dan Penyedia” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Modul dan Penyedia”?
Beri tahu Hilt cara membuat dependensi. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Modul dan Penyedia” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.