Modul, @Provides & @Binds
Beri tahu Hilt cara membangun tipe Anda.
Modul, @Provides & @Binds adalah pelajaran Jetpack Compose Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Jetpack Compose Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.
Saat Injeksi Konstruktor Belum Cukup
Anda tidak dapat menambahkan @Inject ke konstruktor yang bukan milik Anda, seperti pada instance Retrofit atau OkHttp. Hilt memerlukan cara lain untuk mengetahui cara membuatnya.
Kenali Module
Sebuah module adalah kelas yang mengajarkan Hilt cara membuat tipe yang tidak dapat dibuatnya sendiri. Tandai dengan @Module untuk mendaftarkannya.
@Module
object NetworkModule { }Pasang ke Component
Setiap module menyatakan tempatnya berada dengan @InstallIn. SingletonComponent membuat binding-nya tersedia di seluruh aplikasi selama proses berlangsung.
@Module
@InstallIn(SingletonComponent::class)
object NetworkModuleSediakan Tipe dengan @Provides
@Provides menandai fungsi yang nilai kembalinya akan digunakan Hilt sebagai dependensi. Isi fungsi tersebut menunjukkan cara membuatnya secara tepat.
@Provides
fun provideApi(): ApiService = Retrofit.Builder().build().create(ApiService::class.java)Provides Dapat Menerima Parameter
Fungsi @Provides dapat meminta dependensi lain sebagai parameter. Hilt menyediakannya terlebih dahulu, lalu menjalankan fungsi Anda untuk menyusun hasilnya.
@Provides
fun provideRepo(api: ApiService): Repo = Repo(api)Binding Antarmuka dengan @Binds
Jika Anda hanya perlu memetakan sebuah antarmuka ke implementasi, @Binds lebih sederhana daripada @Provides. Anotasi ini memberi tahu Hilt kelas mana yang memenuhi antarmuka tersebut.
@Binds
abstract fun bindRepo(impl: RepoImpl): Repo@Binds Memerlukan Module Abstrak
Karena method @Binds bersifat abstrak, module-nya harus berupa kelas abstrak, bukan object. Implementasinya juga harus sudah dapat diinjeksi.
@Module
@InstallIn(SingletonComponent::class)
abstract class RepoModuleProvides vs Binds
Gunakan @Binds untuk pemetaan sederhana dari antarmuka ke kelas, dan @Provides saat Anda harus menjalankan kode untuk membuat objek. Binds menghasilkan lebih sedikit kode.
Tandai Singleton
Tambahkan @Singleton ke provider agar Hilt membuat objek sekali dan menggunakannya kembali. Cocok untuk client berat seperti instance OkHttp bersama.
@Provides
@Singleton
fun provideClient(): OkHttpClient = OkHttpClient()Bedakan dengan Qualifier
Jika dua provider mengembalikan tipe yang sama, anotasi @Qualifier membedakan keduanya. Hilt kemudian mengetahui binding mana yang diinginkan setiap titik injeksi.
@Qualifier
annotation class AuthClientModule Membangun Graph
Secara bersama-sama, module Anda membentuk grafik dependensi. Hilt membacanya saat kompilasi dan menyambungkan setiap tipe menjadi struktur yang terhubung serta terverifikasi.
Pemeriksaan Singkat
Anda perlu melakukan binding antarmuka Repo ke satu-satunya kelas RepoImpl. Pilihan mana yang paling sederhana?
Ringkasan: Mengajarkan Hilt untuk Membangun
Anda melihat bahwa module mengajarkan Hilt cara membuat tipe yang tidak dapat dibuatnya sendiri, menggunakan @Provides untuk kode dan @Binds untuk pemetaan antarmuka. 🧩
Belajar Kotlin dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Modul, @Provides & @Binds” gratis?
Ya — teks lengkap “Modul, @Provides & @Binds” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Jetpack Compose Academy, upgrade ke CoddyKit PRO. Kursus Jetpack Compose Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Modul, @Provides & @Binds”?
Beri tahu Hilt cara membangun tipe Anda. Kamu berlatih Jetpack Compose 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 Jetpack Compose Academy?
Tidak diperlukan pengalaman sebelumnya. Jetpack Compose 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 2 dari 4.
Berapa lama pelajaran “Modul, @Provides & @Binds” 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 Jetpack Compose Academy ini?
Ya. Setiap pelajaran Jetpack Compose 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.
Semua pelajaran dalam kursus ini
- Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat
- Modul, @Provides & @Binds
- hiltViewModel & @HiltViewModel
- Scope & Masa Hidup Komponen