collectAsStateWithLifecycle
Akışları yaşam döngüsüyle güvenli biçimde toplayın.
collectAsStateWithLifecycle, 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.
Akışları Güvenle Toplama
Bir oluşturulabilir bileşen akış toplarken, ekran arka plandayken ideal olarak toplamayı durdurmalı ve ekran geri geldiğinde sürdürmelidir.
Bunun için kullanılan araç collectAsStateWithLifecycle() işlevdir.
collectAsState ile İlgili Sorun
Basit collectAsState(), oluşturulabilir bileşen oluşum içinde olduğu sürece toplamaya devam eder — uygulama arka planda olsa bile.
Bu, kaynakları boşa harcayabilir ve kullanıcının göremediği güncellemeleri işleyebilir.
collectAsStateWithLifecycle Kullanımı
Bu yaşam döngüsünü dikkate alan toplayıcı, yaşam döngüsü hedef durumun (varsayılan olarak STARTED) altına düştüğünde toplamayı duraklatır ve geri döndüğünde sürdürür.
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@Composable
fun Screen(vm: MyViewModel) {
val state by vm.uiState
.collectAsStateWithLifecycle()
Text(state.title)
}Bağımlılık
Bu, androidx.lifecycle:lifecycle-runtime-compose yapısında bulunur. İçe aktarmanın çözümlenmesi için bunu modülünüze ekleyin.
// build.gradle (module)
implementation(
"androidx.lifecycle:lifecycle-runtime-compose:2.x.x"
)Varsayılan En Düşük Durum: STARTED
Varsayılan olarak toplama, yaşam döngüsü en az STARTED durumundayken etkindir — yani ekran görünürdür. Ekran arka plana geçtiğinde (STARTED'ın altına indiğinde) toplama askıya alınır.
En Düşük Durumu Özelleştirme
Eşiği minActiveState ile değiştirebilirsiniz; örneğin RESUMED yapabilirsiniz.
val state by vm.uiState.collectAsStateWithLifecycle(
minActiveState = Lifecycle.State.RESUMED
)StateFlow ile Birlikte Kullanma
Bu, bir ViewModel'den dışa aktardığınız StateFlow ile kusursuz biçimde çalışır. Akış her zaman güncel bir değere sahip olduğundan, yeniden toplama en son durumu anında gösterir.
private val _uiState = MutableStateFlow(UiState())
val uiState = _uiState.asStateFlow()Çalışmayı Neden Azaltır
Akışınız maliyetli bir hesaplamayı (büyük bir listeyi filtreleme veya akışları dönüştürme gibi) yönlendiriyorsa, arka planda toplamayı askıya almak bu çalışmanın kullanıcı uzaktayken hiç yapılmaması anlamına gelir.
viewModelScope ile Birleştirme
Üretici tarafında ViewModel, veri işlem hattını genellikle viewModelScope içinde çalıştırır. stateIn ile, toplayıcı olmadığında üst akışın durmasını bile sağlayabilirsiniz.
val uiState = repository.stream()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5000),
initialValue = UiState()
)WhileSubscribed Açıklaması
WhileSubscribed(5000), son toplayıcı ayrıldıktan sonra üst akışı 5 saniye canlı tutar. Böylece kısa yapılandırma değişiklikleri sırasında çalışmanın yeniden başlatılması önlenirken kullanıcı gerçekten ayrıldığında çalışma durdurulur.
En İyi Uygulama Özeti
ViewModel tarafından desteklenen Compose ekranları için:
- Bir
StateFlowdışa aktarın. collectAsStateWithLifecycle()ile toplayın.- İsteğe bağlı olarak üst akışta
stateIn(WhileSubscribed)kullanın.
Hızlı Kontrol
Yaşam döngüsünü dikkate alan toplama konusundaki anlayışınızı test edin.
Özet
Şunları öğrendiniz:
collectAsStateWithLifecycle(), arka planda toplamayı duraklatır.- Varsayılan eşik STARTED durumudur ve
minActiveStateile değiştirilebilir. - Verimli bir işlem hattı için bunu bir
StateFlowvestateIn(WhileSubscribed)ile birlikte kullanın.
Sıkça Sorulan Sorular
“collectAsStateWithLifecycle” dersi ücretsiz mi?
Evet — “collectAsStateWithLifecycle” 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.
“collectAsStateWithLifecycle” dersinde ne öğreneceğim?
Akışları yaşam döngüsüyle güvenli biçimde toplayı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.
“collectAsStateWithLifecycle” 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
- Neden ViewModel Kullanılır
- ViewModel'den Durum Sunma
- Android Yaşam Döngüsü
- collectAsStateWithLifecycle