ViewModel'lere Enjeksiyon
Temiz enjeksiyon için @HiltViewModel kullanın.
ViewModel'lere Enjeksiyon, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
ViewModel'lere Hilt ile Enjeksiyon
ViewModel'ler özeldir: Çerçeve onları bir fabrika aracılığıyla örneklendirir. Hilt, @HiltViewModel açıklaması sayesinde bu süreçle bütünleşir.
ViewModel'i Açıklamayla İşaretleme
ViewModel'i @HiltViewModel ile, kurucusunu da @Inject ile işaretleyin.
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel()Hilt Ne Sağlar?
Hilt, her kurucu parametresini bağımlılık grafiğinde arar. UserRepository bir modül veya kurucu enjeksiyonu aracılığıyla bağlandığı sürece Hilt onu otomatik olarak sağlar.
Compose'ta Alma
Hilt tarafından sağlanan bir ViewModel elde etmek için bir Composable içinde hiltViewModel() kullanın.
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun UserScreen(
vm: UserViewModel = hiltViewModel()
) {
val state by vm.uiState
.collectAsStateWithLifecycle()
}Ana Makine Bir Giriş Noktası Olmalıdır
hiltViewModel()'in çalışması için barındıran Activity'nin @AndroidEntryPoint ile işaretlenmiş olması gerekir. Bu, Compose'u Hilt grafiğine bağlar.
@AndroidEntryPoint
class MainActivity : ComponentActivity()Diğer Bağımlılıkları Enjekte Etme
Grafikteki her şeyi enjekte edebilirsiniz: depoları, kullanım senaryolarını ve hatta bir modül tarafından sağlanan Room veritabanını.
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getUsers: GetUsersUseCase,
private val analytics: Analytics
) : ViewModel()Application Context Enjeksiyonu
Bir bağlama mı ihtiyacınız var? Nitelikli uygulama bağlamını @ApplicationContext ile enjekte edin.
@HiltViewModel
class PrefsViewModel @Inject constructor(
@ApplicationContext private val context: Context
) : ViewModel()SavedStateHandle
Hilt, gezinme bağımsız değişkenlerini taşıyan ve işlem sonlandırılmasından sonra varlığını koruyan SavedStateHandle nesnesini otomatik olarak sağlar.
@HiltViewModel
class DetailViewModel @Inject constructor(
handle: SavedStateHandle
) : ViewModel() {
val id: Int = handle.get<Int>("id") ?: 0
}Eksiksiz Bağlantı
Baştan sona: Modül depoyu sağlar → Hilt onu ViewModel'e enjekte eder → Compose, ViewModel'i hiltViewModel() aracılığıyla alır. Hiçbir yerde manuel fabrika gerekmez.
Manuel Fabrika Kodu Yok
Hilt olmasaydı, kurucu bağımsız değişkenlerine ihtiyaç duyan her ViewModel için özel bir ViewModelProvider.Factory yazmanız gerekirdi. @HiltViewModel bunların tamamını ortadan kaldırır.
Öğrendiklerinizi Birleştirme
Artık eksiksiz ve modern yığına sahipsiniz: ViewModel + yaşam döngüsünü dikkate alan durum, Room kalıcılığı, eş yordamlar ve Flow; hepsi Hilt DI ile birbirine bağlanmış durumda.
Hızlı Kontrol
ViewModel'lere enjeksiyon konusundaki anlayışınızı sınayın.
Özet
Şunları öğrendiniz:
@HiltViewModel+@Injectkurucusu, Hilt'in ViewModel'leri oluşturmasını sağlar.- Bunları Compose'ta, bir
@AndroidEntryPointana makinesi içindekihiltViewModel()ile elde edin. - Depoları,
@ApplicationContextveSavedStateHandlenesnelerini enjekte edin. - Manuel fabrika gerekmez.
Sıkça Sorulan Sorular
“ViewModel'lere Enjeksiyon” dersi ücretsiz mi?
Evet — “ViewModel'lere Enjeksiyon” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“ViewModel'lere Enjeksiyon” dersinde ne öğreneceğim?
Temiz enjeksiyon için @HiltViewModel kullanın. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“ViewModel'lere Enjeksiyon” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bağımlılık Enjeksiyonu Neden Kullanılır
- Hilt Kurulumu
- Modüller ve Sağlayıcılar
- ViewModel'lere Enjeksiyon