Örnek sorular
Kt Jetpack Compose State RecompositionZorluk 1
Bir fonksiyonu @Composable ile işaretlemek gerçekte ne yapar?
- aFonksiyonun composition'a katılıp UI üretmesini sağlar.✓
- bFonksiyonun dönüş değerini kalıcı olarak diske önbelleğe alır.
- cFonksiyonun otomatik olarak bir arka plan thread'inde çalışmasını sağlar.
- dFonksiyonu UIKit tarzı bir delegate callback'ine dönüştürür.
Açıklama:@Composable, Compose derleyicisine bu fonksiyonun UI ağacının bir parçasını tanımladığını ve sadece başka composable fonksiyonlardan (ya da setContent gibi composition-aware giriş noktalarından) çağrılabileceğini bildiren bir işaretleyicidir.
Kt Jetpack Compose State RecompositionZorluk 1
Bir @Composable fonksiyonun içinde doğrudan tanımlanan düz bir var count = 0, neden recomposition'ı atlatamaz?
- a
remember olmadan, değişken her seferinde varsayılana sıfırlanır.✓ - bComposable'lar içinde local değişken kullanımı geçersiz sözdizimidir.
- cKotlin tüm local
varları fonksiyon çağrıları arasında otomatik olarak kalıcı tutar. - dGayet iyi hayatta kalır; recomposition fonksiyon gövdesini asla yeniden çalıştırmaz.
Açıklama:Bir composable fonksiyonun gövdesi recomposition'da yeniden çağrılabilir. Düz bir local varın tek bir çağrı dışında depolaması yoktur, bu yüzden her yeniden çağrıda sıfırlanır; remember, bir değere recomposition'lar arasında hayatta kalan bir slot verir.
Kt Jetpack Compose State RecompositionZorluk 1
mutableStateOf(...)'un temel amacı nedir?
- aSadece bir kez okunabilen ve sonra immutable hale gelen bir değer oluşturur.
- bDeğişiklikte recomposition'ı tetikleyen gözlemlenebilir bir tutucu oluşturur.✓
- cTek seferlik bir arka plan network çağrısı zamanlar.
- dBir değeri doğrudan veritabanına yazılacak şekilde sarar.
Açıklama:mutableStateOf, bir MutableState<T> döndürür. Compose'un snapshot sistemi, composition sırasında .value okumalarını izler; değer değiştiğinde onu okuyan her composable recomposition için zamanlanır.
Kt Jetpack Compose State RecompositionZorluk 1
Neden yalnızca mutableStateOf(0) yerine remember { mutableStateOf(0) } yaygın kalıptır?
- aTek başına
mutableStateOf, bir composable içinde derlenmez. - b
remember, state'i veritabanı-destekli bir değere dönüştürür. - c
remember, recomposition'lar arasında aynı instance'ı korur.✓ - d
remember, state'i başka Activity'lerden okunabilir yapar.
Açıklama:remember olmadan, her recomposition mutableStateOf(0)'ı tekrar çağırır ve 0'a sıfırlanmış yepyeni bir MutableState oluşturur. remember, nesneyi composition ağacındaki bir slot'ta önbelleğe alır, böylece aynı instance recomposition'lar boyunca kalıcı olur.
Kt Jetpack Compose State RecompositionZorluk 2
Bir Text(count.toString()) composable'ı, remember { mutableStateOf(0) }'dan count'u okuyor. Bir butonun onClick'i count++ yapıyor. Tıklamadan hemen sonra ne olur?
- aTüm ekran elle yeniden başlatılana kadar hiçbir şey güncellenmez.
- bTüm uygulama süreci öldürülüp yeniden başlatılır.
- cCompose,
count'u okuyanları recompose eder, Text yeni değeri gösterir.✓ - d
Text composable'ı silinir ve sıfırdan yepyeni bir tane oluşturulur.
Açıklama:Bir MutableState'in .value'sunu değiştirmek (ki count++ bunu delegate aracılığıyla yapar) snapshot sistemini bilgilendirir; Compose ardından son composition'da o state'i okuyan composable'ları tam olarak yeniden çizer.
Kt Jetpack Compose State RecompositionZorluk 2
Bir composable içindeki LaunchedEffect(key)'in genel amacı nedir?
- aInline yeni bir
@Composable fonksiyon tanımlamak. - bEtki bitene kadar UI thread'ini kalıcı olarak bloklamak.
- cComposition'ın lifecycle'ına bağlı bir suspend yan etkisini çalıştırmak.✓
- dBasit integer'lar saklamak için
remember'ın yerini almak.
Açıklama:LaunchedEffect, composition'a bağlı bir coroutine başlatır. Composable composition'a girdiğinde bir kez çalışır (ve key argümanı her değiştiğinde coroutine iptal edilip yeniden başlatılır), bu yüzden composition'dan suspend fonksiyon çağırmanın standart yoludur.