Jetpack Compose Academy · Pelajaran

Modul, @Provides & @Binds

Beri tahu Hilt cara membangun tipe Anda.

Pelajaran 2 dari 413 langkah

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 NetworkModule

Sediakan 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 RepoModule

Provides 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 AuthClient

Module 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. 🧩

Gratis untuk memulai

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

  1. Mengapa DI: Kode yang Mudah Diuji dan Tidak Terikat
  2. Modul, @Provides & @Binds
  3. hiltViewModel & @HiltViewModel
  4. Scope & Masa Hidup Komponen
← Kembali ke Jetpack Compose Academy