Compose çalışma zamanı
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(Tüm Compose paketleri için API referans dokümanlarına bakın)
| Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
|---|---|---|---|---|
| 19 Kasım 2025 | 1.9.5 | 1.10.0-rc01 | - | - |
Yapı
Compose, androidx içindeki 7 Maven Group kimliğinin birleşimidir. Her grup, kendi sürüm notları kümesine sahip, hedeflenen bir işlevsellik alt kümesini içerir.
Bu tabloda gruplar açıklanmakta ve her bir sürüm notu grubuna bağlantı verilmektedir.
| Grup | Açıklama |
|---|---|
| compose.animation | Kullanıcı deneyimini zenginleştirmek için Jetpack Compose uygulamalarında animasyonlar oluşturun. |
| compose.compiler | @Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin. |
| compose.foundation | Kullanıma hazır yapı taşlarıyla Jetpack Compose uygulamaları yazın ve kendi tasarım sistemi parçalarınızı oluşturmak için temeli genişletin. |
| compose.material | Kullanıma hazır Materyal Tasarım bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, www.material.io adresinde açıklanan bileşenleri sağlamak üzere tasarlanmış, Compose'un daha üst düzey giriş noktasıdır. |
| compose.material3 | Materyal Tasarım'ın bir sonraki evrimi olan Materyal Tasarım 3 bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Material 3; güncellenmiş temalar ve bileşenler, dinamik renk gibi Material You kişiselleştirme özelliklerini içerir. Ayrıca yeni Android 12 görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlanmıştır. |
| compose.runtime | Compose'un programlama modeli ve durum yönetiminin temel yapı taşları ve Compose Compiler Plugin'in hedefleyeceği temel çalışma zamanı. |
| compose.ui | Düzen, çizim ve giriş dahil olmak üzere cihazla etkileşim kurmak için gereken temel Compose kullanıcı arayüzü bileşenleri. |
Bağımlılıkları bildirme
Compose'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.9.5" implementation "androidx.compose.runtime:runtime-livedata:1.9.5" implementation "androidx.compose.runtime:runtime-rxjava2:1.9.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.9.5") implementation("androidx.compose.runtime:runtime-livedata:1.9.5") implementation("androidx.compose.runtime:runtime-rxjava2:1.9.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Çalışma Zamanı İzleme Sürümü 1.7
Sürüm 1.7.0-rc01
18 Eylül 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01 iptal edilir. 1.7.0-rc01 sürümü bu commit'leri içerir.
Çalışma Zamanı İzleme Sürümü 1.0
Sürüm 1.0.0-beta01
29 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Sürüm 1.0.0-alpha05
15 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.compose-runtime ve tracing-perfetto) sabitlendi. Böylece, compose-runtime-tracing'in uygulamaya compose-runtime'ın daha yeni bir sürümünü getirmesine neden olan sorun düzeltildi.
Sürüm 1.0.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Benchmark ve Tracing Perfetto'nun en yeni sürümleriyle uyumludur. Bu sayede, uygulama başlatılırken (soğuk başlatma) AndroidX Benchmark ve Android Studio'da (Hedgehog Beta 2'den itibaren) Composition Tracing desteği sağlanır.
API Değişiklikleri
androidx.tracing.perfetto.Trace,androidx.tracing.perfetto.PerfettoSdkTraceolarak yeniden adlandırıldı. (I44af8)- Tracing Perfetto SDK API'lerini
android.os.Traceile tutarlı hale getirme. (I73ba0, b/282199917) - Uygulama başlatılırken izleme için ön koşullar. (Iad890)
- Deneysel ve herkese açık API dosyaları birleştirildi (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
- İşlevsel değişiklik yok. Aşağı akış bağımlılıklarında birden fazla performans optimizasyonu
androidx.tracing:tracing-perfetto*.
Sürüm 1.0.0-alpha01
7 Eylül 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing, destekleyen araçlar (çok yakında kullanıma sunulacak) olduğunda Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. Bu ilk sürüm 1.0.0-alpha01'dir.
Sürüm 1.10
Sürüm 1.10.0-rc01
19 Kasım 2025
androidx.compose.runtime:runtime-*:1.10.0-rc01 iptal edilir. 1.10.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
SnapshotStateObserveriçinde türetilmiş durumlar kaydedilirken yeniden girişli değişikliğe karşı koruma (I7b862, b/435655844, b/456249373, b/402535073)- [Lint] Algılayıcının bileşik atama konusunda düzgün şekilde uyarı vermesini sağlamak için küçük bir hata düzeltildi. (I08319, b/456775556)
Sürüm 1.10.0-beta02
5 Kasım 2025
androidx.compose.runtime:runtime-*:1.10.0-beta02 iptal edilir. 1.10.0-beta02 sürümü bu commit'leri içerir.
API Değişiklikleri
RetainedValuesStorekurulumunu ve yönetimini kolaylaştırmak için API ile uyumlu olmayan çeşitli değişiklikler yaptık.retainveRetainedEffectiçin yapılan mevcut aramalar etkilenmez ancak özelRetainedValuesStore'lerin bu sürümle uyumlu olması için taşınması gerekir. (If3c2f, b/451921682, b/450539803)RetainedValuesStoreartık saklama başlatma/durdurma için düşük düzeyli API'ler sunmuyor. Saklama durumu artık içeriği otomatik olarak takip ediyor.LocalRetainedValuesStoreProviderartıkRetainedValuesStoreyükleme seçeneği sunuyor.LocalRetainedValuesStoredoğrudan sağlanmamalıdır. Bu değişiklikler hakkında daha fazla bilgi için güncellenen dokümanlara ve örneklere göz atın.RetainedValuesStoreProvider,RetainedValuesStoreRegistryolarak yeniden adlandırıldı. Bu sınıf artık yalnızca kompozisyondakiRetainedValuesStoreleri yüklemek ve yönetmek için API'leri kullanıma sunuyor.ControlledRetainedValuesStore,ManagedRetainedValuesStoreile değiştirildi.RetainedValuesStoreartık bir arayüz.
Daha önce, özel bir RetainedValuesStore yükleme işlemi aşağıdaki gibi görünüyordu:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
Bu API değişiklikleriyle birlikte, bu yükleme işlemi bunun yerine aşağıdaki kodla ifade edilebilir:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
Hata Düzeltmeleri
- Taşınabilir içerik, yuva tablosundan taşınmadan önce kapsamın geçersiz kılınmalarını aktarır (I9d123, b/451651649).
Sürüm 1.10.0-beta01
22 Ekim 2025
androidx.compose.runtime:runtime-*:1.10.0-beta01 iptal edilir. 1.10.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
RetainedValuesStore.getExitedValueOrDefault,RetainedValuesStore.getExitedValueOrElseolarak yeniden adlandırıldı (If9653, b/452340613)isKeepingExitedValues,isRetainingExitedValuesolarak yeniden adlandırıldı (I660bf, b/437095756)RetainScope,RetainedValuesStoreolarak yeniden adlandırıldı.RetainScopeHolder,RetainedValuesStoreRegistryolarak yeniden adlandırıldı.RetainScopeHolder.RetainScopeProvider,RetainedValuesStoreRegistry.ProvideChildRetainedValuesStoreolarak yeniden adlandırıldı. (Idf23a, b/437095756)
Hata Düzeltmeleri
SaveableStateRegistryiçindeSavedStateöğesinin ilk kullanıma kadar başlatılması geciktirilir. (Ic0a93)
Sürüm 1.10.0-alpha05
8 Ekim 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha05 iptal edilir. 1.10.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yayın modunda
DiagnosticComposeExceptioniçin yığın izini doldurun. (Ib76cb) - Anlık görüntü durumunda, bir tür için birleştirme politikası kullanıldığında önceki değerin yanlış hesaplanmasına ve önceki değer yerine durumun gelecekteki değerinin döndürülmesine neden olabilen bir sorun düzeltildi. Bu durum, ikiden fazla değiştirilebilir anlık görüntü beklemedeyse ve uygulanan değerlerden en az birinde birleştirme politikası varsa ortaya çıkar. (I527b5, b/442791065)
Sürüm 1.10.0-alpha04
24 Eylül 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha04 iptal edilir. 1.10.0-alpha04 sürümü bu commit'leri içerir.
API Değişiklikleri
RetainScopeHolderkoleksiyonunu yönetmek içinRetainScopeHolderAPI'si eklendi.RetainScopesBu özellik, farklı elde tutma sürelerine sahip birçok alt öğeden oluşan kapsayıcılar ve gezinme ana makineleri için elde tutma özelliğini uygulamak amacıyla kullanılabilir. (I10e0f)- Daraltılabilir paneller (If81f6) gibi kaybolan içerikler için otomatik olarak yönetilen
RetainScopesoluşturmak üzere kullanılabilecekRetainedContentHostveretainControlledRetainScopeAPI'leri eklendi. Updater#set, sağlanan değeri çok fazla kez kutuladığından satır içi aşırı yüklemesi kullanımdan kaldırıldı.Updater#initişlevine, yakalama lambdası gerektirmeyen bir parametre alan aşırı yükleme eklendi. (Id679e)RetainedEffectişlevini kullanıma sunar. Bu işlev,DisposableEffectişlevine benzer bir yan etki API'sidir ve kompozisyon yaşam döngüsü yerine saklama yaşam döngüsünü takip eder. Bu API,RetainObserveröğesini uygulamayan veya uygulayamayan başka bir nesnenin tutulmasıyla ilişkili efektler için kullanılmak üzere tasarlanmıştır. (I1c61f, b/177562901)RetainObserver.onRetainedile ilgili belgeler düzeltildi veRememberObserver.onAbandoned'yi yansıtanRetainObserver.onUnusedeklendi (Ia6fc5).
Hata Düzeltmeleri
- Bir işlevdeki (ör. composable çağrısı) ilk gruptan sonra ve
onForgotten'ı yanlış sırada gönderebilecek, kaldırılabilen bir gruptan (ör.ififadesi) önce hatırlama gönderme sorunu düzeltildi. (I453f6, b/346821372) LaunchedEffectbaşlatılırken coroutine bağlamı geçişinden kaçınılır. (I8d2c3b)
Sürüm 1.10.0-alpha03
10 Eylül 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha03 iptal edilir. 1.10.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Küçültülmüş uygulamalarda çalışan, grup anahtarı tabanlı Compose yığın izlemelerini kullanıma sunar. Bu izlemeler için ProGuard eşlemesi, Kotlin 2.3.0'dan itibaren Compose derleyici Gradle eklentisi tarafından oluşturulur. Bu yığın izleri varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
ComposeStackTraceMode.GroupKeyssimgesini kullanın. (Ifbcb5) - Araçlar için
IdentifiableRecomposeScopearayüzü ekleyin (Idd5e0, b/434194620) CompositionLocalContextiçeren kompozisyonlarda gereksiz geçersiz kılmaların oluşması önlendi (I3fa21, b/412750209)
Hata Düzeltmeleri
- Belgelerde ve araçlarda, tutulması için iletilen anahtarların da tutulduğu netleştirildi. Bellek sızıntısına neden olacak şekilde saklanacak anahtarlar iletmeyin. (Ib553b, b/177562901)
- Duraklatılmış bir kompozisyonun
resume()işlevi farklı bir iş parçacığında çağrıldığında, bekleyen bildirimlerin durumu ana iş parçacığı duraklatılabilir kompozisyonu bir sonraki kare için yeniden oluşturmaya çalıştığında karışabiliyordu. Bu sorun düzeltildi. (Ie5f17, b/442649894) - Bestede yakalanan istisnaları günlüğe kaydetme. (I47d78, b/432799675, b/436878515, b/359623674, b/400436355)
Sürüm 1.10.0-alpha02
27 Ağustos 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha02 iptal edilir. 1.10.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
- Kaynak sızdırabilecekleri için
retainAPI ile kullanılmaması gereken türleri açıklama eklemek için kullanılabilecek@DoNotRetaineklendi. (Ie5435) - Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir. (Idb6b5)
Hata Düzeltmeleri
- İçerik, bir kompozisyonun kök düğümünü değiştirdiğinde, Applier'a yönelik işlemleri doğru şekilde hesaplamak için taşınabilir içerik düzeltildi. Taşınabilir içerikteki değişiklikler hesaplanırken
up()çağrısı bekletilebilir ve uygulayıcıya gönderilmeyebilir. Bu durum, uygulayıcı durumunun sonraki kullanımlar için yanlış konumlandırılmasına neden olur. (I7c583), (I47b70) - Kullanılması amaçlanmadığı için
CheckResultişaretini kullanımdan kaldırılmış olarak işaretler. (I32934)
Sürüm 1.10.0-alpha01
13 Ağustos 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha01 iptal edilir. 1.10.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Retain API'si kullanıma sunuldu.
rememberSaveablegibi, retain, kompozisyon hiyerarşisinden ayrılan hatırlanan değerleri kalıcı hale getirebilir ve kaydedebilir. Saklanan değerler serileştirilmez, kaydedilen değerlerden daha kısa ömürlüdür ve androidxViewModel'ya benzer şekilde davranır. Daha fazla ayrıntı için belgelere bakın. (Ia3105, b/177562901) - Recomposer, mevcut karenin oluşturulmasını tamamladığında geri çağırma işlemi yapan bir
awaitOrScheduleNextCompositionEnd()API'si eklendi. Recomposer şu anda bir çerçeve oluşturmuyorsa bu API, bir sonraki çerçevenin oluşturulması tamamlanana kadar askıya alınır ve oluşturulacak yeni bir çerçeve planlar. (Ib873c) - Bir birim döndürmeyen kompozisyon yerel sağlayıcı API'si ekleyin (I22521, b/271871288)
- İçerik ilk oluşturulurken ek yükü önlemek için taşınabilir içeriğin kullanımının izlenmesine olanak tanıyan bir özellik işareti (
isMovableContentUsageTrackingEnabled) eklendi. Bu özellik bayrakları şu anda varsayılan olarak devre dışıdır. (Ia713d)
Hata Düzeltmeleri
- Alt kompozisyonlar arasında taşınan hareketli içeriklerdeki kilitlenme sorunu düzeltildi. (I3fa1e, b/436858107)
- İç içe yerleştirilmiş birden fazla alt kompozisyonun içinde bulunulduğunda, composable yığın izinin bir bölümünün eksik olmasına neden olan hata düzeltildi. (I98c6f)
- Varsayılan minSdk'nın API 21'den API 23'e taşınması (Ibdfca, b/380448311, b/435705964, b/435705223)
- Durdurulabilir bir kompozisyonun iç durumu birden fazla iş parçacığından güncellenirken oluşan yarış durumu düzeltildi. (I03895)
- Bileşen kaydı gözlemcisini, ilk bileşenden önce çağrılacak şekilde günceller. (I4adca, b/430600932)
AutoboxingStateValuePropertyDetectoruygulamasının hem K1 hem de K2 ile uyumlu olması için küçük bir hata düzeltildi. (Ie81c1)
Harici Katkı (External Contribution)
- runtime-rxjava2 yapısını çok platformlu hale getirin ve JVM'yi desteklenen hedef olarak ekleyin. (I5409e)
- runtime-rxjava3 yapıtını çok platformlu hale getirin ve JVM'yi desteklenen hedef olarak ekleyin. (I97e84)
Sürüm 1.9
Sürüm 1.9.5
19 Kasım 2025
androidx.compose.runtime:runtime-*:1.9.5 iptal edilir. 1.9.5 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Taşınabilir içerik, yuva tablosundan taşınmadan önce kapsamın geçersiz kılınmalarını aktarır (I9d123, b/451651649).
Sürüm 1.9.4
22 Ekim 2025
androidx.compose.runtime:runtime-*:1.9.4 iptal edilir. 1.9.4 sürümü bu commit'leri içerir.
Sürüm 1.9.3
8 Ekim 2025
androidx.compose.runtime:runtime-*:1.9.3 iptal edilir. 1.9.3 sürümü bu commit'leri içerir.
Sürüm 1.9.2
24 Eylül 2025
androidx.compose.runtime:runtime-*:1.9.2 iptal edilir. 1.9.2 sürümü bu commit'leri içerir.
Sürüm 1.9.1
10 Eylül 2025
androidx.compose.runtime:runtime-*:1.9.1 iptal edilir. 1.9.1 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Oluşturma sürecinde olan kompozisyonları yeniden oluşturmaktan kaçının. (Iacb01)
- Yeniden oluşturma kapsamlarının iki kez duraklatılmasını önleme. (I060b2, b/431584881)
Sürüm 1.9.0
13 Ağustos 2025
androidx.compose.runtime:runtime-*:1.9.0 iptal edilir. 1.9.0 sürümü bu commit'leri içerir.
1.8.0 sürümünden beri yapılan önemli değişiklikler
- Compose ile birlikte gelen Lint kontrolleri artık minimum AGP sürümü olarak 8.8.2'yi gerektiriyor. AGP'yi yükseltemiyorsanız bunun yerine gradle.properties dosyanızda
android.experimental.lint.version=8.8.2(veya daha yeni bir sürüm) kullanarak Lint'i tek başına yükseltebilirsiniz. IDE'de Compose lint kontrollerini çalıştırmak için Android Studio Ladybug veya daha yeni bir sürüm gerekir. - Yeni bir çalışma zamanı ek açıklaması kitaplığı oluşturuldu. Bu kitaplık, Compose çalışma zamanına bağımlı olmayan ek açıklama tanımlarını içerir. Bu nedenle, Compose dışı modüllerden kullanılabilir.
@Stable,@Immutableve@StableMarker, Compose olmayan modüllere açıklama eklenmesine olanak tanımak için çalışma zamanı açıklamasına taşındı@FrequentlyChangingValueve@RememberInComposition, runtime-annotation'a eklendi.@FrequentlyChangingValue, sık sık yeniden oluşturmaya neden olabilecek bildirimleri,@RememberInCompositionise oluşturmada hatırlanması gereken bildirimleri işaretler. İlgili lint kontrolleri, yanlış kullanım konusunda uyarı verir.
Sürüm 1.9.0-rc01
30 Temmuz 2025
androidx.compose.runtime:runtime-*:1.9.0-rc01 iptal edilir. 1.9.0-rc01 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Bileşen kaydı gözlemcisini, ilk bileşenden önce çağrılacak şekilde günceller. (I4adca, b/430600932)
Sürüm 1.9.0-beta03
16 Temmuz 2025
androidx.compose.runtime:runtime-*:1.9.0-beta03 iptal edilir. 1.9.0-beta03 sürümü bu commit'leri içerir.
Sürüm 1.9.0-beta02
2 Temmuz 2025
androidx.compose.runtime:runtime-*:1.9.0-beta02 iptal edilir. 1.9.0-beta02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yuva tablosundaki değerlerin kompozisyonlar arasındaki referans ömrü azaltıldı. Bir yuva tablosundaki referansın gerekenden bir kare daha uzun sürdüğü durumlar olabilir. (I49e74, b/418516940)
- Anında yeniden yükleme yöntemleri için Kotlin ad değişikliğini kaldırın. (Ic56a3, b/426871325)
Sürüm 1.9.0-beta01
18 Haziran 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01 iptal edilir. 1.9.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
- Compose derleyicisi tarafından eklenen kaynak bilgilerini ayrıştırmak için bir araç API'si eklendi. (Iceaf9, b/408492167)
SnapshotStateSetartık Android'deParcelable'yi uyguluyor. Bu nedenle,rememberSaveable { ... }'nin bir parçası olarak kullanılması destekleniyor. (I755dd, b/378623803)SnapshotStateListartık Android'deParcelable'yi uyguluyor. Bu nedenle,rememberSaveable { ... }'nin bir parçası olarak kullanılması destekleniyor. (Id18be, b/378623803)movableContentOf()artık@RememberInCompositionaçıklamasıyla işaretleniyor. Bu sayede lint, yanlış kullanımları (I2738d) yakalayabiliyor.- Yeniden oluşturma nedenlerinin daha kapsamlı bir şekilde gözlemlenmesine olanak tanımak için deneysel kompozisyon gözlemcileri API'si güncellendi (I32b6a).
- Bu özelliğin gelecekteki gelişimini hesaba katmak için
setDiagnosticStackTraceEnableddeğerini deneysel olarak değiştirin. (I11db3) currentCompositeKeyHashdesteği sonlandırıldı. Bunun yerinecurrentCompositeKeyHashCodepolitikasını kullanın. Yeni API, aynı karmayı daha fazla bit ile kodlar. Bu da kompozisyon hiyerarşisindeki iki rastgele ve alakasız grubun aynı karma anahtarına sahip olma olasılığını katlanarak azaltır. (I4cb6a, b/177562901)- Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
@Stable,@Immutableve@StableMarker, çalışma zamanı ek açıklamasına (uyumlu bir şekilde) taşındı. Artık Compose'a bağlı olmayan kitaplıklardaki bu ek açıklamaları kullanmak istiyorsanız çalışma zamanı ek açıklamalarını kullanabilirsiniz. (I23a16)rememberSaveableaşırı yüklemesinin adınıKSerializerkabul edenrememberSerializableolarak değiştirdi. Bu değişiklik,kotlinx.serializationile kullanım amacını netleştirir. Genelkotlinx.Serializablesınıflarının doğrudanrememberSaveableiçinde desteklenmesi içinreifiedtüründe bir parametre gerekir. Bu da tüm çağrı sitelerinin derleme sırasında somutlaştırılmış tür bilgileri sağlamasını gerektirerek kaynak uyumluluğunu bozar. (Idb875, I38627, b/376028110)
Hata Düzeltmeleri
- Durdurulabilir içeriklerle oluşturulan ve iptal edilen kompozisyonlar kaldırılmalıdır. Bu durum artık beste tarafından kontrol ediliyor ve yeniden kullanılması durumunda hata veriliyor. (I2daa5, b/406792785)
- Durdurulabilir birleştirme, artık durdurulabilir birleştirme kaldırıldığında gözlemcilere hatırlatmak için sahte bir
onForgottengöndermeyecek şekilde düzeltildi. İptal edilen, duraklatılabilir bir beste içindekiRememberObserversöğesine yalnızca onAbandoned gönderilmelidir. (I26f54) - İşleme sürecinin son aşamalarında gelen geçersiz kılmaların, taşınabilir içerik işlenirken oluşturucuya eklenmesi ancak içerik taşındığında güncellenmemesi nedeniyle içeriğin yanlış yerde yeniden oluşturulmasına neden olan taşınabilir içerik sorunu düzeltildi. (Icd2fa, b/409439507)
- Taşınabilir içerik oluşturulduktan sonra ancak taşınmadan önce geçersiz hale geldiğinde yaşanan sorun düzeltildi. (I99eac, b/229001114)
previous()çağrıldıktan sonraSnapshotStateListtarafından oluşturulan bir liste yineleyicisininremove()çağrılması, listeden yanlış öğenin kaldırılmasına neden oluyordu veArrayList'ün aynı çağrı dizisi için yaptığı işlemle eşleşmiyordu. (I05ab7, b/417493222)onForgottonöğelerinin gönderilmesiyle ilgili bir sıralama sorunu düzeltildi. Bu sorun, örneğin tek kullanımlık efektlerinonDisposeöğesinin yanlış sırada yürütülmesine neden olabiliyordu. (Ic1c91, b/417450712)- Duraklatılabilir kompozisyonda durum işlemeyi yeniden kullanmayla ilgili düzeltme (Ife96e, b/404058957)
- Bir beste duraklatılıp yeniden başlatıldığında yeniden kullanma durumu düzeltildi. Ancak beste duraklatılmışken okuduğu bazı durumlar değiştiğinden daha önce duraklatılmış bazı durumların yeniden oluşturulması gerekiyordu. (I441d1, b/416209738)
- b/404058957 numaralı sorun için duraklatılabilir beste hatırlama gönderme düzeltmesi tamamlandı. Önceki düzeltme tamamlanmamıştı. (I1afd4, b/404058957)
OffsetApplierartık duraklatılabilir kompozisyonla kullanıma sunulanapply()öğesini doğru şekilde geçersiz kılıyor. Bu özelliğin olmaması, duraklatılabilir bileşimin sanal düğümler güncellenirken istisna oluşturmasına neden olabilir. (Idbf31, b/409291131)- Bir çerçeve gönderilirken
FrameClock.withFrameNanos'ya yapılan askıya alınmış bir çağrı iptal edildiğinde Molecule kullanıcılarını etkileyebilecek kilitlenme sorunu düzeltildi. (I89cab, b/407027032) - Yeniden Oluşturucu, taşınabilir içeriklerle boşta kalabiliyor (Ie5416, b/409267170)
onReuseveonDeactivate, duraklatılabilir beste sırasında tersine çevrilebilir. Bu etkinliklerin artıkonDeactivate/onReusesırasıyla gerçekleşeceği garanti edilir. (I996e4, b/404058957)- Pausable composition'da remember gözlemcilerinin gönderilmesini düzelterek aynı uygulama içinde hatırlanan/unutulanların gönderilmesini önleyin (I570b2, b/404645679, b/407931790)
LifecycleRegistrykontrollerini devre dışı bırakmak ve iş parçacığı sorunlarını düzeltmek için Compose Multiplatform'da güvenli olmayan modaLifecycleRegistrygeçildi.MainThreadAyrıntılar için CMP-8227'ye bakın. (Icee87)
Harici Katkı (External Contribution)
- Molecule kullanıcılarını etkileyen ve
RecompositionMode.Immediatekullanımının yeniden oluşturma işlemlerinin atlanmasına neden olabilen hata düzeltildi. (I9f3a9, b/419527812) PausableCompositiondurumunun kontrol edilmesine olanak tanıyanPausableCompositionisAppliedveisCancelledalıcıları kullanıma sunuldu. (I994aa)AnnotationTarget.FUNCTION,FunctionKeyMetaek açıklamasına eklendi. (I08021)
Sürüm 1.9.0-alpha04
4 Haziran 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha04 iptal edilir. 1.9.0-alpha04 sürümü bu commit'leri içerir.
API Değişiklikleri
SnapshotStateSetartık Android'de Parcelable'ı uyguluyor. Bu nedenle,rememberSaveable { ... }'ın bir parçası olarak kullanılması destekleniyor. (I755dd, b/378623803)SnapshotStateListartık Android'de Parcelable'ı uyguluyor. Bu nedenle,rememberSaveable { ... }'ın bir parçası olarak kullanılması destekleniyor. (Id18be, b/378623803)movableContentOf()artık@RememberInCompositionaçıklamasıyla işaretleniyor. Bu sayede lint, yanlış kullanımları (I2738d) yakalayabiliyor.- Yeniden oluşturma nedenlerinin daha kapsamlı bir şekilde gözlemlenmesine olanak tanımak için deneysel kompozisyon gözlemcileri API'si güncellendi (I32b6a).
Hata Düzeltmeleri
onForgottonöğelerinin gönderilmesiyle ilgili bir sıralama sorunu düzeltildi. Bu sorun, örneğin tek kullanımlık efektlerinonDisposeöğesinin yanlış sırada yürütülmesine neden olabiliyordu. (Ic1c91, b/417450712)- Duraklatılabilir kompozisyonda durum işlemeyi yeniden kullanmayla ilgili düzeltme (Ife96e, b/404058957)
- Değişebilir koleksiyon algılamanın hem K1 hem de K2 ile uyumlu olması için küçük bir hata düzeltildi (Ie4878).
- K1 ve K2'de (I9900d) geçersiz kılınan özellik erişimcilerinde ek açıklama aramanın uyumlu olması için küçük bir hata düzeltildi.
Harici Katkı (External Contribution)
- Molecule kullanıcılarını etkileyen ve
RecompositionMode.Immediatekullanımının yeniden oluşturma işlemlerinin atlanmasına neden olabilen hata düzeltildi. (I9f3a9, b/419527812) PausableCompositionisApplied veisCancelledgetter'ları kullanıma sunuldu. Bu getter'lar,PausableCompositiondurumunun kontrol edilmesine olanak tanır. (I994aa)
Sürüm 1.9.0-alpha03
20 Mayıs 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha03 iptal edilir. 1.9.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Bu özelliğin gelecekteki gelişimini hesaba katmak için
setDiagnosticStackTraceEnableddeğerini deneysel olarak değiştirin. (I11db3)
Hata Düzeltmeleri
- Bir beste duraklatılıp yeniden başlatıldığında yeniden kullanma durumu düzeltildi. Ancak beste duraklatılmışken okuduğu bazı durumlar değiştiğinden daha önce duraklatılmış bazı durumların yeniden oluşturulması gerekiyordu. (I441d1, b/416209738)
- b/404058957 numaralı sorun için önceki düzeltme eksik olduğundan, duraklatılabilir beste hatırlatma gönderme düzeltmesi tamamlandı. (I1afd4, b/404058957)
SaveableStateHolder.SaveableStateProviderartık kompozisyon aracılığıyla içeriğineLocalSavedStateRegistryOwnersağlıyor. (Ia2761, b/413108878)androidx.compose.runtime.saveableartıkandroidx.lifecycle.runtime.composeSDK'sına bağlıdır. (I53228, b/413108878)
Sürüm 1.9.0-alpha02
7 Mayıs 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha02 iptal edilir. 1.9.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
- Özel "anahtar" ile
rememberSaveablekullanımdan kaldırıldı. Konumsal kapsamı atlayarak durum hatalarına ve tutarsız davranışlara (ör. istenmeden durum paylaşımı veya kaybı, iç içe yerleştirilmişLazyLayouts'da sorunlar) yol açar. Tutarlı ve yerel olarak kapsamlı durum için lütfen "key" parametresini kaldırın. Daha fazla bilgi için tam commit mesajına bakın. (I5e6ff, b/357685851)
Hata Düzeltmeleri
OffsetApplierartık duraklatılabilir kompozisyonla kullanıma sunulanapply()öğesini doğru şekilde geçersiz kılıyor. Bu özelliğin olmaması, duraklatılabilir beste sanal düğümleri güncellerken istisna oluşturmasına neden olabilir. (Idbf31, b/409291131)- Bir çerçeve gönderilirken
FrameClock.withFrameNanos'ya yapılan askıya alınmış bir çağrı iptal edildiğinde Molecule kullanıcılarını etkileyebilecek kilitlenme sorunu düzeltildi. (I89cab, b/407027032) - Yeniden Oluşturucu, taşınabilir içerik durumu hala silinmeyi beklerken boşta kalabilir. Bu durum normalde oluşmaz. Çünkü taşınabilir içerik durumu, Recomposer'ın ana döngüsünde atılır. Ancak bu durum,
resume()sırasında taşınabilir içerik atıldığında duraklatılabilir kompozisyonda ortaya çıkabilir(Ie5416, b/409267170). onReuseveonDeactivate, duraklatılabilir beste sırasında tersine çevrilebilir. ArtıkonDeactivate/onReusesırasıyla gerçekleşmeleri garanti edilir. (I996e4, b/404058957)
Sürüm 1.9.0-alpha01
23 Nisan 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha01 iptal edilir. 1.9.0-alpha01 sürümü bu commit'leri içerir.
Davranış Değişiklikleri
- Compose ile birlikte gelen Lint kontrolleri artık minimum AGP sürümü olarak 8.8.2'yi gerektiriyor. AGP'yi yükseltemiyorsanız bunun yerine
gradle.propertiesdosyanızdaandroid.experimental.lint.version=8.8.2(veya daha yeni bir sürüm) kullanarak Lint'i tek başına yükseltebilirsiniz. IDE'de Compose lint kontrollerini çalıştırmak için Android Studio Ladybug veya daha yeni bir sürüm gerekir.
API Değişiklikleri
currentCompositeKeyHashdesteği sonlandırıldı. Bunun yerinecurrentCompositeKeyHashCodepolitikasını kullanın. Yeni API, aynı karmayı daha fazla bit ile kodlar. Bu da kompozisyon hiyerarşisindeki iki rastgele ve alakasız grubun aynı karma anahtarına sahip olma olasılığını katlanarak azaltır. (I4cb6a, b/177562901)- Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
@Stable,@Immutableve@StableMarker, çalışma zamanı ek açıklamasına (uyumlu bir şekilde) taşındı. Artık Compose'a bağlı olmayan kitaplıklardaki bu ek açıklamaları kullanmak istiyorsanız çalışma zamanı ek açıklamalarını kullanabilirsiniz. (I23a16)onCreatingveonDisposing, kullanımdan kaldırılıponPreCreateveonPreDisposeolarak yeniden adlandırıldığından kaldırıldı. Bu değişiklik, yeniden adlandırma işlemini tamamlar. (I97461)- Birleştirme içindeki birleştirme düğümü konumuna göre birleştirme yığını izlemesi eklemeye olanak tanıyan bir birleştirme yerelini kullanıma sunun. (Ie0bda, b/354163858)
- Kompozisyonda depolanan kaynak bilgilerine göre teşhis amaçlı beste yığını izlerini kullanıma sunma. (I3db9f, b/354163858)
- Davranışı daha net bir şekilde açıklayan
runWithMeasurementDisabledlehinerunWithTimingDisableddesteği sonlandırıldı. Tüm metrikler duraklatılır. Ayrıca,runWithMeasurementDisabledişlevi satır içi olduğundan erişimi açmak için yeniden tanımlamak mümkün olmadığındanMicrobenchmarkScopeüst sınıfını kullanıma sunun. (I9e23b, b/389149423, b/149979716) @FrequentlyChangingValueekleniyor: İşlevlerin ve özellik alıcılarının, sık sık yeniden oluşturmaya neden olabileceği için kompozisyon içinde doğrudan çağrılmaması gerektiğini belirtmek üzere işaretlenebileceği bir ek açıklama. Örneğin, kaydırma konumu değerlerini ve animasyon değerlerini işaretlemek için. Uyarılar, ilgili lint kontrolü tarafından sağlanır. (I83630, b/234042500)@RememberInCompositionekler: Oluşturucuları, işlevleri ve özellik alıcılarını işaretleyebilen bir ek açıklama. Bu ek açıklama, bunların hatırlanmadan doğrudan kompozisyon içinde çağrılmaması gerektiğini belirtir. Hatalar, ilgili lint kontrolü tarafından oluşturulur. Bu ek açıklama, durum bilgisi olan / değiştirilebilir nesneler, kimliğinin kompozisyonlar arasında korunmasının önemli olduğu nesneler veya oluşturulması maliyetli olan ve kompozisyonlar arasında önbelleğe alınması gereken nesneleri döndüren bildirimleri işaretlemek için kullanılabilir. (Ie7db0)- KotlinX Serialization kullanarak tür güvenli durum kalıcılığı için
KSerializer'ı destekleyen yeni birrememberSaveableaşırı yüklemesi eklendi. MevcutSavertabanlı API desteklenmeye devam edecektir. (Iea4ab, b/376028110)
Hata Düzeltmeleri
- Pausable composition'da remember gözlemcilerinin gönderilmesini düzelterek aynı uygulama içinde hatırlanan/unutulanların gönderilmesini önleyin (I570b2, b/404645679, b/407931790)
- API kurallarına uymak için Creating sınıfındaki
SnapshotObserveryöntemlerinin adıonPreCreateolarak,onDisposingyöntemlerinin adı iseonPreDisposeolarak değiştirildi. Önceki yöntemler kullanımdan kaldırıldı ve yeni yöntemler varsayılan olarak eski yöntemleri çağırıyor. Bu nedenle, yöntemler kaldırılana kadar bu arayüzün mevcut uygulamaları çalışmaya devam edecek. Bu yöntemler, bu CL'yi kısa süre içinde takip edecek bir CL ile 1.9.0 alfa sürümünde kaldırılacak. Bu özellikler, 1.8 kararlı sürümünden önce 1.8 beta sürümünden kaldırılacak. (I6d753) - Taşınabilir bir grubun ardından görünen, kısaltılmış bir grup yeniden oluşturulurken hatırlanan değerlerin yanlışlıkla unutulup yeniden hesaplanmasına neden olan sorun düzeltildi (I62cab, b/383769314).
LaunchedEffectverememberCoroutineScope'de yığın izlemeleri oluşturma desteği eklendi (I705c0, b/354163858).- Compose lint kontrolleri artık komut satırından minimum AGP sürümü 8.8.2'yi, IDE desteği için ise en az Android Studio Ladybug'ı gerektiriyor. AGP'nin eski bir sürümünü kullanıyorsanız AGP'yi etkilemeden Lint sürümünü yükseltmek için gradle.properties dosyasında
android.experimental.lint.version=8.8.2değerini ayarlayabilirsiniz. (I6f2a8)
Harici Katkı (External Contribution)
AnnotationTarget.FUNCTION,FunctionKeyMetaek açıklamasına eklendi. (I08021)
Sürüm 1.8
Sürüm 1.8.3
18 Haziran 2025
androidx.compose.runtime:runtime-*:1.8.3 iptal edilir. 1.8.3 sürümü bu commit'leri içerir.
Sürüm 1.8.2
20 Mayıs 2025
androidx.compose.runtime:runtime-*:1.8.2 iptal edilir. 1.8.2 sürümü bu commit'leri içerir.
Sürüm 1.8.1
7 Mayıs 2025
androidx.compose.runtime:runtime-*:1.8.1 iptal edilir. 1.8.1 sürümü bu commit'leri içerir.
Sürüm 1.8.0
23 Nisan 2025
androidx.compose.runtime:runtime-*:1.8.0 iptal edilir. 1.8.0 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc03
9 Nisan 2025
androidx.compose.runtime:runtime-*:1.8.0-rc03 iptal edilir. 1.8.0-rc03 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc02
26 Mart 2025
androidx.compose.runtime:runtime-*:1.8.0-rc02 iptal edilir. 1.8.0-rc02 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc01
12 Mart 2025
androidx.compose.runtime:runtime-*:1.8.0-rc01 iptal edilir. 1.8.0-rc01 sürümü bu commit'leri içerir.
API Değişiklikleri
- API kurallarına uymak için Creating sınıfındaki
SnapshotObserveryöntemlerinin adıonPreCreateolarak,onDisposingyöntemlerinin adı iseonPreDisposeolarak değiştirildi. Önceki yöntemler kullanımdan kaldırıldı ve yeni yöntemler varsayılan olarak eski yöntemleri çağırıyor. Bu nedenle, yöntemler kaldırılana kadar bu arayüzün mevcut uygulamaları çalışmaya devam edecek. Bu yöntemler, bu CL'yi kısa süre içinde takip edecek bir CL ile 1.9.0 alfa sürümünde kaldırılacak. Bu özellikler, 1.8 kararlı sürümünden önce 1.8 beta sürümünden kaldırılacak. (I6d753)
Sürüm 1.8.0-beta03
26 Şubat 2025
androidx.compose.runtime:runtime-*:1.8.0-beta03 iptal edilir. 1.8.0-beta03 sürümü bu commit'leri içerir.
Sürüm 1.8.0-beta02
12 Şubat 2025
androidx.compose.runtime:runtime-*:1.8.0-beta02 iptal edilir. 1.8.0-beta02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yakalanan istisnayı duraklatılabilir beste içinde yeniden oluşturun .(384486d)
Sürüm 1.8.0-beta01
29 Ocak 2025
androidx.compose.runtime:runtime-*:1.8.0-beta01 iptal edilir. 1.8.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
- Derleme sırasında Exception'dan türemeyen bir throwable'ın oluşturulmasının "Pending composition has not been applied" (Bekleyen derleme uygulanmadı) hatasına yol açabildiği sorun düzeltildi. (I356be, b/382094412)
Sürüm 1.8.0-alpha08
15 Ocak 2025
androidx.compose.runtime:runtime-*:1.8.0-alpha08 iptal edilir. 1.8.0-alpha08 sürümü bu commit'leri içerir.
Sürüm 1.8.0-alpha07
11 Aralık 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha07 iptal edilir. 1.8.0-alpha07 sürümü bu commit'leri içerir.
API Değişiklikleri
- Bir düğüm, kompozisyonları birbirine bağlamak için kullanılmadığında düzen inceleyicinin alt kompozisyonları üst kompozisyonla ilişkilendirmesine yardımcı olan bir araç API'si eklendi. (I4ce3d)
SnapshotIdiçin aritmetik ve özel sabitler herkese açık yerine kuruluş içi olarak ayarlandı. GerekirseSnasphotIdüzerinde aritmetik işlemler yapılabilir. Bunun için sırasıylatoInt()veyatoLong()kullanılarakIntya daLong'ye dönüştürülür. (Ic3a57)
Harici Katkı (External Contribution)
- Depolamayı
movableContentOfparametreleri için optimize edin. (ed87177)
Sürüm 1.8.0-alpha06
13 Kasım 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06 iptal edilir. 1.8.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
PausableCompositionAPI'sinde yapılan değişiklikler. Bu değişiklikler, 1.8.0-alpha'nın önceki sürümlerine (1.8.0-alpha02'den itibaren) göre uyumluluğu bozmaktadır. Ancak bu değişiklikler 1.8.0'daki yeni API'ler olduğundan ve API'ler hâlâ alfa sürümünde olduğundan geriye dönük uyumluluk korunmamaktadır. (I39819)- Bir Recomposer'da yeni kompozisyonların oluşturulmasını gözlemlemek için araç API'leri ekler (Iaeb7e).
SnapshotöğesineLongtüründesnapshotIdeklendi veiddesteği sonlandırıldı. Anlık görüntü kimliğinin, çok yüksek kare hızlarına ve uzun süren animasyonlara sahip sistemlerde taşmasını önlemek için anlık görüntü kimliğiIntolarak değiştirildi.LongBu türün, yerelLongtürü olmayan platformlardaIntveya başka bir tür olmasına izin vermek için tür, beklenen/gerçek olarak ayarlandı. JavaScript gibi yerelLong'ye sahip olmayan platformlar, yaklaşık 24 günde birInttaşmasına neden olacak yüksek kare hızlarından (1.000 FPS'nin üzerinde) kaçınmalıdır. (I38ac3, b/374821679)
Hata Düzeltmeleri
- Tek bir
providesiçin sabitprovidesDefault. (aosp/3318540 b/374263387) ChangeListoptimize edin. (3318538)
Sürüm 1.8.0-alpha05
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05 iptal edilir. 1.8.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
Int.MAX_VALUEöğesiniSnapshotIdSetöğesine ekleyerek yığın taşmasını düzeltin. (b/370536104, Ic4179f6)- Çalışma zamanı mikro optimizasyonları (I50c60)
- R8'in hata ayıklama sırasında çalışma zamanı kontrolü çağrılarını (I8c44) kaldırmasına izin verin.
compoundKeyOfişlevini yinelemeli yerine yinelemeli yapın (I5817f)
Harici Katkı (External Contribution)
- Koleksiyon listeleriyle grupları uygulama (I7d47c)
Sürüm 1.8.0-alpha04
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04 iptal edilir. 1.8.0-alpha04 sürümü şu commit'leri içerir.
Performans İyileştirmeleri
- Oluşturucuda durum kayıtları için anlık görüntü kimliği sağlama (85c00f)
- Sınıf doğrulama hatalarını önlemek için
SnapshotState***öğesini yeniden düzenleyin (6ee4a6) - R8 kurallarını, throw inlining'i önleyecek şekilde düzeltin (5beb92)
- İşlemleri mikro düzeyde optimize etme (d73c5c)
- JVM'de
SynchronizedObjectayırmalarını optimize etme (2b043f)
Sürüm 1.8.0-alpha03
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03 iptal edilir. 1.8.0-alpha03 sürümü bu commit'leri içerir.
Performans İyileştirmeleri
rememberCoroutineScopeiçin alt bağlamı geç oluşturma (f61464)rememberCoroutineScopegenellikle kompozisyon sonrası gerçekleşen etkinliklere yanıt olarak eş yordamları başlatmak için kullanılır. Bazı senaryolarda bu etkinlikler hiç gerçekleşmeyebilir ve bu da iş oluşturma ile iptal etme işlemlerinin ek maliyetlere yol açmasına neden olur.rememberCoroutineScopetarafından döndürülen kapsamın, erişildiğindecoroutineContextöğesini geç oluşturmasını sağlayın. Kapsam hiç kullanılmazsa iş oluşturma ve iptal etme işlemlerini tamamen önleyin.
Sürüm 1.8.0-alpha02
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02 iptal edilir. 1.8.0-alpha02 sürümü bu commit'leri içerir.
Yeni Özellikler
- Bileşim sırasında duraklatılabilen ve bileşime eşzamansız olarak uygulanabilen bir alt bileşim oluşturmaya olanak tanıyan
PausableCompositioneklendi. Şu anda geliştirme aşamasında olan duraklatma özelliği için derleyici desteği gereklidir. (I3394b)
Sürüm 1.8.0-alpha01
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01 iptal edilir. 1.8.0-alpha01 sürümü bu commit'leri içerir.
Sürüm 1.7
Sürüm 1.7.8
12 Şubat 2025
androidx.compose.runtime:runtime-*:1.7.8 iptal edilir. 1.7.8 sürümü bu commit'leri içerir.
Sürüm 1.7.7
29 Ocak 2025
androidx.compose.runtime:runtime-*:1.7.7 iptal edilir. 1.7.6 sürümünden itibaren değişiklik yok.
androidx.compose.runtime:runtime-*:1.7.6 iptal edilir. 1.7.6 sürümü bu commit'leri içerir.
Sürüm 1.7.5
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.5 iptal edilir. 1.7.5 sürümü bu commit'leri içerir.
Sürüm 1.7.4
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.4 iptal edilir. 1.7.4 sürümü bu commit'leri içerir.
Sürüm 1.7.3
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.3 iptal edilir. 1.7.3 sürümü bu commit'leri içerir.
Sürüm 1.7.2
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.2 iptal edilir. 1.7.2 sürümü bu commit'leri içerir.
Sürüm 1.7.1
10 Eylül 2024
- Android yapıları değiştirilmez.
-desktopyapı kaldırıldı,-jvmStubsve-linuxx64Stubsyapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar.
Sürüm 1.7.0
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.0 iptal edilir. 1.7.0 sürümü bu commit'leri içerir.
1.6.0 sürümünden beri yapılan önemli değişiklikler
- Diğer beste yerellerinin değerlerine göre hesaplanan bir beste yereli sağlamak için varsayılan olarak
compositionLocalWithComputedDefault()kullanma veyaprovidesyerineprovidesComputedkullanarak değeri hesaplamak için kullanılacak bir lambda sağlama özelliği eklendi. - Bir kompozisyon yerelinin değeri, değeri hesaplayan lambda'dan erişilebilen kompozisyon yerelinin
currentValueözelliği kullanılarak elde edilebilir. Bu, yalnızca@Composableişlevlerinde erişilebilencurrentyerine kullanılır. (Iadbc0) - Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü de dahil olmak üzere diğer anlık görüntülerden hemen erişilebilir. Sonraki değişiklikler, nesnenin oluşturulduğu anlık görüntü uygulanana kadar görünmez.
mutableStateOf()'nın ve temel sürümlerinin başlangıç durumu,mutableStateOf()'ya parametre olarak iletilen değerdir.mutableStateListOf()vemutableStateMapOf()başlangıçta boştur.- Durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilir olmasını sağlamak için kullanılan
Snapshot.isInSnapshotveSnapshot.PreexistingSnapshotIdeklendi. - Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin düzenini izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
- Oluşturma kitaplıkları için
nonSkippingGroupOptimization'ı etkinleştirin. Bu, androidx'teki yeniden başlatılamayan tüm composable işlevler için oluşturulan kodun daha verimli olmasını sağlar. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08) - Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
onReleasegeri arama işlevinionForgottenile aynı sırada çağırın. (2cd790)- Güçlü atlama modunu etkinleştirme (ed1766)
currentCompoundHashKeycihazını daha fazla durumda benzersiz hale getirme (d4a872)
Sürüm 1.7.0-rc01
21 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01 iptal edilir. 1.7.0-rc01 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta07
7 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07 iptal edilir. 1.7.0-beta07 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta06
24 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06 iptal edilir. 1.7.0-beta06 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta05
10 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05 iptal edilir. 1.7.0-beta05 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta04
26 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04 iptal edilir. 1.7.0-beta04 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta03
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03 iptal edilir. 1.7.0-beta03 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta02
29 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02 iptal edilir. 1.7.0-beta02 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta01
14 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01 iptal edilir. 1.7.0-beta01 sürümü bu commit'leri içerir.
Sürüm 1.7.0-alpha08
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08 iptal edilir. 1.7.0-alpha08 sürümü bu commit'leri içerir.
Sürüm 1.7.0-alpha07
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07 iptal edilir. 1.7.0-alpha07 sürümü bu commit'leri içerir.
Yeni Özellikler
- Diğer beste yerellerinin değerlerine göre hesaplanan bir beste yereli sağlamak için varsayılan olarak
compositionLocalWithComputedDefault()kullanma veyaprovidesyerineprovidesComputedkullanarak değeri hesaplamak için kullanılacak bir lambda sağlama özelliği eklendi. - Bir kompozisyon yerelinin değeri, değeri hesaplayan lambda'dan erişilebilen kompozisyon yerelinin
currentValueözelliği kullanılarak elde edilebilir. Bu, yalnızca@Composableişlevlerinde erişilebilencurrentyerine kullanılır. (Iadbc0)
API Değişiklikleri
- Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü de dahil olmak üzere diğer anlık görüntülerden hemen erişilebilir. Sonraki değişiklikler, nesnenin oluşturulduğu anlık görüntü uygulanana kadar görünmez.
mutableStateOf()'nın ve temel sürümlerinin başlangıç durumu,mutableStateOf()'ya parametre olarak iletilen değerdir.mutableStateListOf()vemutableStateMapOf()başlangıçta boştur.- Durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilir olmasını sağlamak için kullanılan
Snapshot.isInSnapshotveSnapshot.PreexistingSnapshotIdeklendi. - Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin düzenini izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
Hata Düzeltmeleri
- İç içe yerleştirilmiş anlık görüntülerde
readObserverbirleştirme sorunu düzeltildi. Bu durum, iç içe yerleştirilmiş türetilmiş durumlarınsnapshotFlowiçinde kullanıldığında geçersiz kılınmamasına neden oluyordu. (Idf138)
Sürüm 1.7.0-alpha06
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06 iptal edilir. 1.7.0-alpha06 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Tek değer sağlama işleme sorununu düzeltme
providesDefault(538f45) - Recomposer'ın kare saatine erişirken kilitlenmeyi önleme (07e5c6)
Sürüm 1.7.0-alpha05
20 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05 iptal edilir. 1.7.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Devre dışı bırakılan beste üzerindeki geç değişiklikleri temizleme (5950bc)
Sürüm 1.7.0-alpha04
6 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04 iptal edilir. 1.7.0-alpha04 sürümü bu commit'leri içerir.
Performans İyileştirmeleri
- Türetilmiş durum değerlendirmesi başına bir kez
Snapshot.currentçağrılır (ee7daf). - Kompozisyonda gözlem başına bir kez
currentRecordokuma (b882b2) snapshotFlowiçinde yanlışlıkla yapılan yineleyici ayırmayı kaldırma (231e56)- Oluşturma kitaplıkları için
nonSkippingGroupOptimization'ı etkinleştirin. Bu, androidx'teki yeniden başlatılamayan tüm composable işlevler için oluşturulan kodun daha verimli olmasını sağlar. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08)
Sürüm 1.7.0-alpha03
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03 iptal edilir. 1.7.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
- Değişiklik algılamayı iyileştirmek için grupları değiştirme özelliği kullanıma sunuldu (0941b5)
Performans İyileştirmeleri
- Değişiklikleri algılarken bellek ayırmayı iyileştirme (53e7fd)
- Oluşturucu bölümündeki bellek sızıntısı düzeltildi (0e097d).
- Yeniden oluşturma sırasında geçersiz kılmaları iletmek için
ScopeMapkullanın (e19a7e) - İptal haritasını yalnızca türetilmiş durumları koruyacak şekilde optimize edin (f11c44)
IdentityArraySetkullanımlarınıScatterSetile değiştirme (db572e)ScopeMapiçinderemoveScopeoptimize edin (bb0530)
Sürüm 1.7.0-alpha02
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02 iptal edilir. 1.7.0-alpha02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
onReleasegeri arama işlevinionForgottenile aynı sırada çağırın. (2cd790)snapshotFlow'da gözlemlenmeyen filtre değiştirme durumları. (796b80)
Performans İyileştirmeleri
- Anlık görüntü gözlemcisini, şeffaf olduğunda yerinde değiştirme. (f60f30)
SnapshotIdSet.lowest()optimize edin. (7ae149)SnapshotIdSetuygulamasında tahsis gerektirmeyen birfold()kullanın. (532b7d)- Yineleyici ayırmayı kaldırma (83f96b)
Sürüm 1.7.0-alpha01
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01 iptal edilir. 1.7.0-alpha01 sürümü şu commit'leri içerir.
Performans optimizasyonları
- Alt grup eklendikten sonra yer oluşturma özelliği eklendi (b5960c)
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
- Güçlü atlama modunu etkinleştirme (ed1766)
Hata Düzeltmeleri
- İçsel hatırlamada varsayılan parametre meta verileri için hesap (096665)
currentCompoundHashKeycihazını daha fazla durumda benzersiz hale getirme (d4a872)- Satır içi işlev çağrısından çıkarken grupları gerçekleştirme (2a90fc)
Sürüm 1.6
Sürüm 1.6.8
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.6.8 iptal edilir. 1.6.8 sürümü bu commit'leri içerir.
Sürüm 1.6.7
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.6.7 iptal edilir. 1.6.7 sürümü bu commit'leri içerir.
Sürüm 1.6.6
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.6 iptal edilir. Son sürümden bu yana değişiklik yapılmadı.
Sürüm 1.6.5
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.5 iptal edilir. 1.6.5 sürümü bu commit'leri içerir.
Sürüm 1.6.4
20 Mart 2024
androidx.compose.runtime:runtime-*:1.6.4 iptal edilir. 1.6.4 sürümü bu commit'leri içerir.
Sürüm 1.6.3
6 Mart 2024
androidx.compose.runtime:runtime-*:1.6.3 iptal edilir. 1.6.3 sürümü bu commit'leri içerir.
Sürüm 1.6.2
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.2 iptal edilir. 1.6.2 sürümü şu commit'leri içerir.
Sürüm 1.6.1
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.1 iptal edilir. 1.6.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
onReleasegeri arama işlevinionForgottenile aynı sırada çağırın. (2cd790)snapshotFlow'da gözlemlenmeyen filtre değiştirme durumları. (796b80)
Sürüm 1.6.0
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0 iptal edilir. 1.6.0 sürümü şu commit'leri içerir.
1.5.0 sürümünden beri yapılan önemli değişiklikler
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden oluşturma (4dff9a)
Performans optimizasyonları
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
- Optimize etme
rememberSaveable(f01d79) - Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
- Kompozisyon yerel değerlerinin sağlanmasını iyileştirme (a337ea)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısı düzeltildi (73fcfe)
- Kaldırılacak alt kompozisyonların yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
- Yalnızca hatırlama hesaplamasında depolandığında
RememberObserveryaşam döngülerini tetikleyin. (f6b4dc) $dirtyyakalamayı satır içi lambda'larla kısıtlayın. (acfca0)- Bazen yanlış kompozisyon yerelleri alan taşınabilir içerik düzeltildi. (035cd6)
Sürüm 1.6.0-rc01
10 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01 iptal edilir. 1.6.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta03
13 Aralık 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03 iptal edilir. 1.6.0-beta03 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta02
29 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02 iptal edilir. 1.6.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta01
15 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01 iptal edilir. 1.6.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Açıklamada belirli kararlılık değerlerini yayma (274a4c)
Hata Düzeltmeleri
- Bağlamda yerel kapsam durumunu oluşturmak için referans politikası kullanın. (83361c)
- $dirty yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)
- Bazen yanlış kompozisyon yerelleri alan taşınabilir içerik düzeltildi. (035cd6)
RecomposeScopeImpl'da daha hızlı, tahsis etmeyen karma haritalar kullanın. (d79494)DerivedStateuygulamasındaObjectIntMapkullanın. (21862e)DerivedStateiçindeSnapshotThreadLocalint içinIntRefkullanın. (04eaf4)
Sürüm 1.6.0-alpha08
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08 iptal edilir. 1.6.0-alpha08 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yalnızca hatırlama hesaplamasında depolandığında
RememberObserveryaşam döngülerini tetikleyin. (f6b4dc) - Geçersiz kılma listesi sıralamasındaki dağıtımları iyileştirin. (954d63)
SnapshotStateObserver'da yeni tahsis edilmeyen haritaları kullanın. (4303ce)- Beste devre dışı bırakıldığında geçersiz kılmaları temizleyin. (e001be)
Sürüm 1.6.0-alpha07
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07 iptal edilir. 1.6.0-alpha07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Liste yardımcılarının doğrudan dizine ekleme sürümünün kullanılabilmesi için
SnapshotStateListartıkRandomAccessolarak işaretleniyor. (I5210c, b/219554654)
Sürüm 1.6.0-alpha06
20 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06 iptal edilir. 1.6.0-alpha06 sürümü şu commit'leri içerir.
Sürüm 1.6.0-alpha05
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05 iptal edilir. 1.6.0-alpha05 sürümü şu commit'leri içerir.
Sürüm 1.6.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04 iptal edilir. 1.6.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden oluşturma (4dff9a)
API Değişiklikleri
ReusableComposition'ı devre dışı bırakmak için bir yöntem eklendi. Bu yöntem, gözlemleri kaldırır ancak düğümleri yerinde tutar. Devre dışı bırakılan beste,setContentaranarak tekrar etkinleştirilebilir. (Ib7f31)- Alt bileşenlerin yaşam döngüsünü ve yeniden kullanımını yönetmek için
ReusableCompositionarayüzü eklendi. (I812d1, b/252846775)
Sürüm 1.6.0-alpha03
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03 iptal edilir. 1.6.0-alpha03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yeni
CompositionLocalProvideroptimizasyonunu düzeltin (3118e88) - Taşınabilir içerik düğümlerinin nasıl söküldüğünü düzeltir. (5e3d59b)
Sürüm 1.6.0-alpha02
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02 iptal edilir. 1.6.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler ve Performans İyileştirmeleri
- Optimize etme
rememberSaveable(f01d79) - Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
- Kompozisyon yerel değerlerinin sağlanmasını iyileştirme (a337ea)
- Grup oluşturulmasını önlemek için
SideEffect,@ExplicitGroupsComposableolarak işaretlenir. (I74815) - Yeniden kullanımda kompozisyon yerel haritalarını karşılaştırmaktan kaçının (782071)
API Değişiklikleri
CompositionLocalProvidersiçin, birden fazla değer sağlamayı hızlandırmak için kullanılan ancak tek bir değer sağlarken ek yük oluşturan ek yükü önleyen özel bir durum aşırı yüklemesi eklendi. (I6d640, b/288169379)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısı düzeltildi (73fcfe)
stateSaverboş değer döndürdüğünderememberSaveableöğesinin nasıl geri yüklendiği düzeltildi (90748c).
Sürüm 1.6.0-alpha01
21 Haziran 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01 iptal edilir. 1.6.0-alpha01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
- Anlık görüntüler uygulanırken daha az yer ayırma. (I65c09)
- Anlık görüntü değiştirilmediyse
readableHashdeğerininDerivedStateiçinde hesaplanmasını önleme (68c565)
Sürüm 1.5
Sürüm 1.5.4
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.4 iptal edilir. 1.5.4 sürümü şu commit'leri içerir.
Sürüm 1.5.3
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.3 iptal edilir. 1.5.3 sürümü şu commit'leri içerir.
Sürüm 1.5.2
27 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.2 iptal edilir. 1.5.2 sürümü şu commit'leri içerir.
Sürüm 1.5.1
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.1 iptal edilir. 1.5.1 sürümü şu commit'leri içerir.
Sürüm 1.5.0
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.5.0 iptal edilir. 1.5.0 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView'daki kaldırılan ayırmalar. (Ib2bfa) - Durum oluşturan ve
rememberçağrısı içine alınması gereken işlevleri işaretlemek için@StateFactoryMarkernotu eklendi. (I64550) - State ve
MutableState'in temel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPendingeklendi (I672a5)StateAPI'nin temel sürümleri eklendi. Bu sayede, otomatik kutulama nedeniyle ceza almadanStatenesnelerinde Int, Long, Float ve Double değerlerinin izlenmesine olanak tanındı. Bunları kullanmak için yeni fabrika yöntemlerimutableIntState(Int),mutableFloatStateOf(Float)vb. kullanın. (I48e43)
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
ComposerImpliçinde anlık görüntü referansını saklama (0206f7)- Bileşimi iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun (aa2a92).
- Beste oluşturma sırasında
onEndChangesçağrısı yapma. (62cc8c) - İçeriğin alt kompozisyona taşınmasıyla ilgili sorunu düzeltme (4beb41)
- Olası kilitlenmeleri düzeltme (c1a425 ve 8edce0)
- Android penceresi için oluşturulan yeniden oluşturucu, artık ON_STOP bildirimi aldığında tüm kompozisyon yerine yalnızca
withFrameNanos'ya yapılan çağrıları engeller. Bu durumda, durdurulan etkinliklerle ilişkili pencereler veri değişiklikleri için yeniden oluşturulmaya devam eder ancak animasyonlar veyawithFrameNanos'nın diğer tüm arayanları engellenir. (Id9e7f, b/240975572) - Efektleri silmeden önce
LayoutNodeiçin devre dışı bırakma geri çağırmalarını yürütün 3784073 - Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
- Düğümlerle 73fd4d8 birleştirilebilir için canlı düzenleme regresyonunu düzeltin.
- ON_STOP, ae276f1 kompozisyonu yerine kare saati yayınlarını duraklatmalıdır.
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserverkapsamlarını geçersiz kılma 84d9b1c - Kompozisyonları atarken olası kilitlenmeyi düzeltme 28761fc
- İçeriği alt kompozisyona taşıma sorununu düzeltme 92d4156
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri silmeden önce
LayoutNodeiçin devre dışı bırakma geri aramalarını yürütün (8b0fa4) - Düğüm gruplarını sonlandırırken
endToMarker()sorununu düzeltir. (d71d980) - Devre dışı bırakma işleminin kontrolü için mevcut
SlotWritergrubunu kullanın (a0b518b). SlotTable.moveSlotGapTo()içindekifillöğesini kaldırıp kapatma düğmesinin yanına taşıma (81f9935)- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik kalması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içeriklerdeki anında geçersiz kılma işlemlerini düzeltme (8676618)
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
readableHashdeğeriniDerivedStateiçinde hesaplamaktan kaçının. (307102) - Azaltılmış tahsisler (I65c09, d7ea77, 727974 ve 445808)
- Oluşturma işlemini hızlıca iptal etme
CoroutineScopes(a55362 ve bd382f) - Erişilemeyen durum kayıtlarıyla durum nesnelerinin kayıtlarının üzerine yazma (c986960)
- Grupları gerçekleştirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Anlık görüntü geçersiz kılma işlemlerini depolamak için
IdentityArraySetkullanın (7f60cca) - Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01 iptal edilir. 1.5.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
mutableStateOf()çağrılarını karşılık gelen özel türlere taşımayı önermek için isteğe bağlı bir inceleme yapılabilir. Lint kimliğiAutoboxingStateCreation'dır. Daha önce bu inceleme, tüm projeler için varsayılan olarak etkinleştirilmişti. Bu uyarıyı Android Studio'nun düzenleyicisinde ve projenizin hata analizi çıktılarında görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasındawarning "AutoboxingStateCreation"'ı bildirerek önem derecesini bilgilendirme düzeyinden uyarı düzeyine (veya daha yüksek bir düzeye) değiştirin (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Sürüm 1.5.0-beta03
28 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03 iptal edilir. 1.5.0-beta03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
Sürüm 1.5.0-beta02
7 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02 iptal edilir. 1.5.0-beta02 sürümü şu commit'leri içerir.
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
readableHashdeğeriniDerivedStateiçinde hesaplamaktan kaçının. (307102)
Sürüm 1.5.0-beta01
24 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01 iptal edilir. 1.5.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView(Ib2bfa) işlemlerinde kaldırılan ayırmalar - Durum oluşturan ve
rememberçağrısı içine alınması gereken işlevleri işaretlemek için@StateFactoryMarkernotu eklendi. (I64550) - State ve
MutableState'in temel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPendingeklendi (I672a5)
Hata Düzeltmeleri
- Azaltılmış tahsisler (I65c09, d7ea77, 727974 ve 445808)
ComposerImpliçinde anlık görüntü referansını saklama (0206f7)- Oluşturma işlemini hızlıca iptal etme
CoroutineScopes(a55362 ve bd382f) - Bileşimi iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun (aa2a92).
- Beste oluşturma sırasında
onEndChangesçağrısı yapma. (62cc8c) - İçeriğin alt kompozisyona taşınmasıyla ilgili sorunu düzeltme (4beb41)
- Olası kilitlenmeleri düzeltme (c1a425
- ON_STOP, kompozisyon yerine kare saati yayınlarını duraklatmalıdır (f4a2d1).
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri silmeden önce
LayoutNodeiçin devre dışı bırakma geri aramalarını yürütün (8b0fa4)
Harici Katkı (External Contribution)
Snapshot.isApplyObserverNotificationPendingeklendi (I672a5)
Sürüm 1.5.0-alpha04
10 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04 iptal edilir. 1.5.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
StateAPI'nin temel sürümleri eklendi. Bu sayede, otomatik kutulama nedeniyle ceza almadanStatenesnelerinde Int, Long, Float ve Double değerlerinin izlenmesine olanak tanındı. Bunları kullanmak için yeni fabrika yöntemlerimutableIntState(Int),mutableFloatStateOf(Float)vb. kullanın. (I48e43)
Hata Düzeltmeleri
Beste oluşturma sırasında
onEndChangesçağrısı yapma.Composition.disposesırasında kaldırılan odaklanma düğümleri, odaklanmayı sıfırlamak içinonEndChanges'e abone oluyor.(03d4a47)Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun. Her türetilmiş durum,
SnapshotStateObserveriçinde bağımlılıklarının listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilmiş durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, türetilmiş durum okunduktan sonra (Snapshot.notifyObjectsInitialized()çağrısı nedeniyle) gerçekleşebilen anlık görüntü ilerletme işlemine kaydedilir.SnapshotStateObserver'daki önceki türetilmiş durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değeri okuyordu. Bu durum, temizlenmiş bir durumda geçersiz kılma işleminin gerçekleştiği ve bağımlılık geçersiz kılma işleminin kaydedilmediği bir yarış durumuna neden oldu.Bu değişiklik, türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralayarak geçersiz kılma işleminin her zaman geçerli bir durumda gerçekleşmesini sağlar. (c472be6)
Sürüm 1.5.0-alpha03
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03 iptal edilir. Version 1.5.0-alpha03 contains these commits.
API Değişiklikleri
- Android penceresi için oluşturulan yeniden oluşturucu, artık ON_STOP bildirimi aldığında tüm kompozisyon yerine yalnızca
withFrameNanos'ya yapılan çağrıları engeller. Bu durumda, durdurulan etkinliklerle ilişkili pencereler veri değişiklikleri için yeniden oluşturulmaya devam eder ancak animasyonlar veyawithFrameNanos'nın diğer tüm arayanları engellenir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesi ve haritada olası kilitlenmeyi düzeltme 5c1a425
- Efektleri silmeden önce
LayoutNodeiçin devre dışı bırakma geri çağırmalarını yürütün 3784073 - Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
- Düğümlerle 73fd4d8 birleştirilebilir için canlı düzenleme regresyonunu düzeltin.
- ON_STOP, ae276f1 kompozisyonu yerine kare saati yayınlarını duraklatmalıdır.
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserverkapsamlarını geçersiz kılma 84d9b1c - Kompozisyonları atarken olası kilitlenmeyi düzeltme 28761fc
- İçeriği alt kompozisyona taşıma sorununu düzeltme 92d4156
Sürüm 1.5.0-alpha02
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02 iptal edilir. 1.5.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
- Kotlin'in
getValueoperatörü artık composable olabilir (f174f6e)
Hata düzeltmeleri, performans iyileştirmeleri
- Erişilemeyen durum kayıtlarıyla durum nesnelerinin kayıtlarının üzerine yazma (c986960)
- Grupları gerçekleştirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Düğüm gruplarını sonlandırırken
endToMarker()sorununu düzeltir. (d71d980) - Devre dışı bırakma işleminin kontrolü için mevcut
SlotWritergrubunu kullanın (a0b518b). - Anlık görüntü geçersiz kılma işlemlerini depolamak için
IdentityArraySetkullanın (7f60cca) SlotTable.moveSlotGapTo()içindekifillöğesini kaldırıp kapatma düğmesinin yanına taşıma (81f9935)- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik kalması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içeriklerdeki anında geçersiz kılma işlemlerini düzeltme (8676618)
- Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01 iptal edilir. 1.5.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
Modifier.Nodesuygulamasının eşzamanlı rutinleri başlatmasına izin vermek içinModifier.Node#coroutineScopeişlevi eklendi (I76ef9).CompositionLocalConsumerModifierNodearayüzünü uygulayarakModifier.NodesuygulamasınınCompositionLocalsuygulamasını okumasına izin verin. (Ib44df)
Sürüm 1.4
Sürüm 1.4.3
3 Mayıs 2023
androidx.compose.runtime:runtime-*:1.4.3, herhangi bir değişiklik yapılmadan yayınlanır.
Sürüm 1.4.2
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.2 iptal edilir. 1.4.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Anlık görüntü listesi ve haritasındaki olası kilitlenmeyi düzeltme 2eb6570
SnapshotStateListveyaSnapshotStateMapöğesine içerik ekleme işlemi, değişiklik durum kaydına doğrudan yazma işlemiyle eşzamanlı olarak yapılıyorsa kilitlenmeyle karşılaşabilir. Bu durum, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma işlemlerini kullanan 93fcae828b ile tanıtılan değişikliklerle karşılaşma olasılığı önemli ölçüde artmıştır.Artık harita veya liste kilidi tutulurken asla anlık görüntü kilidi alınmaya çalışılmaz.
Sürüm 1.4.1
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.1 iptal edilir. 1.4.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Düğüm grupları sonlandırılırken
endToMarker()düzeltildi. d71d980
Sürüm 1.4.0
22 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0 iptal edilir. 1.4.0 sürümü şu commit'leri içerir.
1.3.0 sürümünden beri yapılan önemli değişiklikler
- İlk beste için
LiveDataöğesinden başlatılan değeri kullanma 3680e25 - Compose düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallbackekleyin. 8b6a258 parameterTypesmülkünüComposableMethod7b6c7ad kimlikli hesaba ekleme
Hata Düzeltmeleri ve Performans İyileştirmeleri
SnapshotStateObserver29f4a3e içindeki her iki kapsam dizinini de temizleyin.- Atlanamayan lambda'ların gövdesinde gereken grupları ekleyin 7d06752
- Anlık görüntü durumu 93fcae8'in bellek referans özelliklerini iyileştirin.
- Kompozisyon yerel aramalarında kutu oluşturmayı kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanma 6388d8d
SnapshotStateObserveröğesini yinelemeli ve eşzamanlı uygulamalara karşı koruma 98cb6baIdentityArraySet"get" yöntemine bir check-index-bounds kontrolü eklendi 35a77d3ViewTreeLifecycleOwneruzantılarını kullanmak için oluşturma modülünü güncelleme 21c2122- Recomposer çerçeveyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
- Recomposer 8f8656f iptal edilirken oluşan sınırların dışında dizin kilitlenmesi sorununu düzeltme
- Composition'ın üst sağlayıcıları değiştiyse her zaman yeniden oluşturmayı zorunlu kılma 9526fcc
- İptal edilen işler için yeniden oluşturma toleransı a55f7ed
- Çok sayıda beste için geçersiz kılma işlemlerini iyileştirme 9b7ed67
- Yerel olmayan iadeler için kapatma grupları oluşturma sorununu düzeltme b6f590c
Sürüm 1.4.0-rc01
8 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01 iptal edilir. 1.4.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Sürüm 1.4.0-beta02
22 Şubat 2023
androidx.compose.runtime:runtime:1.4.0-beta02 ve androidx.compose.runtime:runtime-saveable:1.4.0-beta02 yayınlandı. 1.4.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.4.0-beta01
8 Şubat 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01 iptal edilir. 1.4.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Compose düğümlerinin yaşam döngüsünü gözlemlemeye olanak tanıyan
ComposeNodeLifecycleCallbackeklendi (I3731b) - Bu işlev yalnızca testte güvenli bir şekilde çağrılabildiğinden
@TestOnly,Composer.disableSourceInformation()'e eklendi. (I896c8)
Hata Düzeltmeleri
- Bileşim yerel aramalarında kutu oluşturmayı kaldırma (62f66a)
- Anlık görüntü durumunun bellek referans özelliklerini iyileştirme (dfb451)
Sürüm 1.4.0-alpha05
25 Ocak 2023
androidx.compose.runtime:runtime:1.4.0-alpha05 ve androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 yayınlandı. 1.4.0-alpha05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Satır içi/kullanımdan kaldırılmış-gizli işlevlerin türü/nullability'siyle ilgili daha fazla bilgi (I24f91)
Sürüm 1.4.0-alpha04
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04 iptal edilir. 1.4.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
TestMonotonicFrameClockartık doğru deneysel notu kullanıyor. (I95c9e)
Hata Düzeltmeleri
SnapshotStateObserveröğesini yinelemeli ve eşzamanlı uygulamalardan koruma (d902fb)
Sürüm 1.4.0-alpha03
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03 iptal edilir. 1.4.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
ComposableMethodsınıfınajava.lang.reflect.Method#getParameterTypes()(Iab0c3) ile benzer yeni bir herkese açık yöntem ekleme
Hata Düzeltmeleri
- Anlık görüntü uygulama bildirimleri artık
Recomposerdeğişiklikleri uyguladıktan sonra gönderiliyor. (Iad6c0, b/222093277)
Sürüm 1.4.0-alpha02
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02 iptal edilir. 1.4.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.4.0-alpha01
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01 iptal edilir. 1.4.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
SnapshotStateListveSnapshotStateMapartık sırasıylatoList()vetoMap()'nin açık uygulamalarına sahip. Bu yöntemler, içeriklerini depolamak için kullanılan dahili değişmez verileri döndürdükleri için kopyalama işlemi yapmadan mevcut içeriklerini döndürür. Bu değer, örneğin verilerin kopyalanmasını gerektirmedensnapshotFlowkullanılarak değer akışı oluşturmak için kullanılabilir. (Ica2bd)
Sürüm 1.3
Sürüm 1.3.3
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.3.3 iptal edilir. 1.3.3 sürümü şu commit'leri içerir.
- 1.3.2 sürümünden beri değişiklik yok
Sürüm 1.3.2
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.3.2 iptal edilir. 1.3.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- androidx.compose.ui 1.3.2'yi destekleyecek şekilde güncellendi
Sürüm 1.3.1
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.3.1 iptal edilir. 1.3.1 sürümü şu commit'leri içerir.
Sürüm 1.3.0
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0 iptal edilir. 1.3.0 sürümü şu commit'leri içerir.
1.2.0 sürümünden beri yapılan önemli değişiklikler
İstisna İşleme / Canlı Düzenleme Desteği
- Canlı düzenleme özelliğini daha iyi desteklemek için beste sırasında istisnaların işlenmesini sağlayan API'ler eklendi.
- Anında yeniden yükleme için kompozisyon hatası işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını ele alma
Bileşim İzleme
- Yeni kompozisyon izleme araçlarını desteklemek için çalışma zamanı izleme API'leri eklendi.
- Birleştirilebilir izleme etkinliği başlangıç/bitiş çağrıları oluşturma
- ComposerKt.traceEventStart(Int, String) yeniden eklendi
Composable Reflection API'leri
- Birleştirilebilir API'lerin daha güvenilir yansıtma tabanlı çağrılmasına olanak tanıyan yeni bir
ComposableMethodAPI eklendi. - invokeComposable'ı Compose çalışma zamanına taşıma
- API'yi yeniden çalışarak birleştirilebilir yöntemi çağırma
Çalışma Zamanı Düzeltmeleri
- Yer tablosunda işaretçi kontrolü için hatalı aralık testini düzeltme
- Taşınabilir içeriğin SubcomposeLayout'a taşınmasına ve SubcomposeLayout'tan taşınmasına izin verme
- Alt kompozisyonun yeni içeriğine taşınan içeriğin düzeltilmesi
Anlık Görüntü Sistemi
- Anlık görüntü sistemi, bellek yönetimi, performans ve doğruluk konusunda çeşitli iyileştirmeler aldı.
- SnapshotStateObserver'da kapsam kaldırma işlemini optimize etme
- Şeffaf anlık görüntülerden oluşturulan iç içe anlık görüntüleri silme
- Durumun genel anlık görüntüden okunması sırasında oluşan yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState'i destekleme
- Türetilmiş durumun diğer kapsamlar okunurken kompozisyondan kaldırılmasını önleme
- DerivedState içinde HashMap yerine IdentityArrayMap kullanma
- Türetilmiş durum gözlemcilerini, değiştirilebilir vektör kullanacak şekilde güncelleyin
- SnapshotStateObserver durum temizliğini güncelleme
- SnapshotStateObserver.invalidated yerine ArraySet kullanma
- Durumun genel anlık görüntüden okunması sırasında oluşan yarış durumu düzeltildi
- Türetilmiş durum karma hesaplamasında eski kaydın kullanımını düzeltme
- Genel anlık görüntüyü ilerletirken yarışma koşulunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerinin temizlenmesini hızlandırma
Sürüm 1.3.0-rc01
5 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01 iptal edilir. 1.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yuva tablosundan gelen
ArrayIndexOutOfBoundsExceptiondüzeltildi (b/249076084).
Sürüm 1.3.0-beta03
21 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03 iptal edilir. 1.3.0-beta03 sürümü şu commit'leri içerir.
Davranışa Zarar Veren Değişiklik
rememberverememberCoroutineScopeparametrelericrossinlineolarak değiştirildi. Bu, daha sonra dahili bir hatanın bildirilmesine neden olacak erken dönüşe izin vermek yerine erken dönüş için bir hata bildirir.- Bu değişiklik, potansiyel olarak yeni derleyici hatalarının bildirilmesine yol açabilir. Bu durumda, bu işlevlere iletilen lambda'lardan yerel olmayan dönüşlerin kaldırılması gerekir. (Ibea62)
Sürüm 1.3.0-beta02
7 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02 iptal edilir. 1.3.0-beta02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Güncellenen API (I64ca0)
Sürüm 1.3.0-beta01
24 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01 iptal edilir. 1.3.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Bu API'yi kullanan geliştirici araçlarının, kimliğini kullanarak bir kompozisyonun alt grubunu hızlıca bulmasına olanak tanımak için
CompositionData'yefindyöntemi eklendi. (I5794f)
Sürüm 1.3.0-alpha03
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03 iptal edilir. 1.3.0-alpha03 sürümü şu commit'leri içerir.
Sürüm 1.3.0-alpha02
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02 iptal edilir. 1.3.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Geriye dönük uyumluluk için
ComposerKt.traceEventStart(Int, String)yeniden eklendi (I6e6de)
Sürüm 1.3.0-alpha01
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01 iptal edilir. 1.3.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yardımcı işlevlerin çalışma zamanına taşınması (I4f729)
Sürüm 1.2
Sürüm 1.2.1
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.2.1 iptal edilir. 1.2.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bellek sızıntısı düzeltildi: Şeffaf anlık görüntülerden oluşturulan iç içe anlık görüntüler siliniyor. b/239603305
Sürüm 1.2.0
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.2.0 iptal edilir. 1.2.0 sürümü şu commit'leri içerir.
1.1.0 sürümünden beri yapılan önemli değişiklikler
Compose çalışma zamanında, 1.2.0 sürümünde kullanıma sunulan birkaç özelliğin yanı sıra birçok dengeleyici hata düzeltmesi yapıldı. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimlerini etkinleştirmek için kullanılabilen
movableContentOfAPI'nin kullanıma sunulması oldu.movableContentOfAPI, bir composable lambda'yı durumunu ve ilgili düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştürür. Önceki görüşme kompozisyondan ayrıldığında durum geçici olarak korunur. Lambda'ya yeni bir görüşme geldiğinde ise durum ve ilişkili düğümler yeni görüşmenin konumuna taşınır. Yeni bir görüşme eklenmezse durum kalıcı olarak kaldırılır ve hatırlatma gözlemcilerine bildirim gönderilir.Aynı bileşimde bir
movableContentOflambda birden fazla kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar bileşimden ayrılıp yeni çağrılar girerken durum, çağrılma sırasına göre ilk ayrılan çağrılardan giren çağrılara taşınır. Yeni aramalar tarafından talep edilmeyen tüm durumlar kalıcı olarak kaldırılır.Bu ve birkaç yeni özelliğin yanı sıra çalışma zamanı ve anlık görüntü durumu sistemini dengelemek için de çok zaman harcandı. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özetlenmiş listesini aşağıda bulabilirsiniz:
1.2 bölgesindeki yeni özellikler
- Add experimental snapshot unsafeEnter/Leave
- Add Snapshot.asContextElement deneysel API'si
- Snapshot.withoutReadObservation'ı kullanıma sunuyoruz
- Durumun kompozisyon içinde hareket etmesine izin verme
- Compose'da yeniden oluşturma işlemlerini izleme
1.2'daki performans
- Kompozisyonun yerel performansını artırma
- Oluşturma için temel profiller, karşılaştırmalar kullanılarak elde edilmelidir
1.2 ile İlgili Hata Düzeltmeleri
- Yayın yeniden oluşturma kapsamlarından izleme bilgilerini kaldırma
- Türetilmiş durumun diğer kapsamlar okunurken kompozisyondan kaldırılmasını önleme
- SnapshotStateObserver'da daha verimli removeScope() kullanma
- Beste içindeki türetilmiş durum bağımlılıklarını temizleme
- currentCompositeKeyHash'in, taşınabilir içerikteki iç yeniden oluşturma işleminden sonra değişmesi sorunu düzeltildi
- Bertaraf sırasında geçersiz kılınan kompozisyonları temizleme
- Yeniden oluşturma sırasında türetilmiş durum okuma sorununu düzeltme
- Türetilmiş durum nesneleri gözlemlenirken bellek sızıntısını düzeltme
- movableContent bileşik karma anahtarının tutarlı olması için düzeltildi
- Oluşturucunun kilitlendiği nadir durum düzeltildi
- Bir grubun geçersiz kılınmasının yeniden oluşturmayı zorunlu kıldığından emin olun
- Girişle birlikte rememberSaveable yanlış sırada geri yüklendiğinde oluşan hata düzeltildi
Sürüm 1.2.0-rc03
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03 iptal edilir. 1.2.0-rc03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Türetilmiş durum gözlemleri daha önce koşulsuz olarak yeniden oluşturma kapsamından ve kompozisyondan birlikte kaldırılıyordu. Bu durum, türetilmiş durumu gözlemlemeye devam edebilecek diğer kapsamları bozuyordu. Bu değişiklik yalnızca diğer kapsamlar tarafından artık gözlemlenmiyorsa türetilmiş durum örneklerini kaldırır. (b/236618362)
Sürüm 1.2.0-rc02
22 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02 iptal edilir. 1.2.0-rc02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-rc01
15 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01 iptal edilir. 1.2.0-rc01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Compose kitaplıklarındaki arayüzler artık jdk8 varsayılan arayüz yöntemleri kullanılarak oluşturuluyor (I5bcf1).
Sürüm 1.2.0-beta03
1 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03 iptal edilir. 1.2.0-beta03 sürümü şu commit'leri içerir.
Sürüm 1.2.0-beta02
18 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02 iptal edilir. 1.2.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-beta01
11 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01 iptal edilir. 1.2.0-beta01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Bu, 1.2'nin ilk beta sürümüdür.
API Değişiklikleri
- Deneysel
Snapshot.unsafeEnter/unsafeLeaveeklendi (I108f3) - Deneysel
Snapshot.asContextElement()API'si eklendi (Iff072) @ComposableTargetek açıklaması ve@ComposableTargetMarkerile işaretlenmiş ek açıklamalar artık@fileöneki kullanılarak dosya kapsamında kullanılabilir. Dosya kapsamındaki bir hedef ek açıklamasının kullanılması, derleyicinin dosyadaki tüm composable işlevlerin ilişkili uygulayıcıyı hedeflemesi gerektiğini varsaymasına neden olur. Örneğin,@file:UiComposablekullanıldığında tüm@Composableişlevlerinin Compose UI uygulayıcısını hedeflediği belirtilir. Başka bir uygulayıcıyı hedeflemesi gereken bir işlev, istenen uygulayıcı için hedef işaretleyici ek açıklamasını açıkça sağlamalıdır. (I40804)
Sürüm 1.2.0-alpha08
20 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08 iptal edilir. 1.2.0-alpha08 sürümü şu commit'leri içerir.
API Değişiklikleri
CompositionTracerarayüzüneTracingInProgresseklendi. (Ic6f12)- Composer'a
recomposeScopeIdentityekleme (I0c873) - Kısıtlanmış izleme API'leri (Composer.setTracer)
OptIn(InternalComposeTracingApi)olarak değiştirildi. (I9187f) - Yeniden kullanılabilir içerikler için oluşturulan durumun kullanım ömrü üzerinde daha iyi kontrol sağlayan
ResuableContentHosteklendi. Örneğin, bir alt bileşen geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, bileşendeki hatırlanan tüm durumlar unutulur ve örneğin, tüm tek kullanımlık efektler tetiklenir. (I2c0f2, b/220322704)
Sürüm 1.2.0-alpha07
6 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07 iptal edilir. 1.2.0-alpha07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeni işlev
Snapshot.withoutReadObservation { ... }eklendi. Kullanıcıların, bu blok sırasında okunan durum değerlerindeki değişikliklere abone olmadan iletilen lambda'yı çalıştırmasına olanak tanır. Anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak istediğiniz ancak gereksiz yeniden oluşturma veya yeniden ölçme işlemlerine neden olmadan değeri okumak istediğiniz kullanım alanlarında bu işlevden yararlanabilirsiniz. (I9f365, b/214054486)
Sürüm 1.2.0-alpha06
23 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06 iptal edilir. 1.2.0-alpha06 sürümü şu commit'leri içerir.
Sürüm 1.2.0-alpha05
9 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05 iptal edilir. 1.2.0-alpha05 sürümü şu commit'leri içerir.
Harici Katkı (External Contribution)
- Kotlinx coroutines 1.6.0 kullanacak şekilde güncellendi (I3366d)
Sürüm 1.2.0-alpha04
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04 iptal edilir. 1.2.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
ComposableTarget,ComposableTargetMarkerveComposableOpenTargetişlevleri eklendi. Bu işlevler, bir composable işlevin, kullanılması için tasarlanmadığı bir uygulayıcıyı hedefleyerek çağrıldığı zaman derleme zamanı raporlamasına olanak tanır.Çoğu durumda, ek açıklamalar compose derleyici eklentisi tarafından çıkarılabilir. Bu nedenle, bu ek açıklamaların doğrudan kullanılması nadir olmalıdır. Çıkarılamayan durumlar arasında özel bir uygulayıcı oluşturma ve kullanma, soyut birleştirilebilir işlevler (ör. arayüz yöntemleri), birleştirilebilir lambda'lar olan alanlar veya genel değişkenler (yerel değişkenler ve parametreler çıkarılır) ya da
ComposeNodeveya ilgili birleştirilebilir işlevlerin kullanılması yer alır.Özel uygulayıcılar için
ComposeNodeveyaReusableComposeNodeişlevini çağıran birleştirilebilir işlevlerin, işlev ve birleştirilebilir lambda parametre türleri içinCompoableTargetek açıklaması eklemesi gerekir. Ancak,ComposableTargetMarkerile açıklama eklenmiş bir açıklama oluşturmanız ve ardından doğrudanComposableTargetyerine işaretlenmiş açıklamanın kullanılması önerilir.ComposableTargetMarkerile işaretlenmiş bir birleştirilebilir ek açıklama, uygulayıcı parametresi olarak özelliğin sınıfının tam nitelikli adını içeren birComposbleTargetile eşdeğerdir.ComposableTargetMarkerkullanımına ilişkin bir örnek içinanroidx.compose.ui.UiComposablebölümüne bakın. (I38f11)
Sürüm 1.2.0-alpha03
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03 iptal edilir. 1.2.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
Bir composable lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştüren
movableContentOfeklendi. Önceki arama kompozisyondan ayrıldığında durum geçici olarak korunur. Lambda'ya yeni bir arama kompozisyona girerse durum ve ilişkili düğümler yeni aramanın konumuna taşınır. Yeni bir arama eklenmezse durum kalıcı olarak kaldırılır ve hatırlatma gözlemcilerine bildirim gönderilir.Aynı kompozisyonda bir
movableContentOflambda birden fazla kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar kompozisyondan ayrılıp yeni çağrılar girerken durum, ayrılan ilk çağrılardan girilen çağrılara çağrılma sırasına göre taşınır. Yeni aramalar tarafından talep edilmeyen tüm durum kalıcı olarak kaldırılır. (Ib4850)Araçların composable işlevlerin daha ayrıntılı izlenmesini sağlaması için kompozisyona bir izleme API'si eklendi. Derleyici artık kaynak bilgilerini içeren izleme API'sine çağrılar oluşturuyor. (Ib0eb5)
Bu çağrıları ve ilişkili kaynak bilgilerini yayın derlemesinden kaldırmak için aşağıdaki ProGuard kuralını ekleyin:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }Yeniden oluşturma sırasında composable'ı tanımlama olanağı veren
InternalComposeScopeöğesini ekleyin. (I07a3f)
Sürüm 1.2.0-alpha02
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02 iptal edilir. 1.2.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-alpha01
12 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01 iptal edilir. 1.2.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Düzen denetleyicisinde değişmez kimlikler oluşturmak için
CompositionDataöğesineidentityalanı eklendi. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10'e bağlıdır.
Sürüm 1.1
Sürüm 1.1.1
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.1 iptal edilir. 1.1.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayListkonumundaNullPointerExceptiondüzeltildi (aosp/1947059, b/206677462)- Android'de panodan okuma sırasında panodaki içerikten kaynaklanan kilitlenme sorunu düzeltildi. (I06020, b/197769306)
LazyVerticalGrid'da RTL düzeltildi (aosp/1931080, b/207510535)
Sürüm 1.1.0
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0 iptal edilir. 1.1.0 sürümü şu commit'leri içerir.
1.0.0 sürümünden beri yapılan önemli değişiklikler
- Android 12'deki aşırı kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmayla ilgili iyileştirmeler
- Compose 1.0 ile ilgili olarak, Materyal bileşenlerinin dokunma hedefi boyutu için Materyal erişilebilirlik kurallarına uymak üzere düzen alanlarını genişleteceğini unutmayın. Örneğin, düğmenin boyutunu daha küçük olarak ayarlasanız bile düğme dokunma hedefi minimum
48x48dpboyutuna genişler. Bu, Compose Material'ı Material Design Components'ın davranışıyla aynı hale getirir. Böylece, View'ları ve Compose'u birlikte kullandığınızda tutarlı bir davranış elde edersiniz. Bu değişiklik, Compose Material bileşenlerini kullanarak kullanıcı arayüzünüzü oluşturduğunuzda dokunma hedefi erişilebilirliği için minimum şartların karşılanmasını da sağlar. - Gezinme sütunu için kararlı destek
- Daha önce deneysel olan bazı API'leri kararlı sürüme geçirir.
- Kotlin'in yeni sürümleri için destek
Sürüm 1.1.0-rc03
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03 iptal edilir. 1.1.0-rc03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Compose Material'ı destekleyecek şekilde güncellendi
1.1.0-rc03
Sürüm 1.1.0-rc01
15 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01 iptal edilir. 1.1.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.1.0-beta04
1 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04 iptal edilir. 1.1.0-beta04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Kotlin ile uyumlu olacak şekilde güncellendi
1.6.0
Sürüm 1.1.0-beta03
17 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03 iptal edilir. 1.1.0-beta03 sürümü şu commit'leri içerir.
Sürüm 1.1.0-beta02
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02 iptal edilir. 1.1.0-beta02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Anlık görüntü kodu birden fazla dosyaya ayrıldı ancak tüm dosyalar aynı JVM sınıfında yer almaya devam ediyor. (Ic6c98)
Sürüm 1.1.0-beta01
27 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01 iptal edilir. 1.1.0-beta01 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha06
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06 iptal edilir. 1.1.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
- Modüller arası çağrılması gereken Composer yöntemlerinden
InternalCompilerApikaldırıldı (I1aa0b) Recomposer.state, türünü StateFlow olarak değiştirmek için kullanımdan kaldırıldı veRecomposer.currentStateile değiştirildi (Ic2ab3, b/197773820)
Sürüm 1.1.0-alpha05
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05 iptal edilir. Version 1.1.0-alpha05 contains these commits.
Sürüm 1.1.0-alpha04
15 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04 iptal edilir. 1.1.0-alpha04 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha03
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03 iptal edilir. 1.1.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
- Compose Compiler artık Compose Runtime'ın eski sürümlerini (1.0) destekliyor. Bu değişiklikten önce, Compose Compiler yalnızca aynı sürümdeki veya daha sonraki Compose Runtime ile uyumluydu. Bu değişiklikten sonra Compose Compiler, Compose Runtime'ın eski bir sürümüyle (1.0) uyumlu hale gelir. (aosp/1796968)
- Compose
1.1.0-alpha03, Kotlin1.5.30'e bağlı olacak şekilde güncellendi. (I74545)
Sürüm 1.1.0-alpha02
18 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02 iptal edilir. 1.1.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha01
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01 iptal edilir. 1.1.0-alpha01 sürümü şu commit'leri içerir.
Sürüm 1.0
Sürüm 1.0.5
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.0.5 iptal edilir. 1.0.5 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Türetilmiş durum örneklerinin izlenmesi sırasında yaşanan kilitlenme sorunu düzeltildi. (aosp/1792247)
Sürüm 1.0.4
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.0.4 iptal edilir. 1.0.4 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.31'ya bağlı olacak şekilde güncellendi
Sürüm 1.0.3
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.3 iptal edilir. 1.0.3 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.30'ya bağlı olacak şekilde güncellendi
Sürüm 1.0.2
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.2 iptal edilir. 1.0.2 sürümü şu commit'leri içerir.
Compose 1.0.2 sürümünü destekleyecek şekilde güncellendi. Compose 1.0.2, Kotlin 1.5.21 ile uyumluluğunu sürdürüyor.
Sürüm 1.0.1
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.0.1 iptal edilir. 1.0.1 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.21'ya bağlı olacak şekilde güncellendi.
Sürüm 1.0.0
28 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0 iptal edilir. 1.0.0 sürümü şu commit'leri içerir.
1.0.0 sürümündeki başlıca özellikler
Bu, Compose'un ilk kararlı sürümüdür. Daha fazla bilgi için lütfen resmi Compose Release bloguna göz atın.
Bilinen Sorunlar
Android Studio Bumblebee Canary 4 veya AGP
7.1.0-alpha04/7.1.0-alpha05kullanıyorsanız aşağıdaki kilitlenmeyle karşılaşabilirsiniz:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Düzeltmek için
build.gradledosyanızda minSdkVersion'ı geçici olarak 24 veya daha yüksek bir sürüme yükseltin. Bu sorun, Android Studio Bumblebee ve AGP'nin bir sonraki sürümünde düzeltilecektir7.1. (b/194289155)
Sürüm 1.0.0-rc02
14 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02 iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.
- SnapshotStateObserver'da aralıklı NullPointerException'lara neden olan yarışma durumları düzeltildi. (aosp/1763445, aosp/1758105, b/192677711)
- Çalışma zamanı anlık görüntülerinin
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been appliedkilitlenmelerine neden olmasıyla ilgili sorunlar düzeltildi. (b/193006595, b/192570897)
Sürüm 1.0.0-rc01
1 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01 iptal edilir. 1.0.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.0.0-beta09
16 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09 iptal edilir. 1.0.0-beta09 sürümü şu commit'leri içerir.
Eklenen profil kuralları
Bu sürüm, aşağıdaki Compose modüllerine profil kuralları ekler (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Profil kuralları nedir?
Bir kitaplığın profil kuralları,
src/mainveya eşdeğer dizinde bulunan bir metin dosyasındabaseline-prof.txtbelirtilir. Dosyada her satırda bir kural belirtilir. Bu durumda kural, kitaplıktaki yöntemlerle veya sınıflarla eşleşme için kullanılan bir kalıptır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...kullanılırken kullanılan okunabilir ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.Bir yöntem kuralı aşağıdaki kalıba sahip olur:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Sınıf kuralı ise aşağıdaki kalıba sahip olur:
<CLASS_DESCRIPTOR>Burada
<FLAGS>, bu yöntemin "Popüler", "Başlangıç" veya "Başlangıç Sonrası" olarak işaretlenip işaretlenmeyeceğini belirtmek için kullanılanH,SvePkarakterlerinden bir veya daha fazlasıdır.<CLASS_DESCRIPTOR>, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Örneğin,androidx.compose.runtime.SlotTablesınıfının tanımlayıcısıLandroidx/compose/runtime/SlotTable;olur.<METHOD_SIGNATURE>, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve dönüş türlerini içerir. Örneğin,LayoutNodeüzerindekifun isPlaced(): Booleanyönteminin imzasıisPlaced()Z'dir.Bu kalıplar, tek bir kuralın birden fazla yöntemi veya sınıfı kapsaması için joker karakterler (
**,*ve?) içerebilir.
Kurallar ne işe yarar?
Hişaretine sahip bir yöntem, bu yöntemin "sık kullanılan" bir yöntem olduğunu ve önceden derlenmesi gerektiğini gösterir.Sişaretine sahip bir yöntem, başlangıçta çağrılan bir yöntem olduğunu gösterir. Bu yöntemin, başlangıçta derleme ve yorumlama maliyetini önlemek için önceden derlenmesi gerekir.Pişaretine sahip bir yöntem, başlatma işleminden sonra çağrılan bir yöntem olduğunu gösterir.Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetini önlemek için yığında önceden ayrılması gerektiğini gösterir.
Nasıl çalışır?
- Kitaplıklar, AAR yapıtlarında paketlenecek bu kuralları tanımlayabilir. Bu yapıtları içeren bir uygulama oluşturulduğunda bu kurallar birleştirilir ve birleştirilmiş kurallar, uygulamaya özgü kompakt bir ikili ART profili oluşturmak için kullanılır. ART, uygulamanın performansını (özellikle ilk çalıştırma) iyileştirmek için uygulamanın belirli bir alt kümesini önceden derlemek üzere uygulama cihazlara yüklendiğinde bu profilden yararlanabilir. Bunun hata ayıklanabilir uygulamaları etkilemeyeceğini unutmayın.
Sürüm 1.0.0-beta08
2 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08 iptal edilir. 1.0.0-beta08 sürümü şu commit'leri içerir.
API Değişiklikleri
State<T>artıkState<out T>(I69049)ControlledCompositionTek bir yeniden oluşturma geçişinde değişikliklerin yeniden oluşturulmasını sağlayan API değişikliği. (Iaafd1, b/184173932)
Sürüm 1.0.0-beta07
18 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07 iptal edilir. 1.0.0-beta07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Derleyici tarafından oluşturulan kaynak bilgilerinin kaynak küçültme sırasında kaldırılmasına olanak tanıyan yeni Compose derleyici API'leri eklendi. (Ia34e6)
Anahtar değiştirildiğinde içeriklerdeki düğümleri değiştirmek yerine yeniden kullanmayı deneyen
ReusableContentözelliğini kullanıma sunar. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler hariç olmak üzere içerik için yuva tablosundaki önceki değerler yoksayılır.ReusableComposeNodeişlevi kullanıma sunuluyor. Bu işlev,ComposeNodeişlevinde olduğu gibi yayımlanan düğümü değiştirmek yerine yeniden kullanır. (I1dd86)@ComposeCompilerApiartık@RequiresOptIn(Iab690)
Hata Düzeltmeleri
- LazyColumn/Row, kaydırılarak görünürlükten çıkmış olsa bile daha önce görünür olan 2 öğeyi etkin (kaldırılmamış) tutar. Bu sayede, yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt bileşenleri yeniden kullanmasına olanak tanınır. Bu da kaydırma performansını artırır. (Ie5555)
Sürüm 1.0.0-beta06
5 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06 iptal edilir. 1.0.0-beta06 sürümü şu commit'leri içerir.
API Değişiklikleri
@ComposeCompilerApiartık@RequiresOptIn(Iab690)
Sürüm 1.0.0-beta05
21 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05 iptal edilir. 1.0.0-beta05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Kayıt anlık görüntü okuma ve yazma işlemleri için
@InternalComposeApikaldırıldı (Id134d)
Hata Düzeltmeleri
- ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumlu (I6f9de, b/184718994)
Sürüm 1.0.0-beta04
7 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04 iptal edilir. 1.0.0-beta04 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabiliyordu. Bu değişiklikten sonra hiçbir yerel composable işlevi atlanmayacak. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri alması ve bunların atlanmasının yaygın bir hata kaynağı olması nedeniyle yapılmıştır.
Özetlemek gerekirse şu örneği inceleyin:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }Bu değişiklikten önce,
ShowCountcomposable işlevi,countparametresi güncellendikten sonra bile her zaman atlanıyordu. Bu durum artık geçerli değil. (I5648a)rememberSaveable(), giriş parametreleriyle (I1b110, b/182403380) kullanıldığında eski değeri geri yükleme sorunu düzeltildi.
Sürüm 1.0.0-beta03
24 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03 iptal edilir. Version 1.0.0-beta03 contains these commits.
API Değişiklikleri
DefaultMonotonicFrameClockdesteği sonlandırıldı.withFrameNanosveyaRecomposer.runRecomposeAndApplyChangesileMonotonicFrameClockolmadan yapılan aramalar artıkIllegalStateExceptionhatası verecek. (I4eb0d)
Sürüm 1.0.0-beta02
10 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02 iptal edilir. 1.0.0-beta02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımına kısıtlamalar getirme (I6aa29, b/174531520)
- Navigation-compose hedefinde kullanıldığında bozuk
rememberSaveable { mutableStateOf(0) }simgesiyle ilgili düzeltme. (I1312b, b/180042685, b/180701630)
Sürüm 1.0.0-beta01
24 Şubat 2021
androidx.compose.runtime:runtime-*:1.0.0-beta01 iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.
API Değişiklikleri
- Ana çerçeve döngüsünün dışında geçersiz kılınan kompozisyonları yeniden oluşturmak için
Recomposer.runRecomposeConcurrentlyAndApplyChangesdeneysel API'yi ekleyin. (I342d0) - @ReadOnlyComposable ile işaretlenen tüm composable'lar artık yalnızca diğer @ReadOnlyComposable'lara çağrı yapmalarını sağlamak için derleme zamanında doğrulanıyor (I58961).
compositionLocalOfvestaticCompositionLocalOfiçindefaultFactoryartık isteğe bağlı değil, zorunlu.Bu değişiklik, varsayılan fabrika sağlanmayan, boş değer atanamayan türlerdeki olası bir tür hatasını ortadan kaldırır. Daha önce bu, null yapılamayan bir tür için null referans sağlıyordu.
Boş değer atanabilir türler için varsayılan fabrika olarak
{ null }değerini sağlamayı düşünebilirsiniz.Anlamlı bir varsayılan değer sağlanmadığı sürece, null değer içermeyen türlerle yerel ayarların kullanılmasını önermiyoruz. Mantıklı bir varsayılan değer yoksa
defaultFactorylambda'sı istisna oluşturmalıdır. Ancak bir istisna oluşturmak, yerel ayarın tüketicilerinin, tür sistemi tarafından zorunlu kılınmayan bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)Kullanımdan kaldırılan semboller, Compose çalışma zamanından kaldırıldı (I3252c).
Artık kullanılmayan
emptyContent()kaldırıldı. Bunun yerine{}politikasını kullanın. (Idb33f, b/179432510)Providers, CompositionLocalProvider olarak yeniden adlandırıldı.
- Composition oluşturucusu artık anahtar parametresini kabul etmiyor ve kullanımdan kaldırıldı.
- currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey özelliğe dönüştürüldü.
- CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, somut bir sınıf yerine arayüz haline getirildi ve artık tür parametreleri içermiyor.
- ComposableLambdaN, somut bir sınıf yerine arayüz haline getirildi ve artık tür parametreleri yok.
- snapshotFlow işlevi, androidx.compose.runtime ad alanına taşındı
- SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değildir.
- Üst düzey @TestOnly clearRoots işlevi kaldırıldı. Artık gerekli değil.
- keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
- Composer.collectKeySourceInformation kaldırıldı. Artık gerekli değil.
- isJoinedKey, joinedKeyLeft ve joinedKeyRight yöntemleri kaldırıldı. Artık gerekli değildir.
- Çeşitli üst düzey API'ler farklı dosyalara taşındı ve yeniden düzenlendi. Kotlin'in dosya sınıfı semantiği nedeniyle bu durum, kaynak uyumluluğunu değil ikili uyumluluğu bozacaktır. Bu nedenle, çoğu kullanıcı için sorun teşkil etmez.
- (I99b7d, b/177245490)
SnapshotStateObserver artık deneysel değil (Id2e6a)
Daha önce desteği sonlandırılan bazı API'ler silindi (Ice5da, b/178633932).
Material API'de aşağıdaki değişiklikler yapıldı:
- Varsayılan dolguyu özelleştirmeye olanak tanımak için Top/BottomAppBar'a contentPadding parametresi eklendi.
- Gerekli parametrelerin isteğe bağlı parametrelerden önce gelmesiyle ilgili API yönergelerine uymak için BackdropScaffold'daki parametreler yeniden sıralandı.
- BottomNavigationItem'daki
iconparametresi,selectedveonClicksonrasına taşındı. - BottomNavigationItem'daki
alwaysShowLabelsparametresialwaysShowLabelolarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContentparametrelericontentolarak yeniden adlandırıldı. ButtonDefaults.buttonColors()içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediğinden kodunuzda hataya neden olmayacağını lütfen unutmayın. Adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde kodunuz eskisi gibi çalışmaz.darkColors()listesinesecondaryVariantparametresi eklendi. Bu renk genellikle koyu temadakisecondaryile aynıdır ancak tutarlılık ve daha fazla özelleştirme için eklenmiştir.- Yaygın olarak kullanılmadıkları / faydalı olmadıkları için ElevationDefaults ve animateElevation() işlevleri herkese açık API yüzeyinden kaldırıldı.
SlideriçindekionValueChangeEnd,onValueChangeFinishedolarak yeniden adlandırıldı ve boş değer atanabilir hâle getirildi.- Tutarlılık için
Snackbariçindekitextparametresicontentolarak yeniden adlandırıldı. - Varsayılan dolguyu özelleştirmeye olanak tanımak için
DropdownMenuItem'yecontentPaddingparametresi eklendi vecontent,RowScope'ün uzantısı haline getirildi. ModalDrawerLayout,ModalDrawerolarak yeniden adlandırıldı.BottomDrawerLayout,BottomDrawerolarak yeniden adlandırıldı.- (I1cc66)
Sürüm 1.0.0-alpha12
10 Şubat 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12 iptal edilir. 1.0.0-alpha12 sürümü şu commit'leri içerir.
API Değişiklikleri
- ViewGroups desteği UiApplier'dan kaldırıldı. Kullanımdan kaldırılan emitView composable'ları kaldırıldı. (Ifb214)
- CompositionReference, CompositionContext olarak yeniden adlandırıldı (I53fcb)
- ComponentActivity.setContent, androidx.activity:activity-compose modülünde androidx.activity.compose.setContent'e taşındı. (Icf416)
- Snapshot API, API yönergesiyle daha tutarlı olacak şekilde güncellendi ve dahili uygulama sınıfları herkese açık API'den gizlendi. (Id9e32)
- Ambients, Ambient -> CompositionLocal yeniden adlandırmasıyla eşleşecek şekilde yeniden adlandırıldı. Ambients, AmbientFoo olarak adlandırılırdı. Artık CompositionLocals, LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient, CompositionLocal olarak, ambientOf / staticAmbientOf ise sırasıyla compositionLocalOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacını daha net hale getirir: bir kompozisyona yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinin önüne
Localeklenmelidir. Örneğin, val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - takeMutableSnapshot ve takeSnapshot, Snapshot'ın yardımcı yöntemleri olarak taşındı. (I91f19)
@ComposableContract, daha ayrıntılı üç ek açıklama lehine kullanımdan kaldırıldı.@ComposableContract(restartable = false),@NonRestartableComposableoldu.@ComposableContract(readonly = true),@ReadOnlyComposableoldu.@ComposableContract(preventCapture = true),@DisallowComposableCallsoldu.@ComposableContract(tracked = true)kaldırıldı. (I60a9d)emptyContent() ve (@Composable () -> Unit).orEmpty() yardımcı programları, artık olumlu bir performans etkisi veya değeri olmadığından kullanımdan kaldırıldı (I0484d).
snapshotFlowvewithMutableSnapshotartık deneysel değil (I6a45f)Yeniden oluşturucular artık kapatılabilir. Kapalı yeniden oluşturucular, alt coroutine'ler tamamlanana kadar yeniden oluşturmaya devam eder. Recomposer.shutDown, kapatma ile karşıtlık oluşturması için iptal olarak yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatchyapısının desteği sonlandırıldı. MonotonicFrameClock artık compose:runtime içinde, AndroidUiDispatcher ise compose:ui içinde bulunabilir. (Ib5c36)Compose derleyici eklentisinin hedeflediği API, somut bir sınıf yerine arayüz kullanacak şekilde yeniden düzenlendi. Arayüzde artık tür parametresi de kullanılmıyor.
Bu, kaynak kodu uyumluluğunu etkilememesi gereken ancak ikili uyumluluğu bozan bir dahili değişikliktir. (I3b922, b/169406779)
SnapshotMutableState kullanıma sunuldu (Icfd03)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (Ica7c6)
Recomposer.current() kaldırıldı. [Abstract]ComposeView artık pencere için ViewTreeLifecycleOwner tarafından yönlendirilen, pencere kapsamlı ve geç oluşturulan Recomposer'ları varsayılan olarak kullanıyor. Ana makinenin yaşam döngüsü durdurulduğunda yeniden oluşturma ve withFrameNanos tabanlı animasyon işaretleri duraklatılır. (I38e11)
Recomposer.runningRecomposers artık süreçteki devam eden kompozisyon durumunu gözlemlemek için salt okunur RecomposerInfo'nun genel bir StateFlow'unu sunuyor. Şu anda kullanımdan kaldırılmış olan Recomposer.current() yerine bu API'yi tercih edin. (If8ebe)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (I3ea68).
Sürüm 1.0.0-alpha11
28 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11 iptal edilir. 1.0.0-alpha11 sürümü şu commit'leri içerir.
API Değişiklikleri
- onCommit, onDispose ve onActive, SideEffect ve DisposableEffect API'leri lehine desteği sonlandırıldı (If760e).
- emit() API'si ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır. Yalnızca Compose'un adlandırma kurallarına (I4137b) uymak için farklı bir ad kullanılmıştır.
- invalidate ve compositionReference() işlevlerinin desteği, sırasıyla currentRecomposeScope ve rememberCompositionReference lehine sonlandırıldı. (I583a8)
RememberObserver, CompositionLifecycleObserver'ın yerini alıyor ve CompositionLifecycleObserver artık kullanımdan kaldırıldı.
RememberObserver, değiştirilmiş anlamlara ve yeniden adlandırılmış yöntemlere sahipCompositionLifecycleObserveryerine kullanılabilir. Yalnızca bir kez hatırlanan nesneler için yeni API'ye geçiş mekanik olarak yapılabilir. Bu, önerilen uygulamadır ve olmaya devam edecektir. Ancak bir kompozisyonda bir referans birden fazla kez hatırlanırsaonEnteryalnızca bir kez çağrılırkenonRememberedher referans için çağrılır.onEnterNesne,WithConstraintsveScaffoldgibi alt bileşimlerde kullanılıyorsa birden çok kez çağrılıyordu. Bu durum, tekonEnterçağrısı garantisini güvenilmez hale getiriyordu veRememberObserveriçin kaldırıldı.RememberObserver,remember'ye iletilen geri çağırmadanRememberObserverörneği döndürülürse ancak beste durumunda hatırlanmazsa çağrılanonAbandoned'ı ekler ve bu nedenle hiçbir zamanonRememberedçağrılmaz. Bu durum, bir istisna kompozisyonu tamamlamadan önce sonlandırdığında veya kompozisyon, oluşturulduğu durum artık geçerli olmadığı ya da başka bir nedenle artık gerekli olmadığı için atıldığında ortaya çıkabilir. Yukarıdaki tek referans önerisini izleyenRememberObserverörneği harici bir kaynağı izliyorsa hemonForgottenhem deonAbandoned, kaynağın artık gerekli olmadığını gösterir. Nesne,onRememberediçinde başlatılan işi veya ayrılan kaynakları izliyorsaonRememberedçağrıldığındaonAbandonedçağrılmayacağındanonAbandonedyoksayılabilir. (I02c36)collectAsState()işlevlerini satır içi olarak işaretlemeyin (Ia73e4)
Hata Düzeltmeleri
- WithConstraints, BoxWithConstraints olarak yeniden düzenlendi ve foundation.layout'a taşındı. (I9420b, b/173387208)
- Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)
Sürüm 1.0.0-alpha10
13 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10 iptal edilir. Version 1.0.0-alpha10 contains these commits.
Zarar Veren Değişiklik (Breaking Change)
Dahili derleyici API'sinin yeniden yapılandırılması, tüm
@Composableişlevleri tamamlandıktan sonra, bileşim sonucunda oluşturulan düğümlerdeki değişikliklerin bileşimin "değişiklikleri uygula" aşamasında toplu olarak uygulanmasına olanak tanır.Bu, davranışla ilgili bir uyumsuzluk değişikliğidir. Değişiklikler uygulanana kadar düğümler dahili ve deneysel API'lerden kullanılamayacağından uygulama kodunu etkileyebilir. Bu sorun genellikle, düğümler oluşturulup başlatılana kadar kodun yürütülmesini ertelemek için bu tür bağımlılıkları olan kodu
SideEffectcomposable'ın içine alarak çözülebilir. (I018da)
API Değişiklikleri
- Yeniden oluşturucunun değişiklikleri uygulayıp uygulamadığını izleme yöntemi eklendi. (I1b3e2)
[Abstract]ComposeView API'lerini, Compose tabanlı görünümlerin geri dönüştürülmesine, kompozisyonlarının daha sonra yeniden oluşturulmak üzere kaldırılmasına olanak tanıyacak şekilde genişletin. Pencere kapsamlı yeniden oluşturucuları yüklemek ve keşfetmek için API'ler ekleyin ve alt kompozisyonlar oluşturmak için CompositionReference'lar.
[Abstract]ComposeViews'in bileşimden çıkarma stratejisini yapılandırmak için ViewCompositionStrategy ekleyin. Varsayılan davranış, pencere ayrıldığında çıkarma işlemidir. (I860ab)
Hata Düzeltmeleri
- Recomposer artık mevcut durumunun bir akışını gösteriyor. Bu sayede, etkinliği ve ilişkili efektlerin etkinliği izlenebiliyor. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent üzerinden erişilebilir (I87c57, b/173086397).
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09 iptal edilir. 1.0.0-alpha09 sürümü şu commit'leri içerir.
API Değişiklikleri
SlotTable, SlotReader ve SlotWriter, herkese açık API'den kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretleniyordu. Artık oluşturma modülünün içinde yer alıyorlar.
Bileşen bilgilerini ayıklamak için kullanılan ui-tooling API'nin yerine CompositionData ve CompositionGroup eklendi. Bunlar herkese açıktır ancak ui-tooling API'nin yorumladığı ham bilgileri sağladıkları için ui-tooling API dışında kullanılmak üzere tasarlanmamıştır (I31a9c).
The Applier class is no longer considered an (Id85b0)
Applierarayüzü, ağaç oluşturmayı yukarıdan aşağıya değil aşağıdan yukarıya doğru basitleştirecek şekilde değiştirildi.insert()yöntemi,insertTopDown()olarak yeniden adlandırıldı.insertBottomUp()adlı yeni bir yöntem eklendi.Uygulayıcı, hangi yöntemin daha iyi performans gösterdiğine bağlı olarak
insertTopDown()veyainsertBottomUp()kullanarak düzenlediği ağaca düğümler ekler.LayoutNodeveViewgibi bazı ağaçlar, yukarıdan aşağıya yerine aşağıdan yukarıya doğru oluşturulduğunda çok daha verimli olur. Bu değişiklikten önce, alttan üste yapıyı uygulamak için bir ekleme yığını gerekiyordu. Bu yığının, performans için alttan üste yapıya ihtiyaç duyan her uygulayıcıya kopyalanması gerekiyordu. Bu değişiklikle birlikte, ağacı aşağıdan yukarıya doğru oluşturmak içinApplier, yukarıdan aşağıya doğru oluşturmak için iseinsertTopDown()kullanılır.insertBottomUp()(Icbdc2)Compose, composable çağrıları yapabilen mülk getter'larını destekler. Bu özellik desteklenmeye devam edecek ancak bir özellik alıcısını @Composable olarak bildirme söz dizimi değişiyor.
Bunu yapmak için kullanılan ve artık kullanımdan kaldırılmış söz dizimi, mülkün kendisini açıklama olarak eklemekti:
@Composable val someProperty: Int get() = ...Bunu yapmak için artık doğru olan söz dizimi, özelliğin alıcı yöntemini açıklama ekleyerek belirtmektir:
val someProperty: Int @Composable get() = ...Her iki söz dizimi de bir süre çalışmaya devam edecek ancak kullanımdan kaldırılan söz dizimi sonunda derleme hatasına dönüşecek. (Id9197)
Hata Düzeltmeleri
- AndroidOwner made internal (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) dahili hale getirildi (Id724a)
Sürüm 1.0.0-alpha08
2 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08 iptal edilir. Version 1.0.0-alpha08 contains these commits.
API Değişiklikleri
- Composable lambda parametre adlandırma ve konumlandırma için lint kontrolü eklendi. Bu kontrol, Compose yönergeleriyle tutarlılığı kontrol eder.
Ayrıca, lint kontrolü ve yönergelere göre, sondaki lambda'ları için ad olarak
childrenkullanan bazı API'lercontentolarak taşındı. (Iec48e) - Recomposer artık EmbeddingContext'i kabul etmiyor. Gerekli planlama bağımlılıkları, effectCoroutineContext'ten alınıyor. FrameManager'ın desteği sonlandırıldı. Platform entegrasyonları kendi genel anlık görüntü işlemelerini başlatmalıdır. (I02369)
- RestorableStateHolder.withRestorableState işlevi, RestorableStateProvider olarak yeniden adlandırıldı (I66640).
Hata Düzeltmeleri
Ambientsonekiyle adlandırılan, desteği sonlandırılmış Ambients'leri diğer Ambients ve Compose API yönergelerine uygun olarak Ambient önekiyle adlandırılan yeni özelliklerle değiştirdi. (I33440)- Eski ui-test modülünü ve saplarını kaldırın (I3a7cb)
Sürüm 1.0.0-alpha07
11 Kasım 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07 iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.
Yeni Özellikler
API Değişiklikleri
@UnionTypeek açıklaması kullanımdan kaldırıldı (I57cde)- provideDefault, ambiyans sağlama için provide'a alternatif olarak eklendi ve yalnızca önceden sağlanmış bir ambiyans değeri olmadığında ayarlanacak ambiyans değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
- LaunchedTask, SideEffect ve DisposableEffect API'leriyle tutarlılık sağlamak için LaunchedEffect olarak yeniden adlandırıldı. En iyi uygulamaları teşvik etmek için, konu parametreleri olmayan LaunchedEffect'e izin verilmez. (Ifd3d4)
- Applier'da artık Composer, ağaçta değişiklik uygulamaya başladığında/değişiklik uygulamayı bitirdiğinde çağrılan onBeginChanges/onEndChanges geri çağırmaları var. Gerekirse kaynak yönetimini gruplandırmak için kullanılabilir. (Icf476)
- Recomposer artık oluşturma sırasında CoroutineContext gerektiriyor (Ic4610)
- Herkese açık API'yi etkilememesi gereken dahili SlotTable uygulamasında yapılan değişiklikler. (If9828)
- Başlangıç değerini almayan, desteği sonlandırılmış rxjava2 bağdaştırıcıları kaldırıldı (Idb72f).
Hata Düzeltmeleri
- foundation.Text kullanımdan kaldırıldı ve material.Text ile değiştirildi. Bir temadan değer kullanmayan temel ve tarafsız bir metin API'si için androidx.compose.foundation.BasicText'e bakın. (If64cb)
- BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField'ı kullanın. (I896eb)
- Düzenle ilgili çeşitli semboller androidx.compose.ui'dan androidx.compose.layout.ui'ya taşındı. (I0fa98, b/170475424)
Harici Katkı (External Contribution)
- Oluşturma için
runtime-rxjava3modülü eklendi.runtime-rxjava2ile benzer (I02cbf)
Sürüm 1.0.0-alpha06
28 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06 iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
- Recomposer artık bir CompositionReference ve geçerli bir kompozisyon üst öğesidir. Açıkça yeniden oluşturma artık daha az yerde zorunlu. (I4036f)
- SideEffect'e DisposableEffect karşılığı olan API eklendi. Bu API, onCommit-with-params rolünü doldurur ancak onDispose gerektirir.
- Yeniden oluşturma işleminden elde edilen verileri DisposableEffect'ler veya LaunchedTask'ler gibi devam eden ya da uzun süreli işlemlere yayınlamak için rememberUpdatedState API'si eklendi.
- (Id50b9)
- MutableVector artık RandomAccess'i uyguluyor (I85d73, b/170461551)
- Kompozisyonun yan etkilerini kompozisyon tarafından yönetilen nesnelere uygulamak için SideEffect composable'ı eklendi. SideEffect, onCommit composable'ın yerini alması için tasarlanmıştır. (Ia77c2)
- Yeni deneysel API RestorableStateHolder. [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumu, alt ağacı silmeden önce kaydederek bir sonraki sefer geri yüklenen durumla yeniden oluşturulmasını sağlar. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştirin. Yanıp sönen imleci etkinleştirme seçeneğini ComposeTestRule'dan kaldırın. (If0de3)
Sürüm 1.0.0-alpha05
14 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05 iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Deneysel Modifier.pointerInput giriş değiştiriciyi askıya alıyor (Ia77d2)
- LazyColumn/Row'un kaydırma performansı, her kaydırmada alt bileşen oluşturma işleminde daha az iş yapılarak iyileştirilir. Composition sınıfı için yeni hasInvalidations() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi hasInvalidations() olarak yeniden adlandırıldı (Ib2f32, b/168293643, b/167972292, b/165028371).
- Bir
State<T>değerini zaman içinde güncelleyen kompozisyondan coroutine'leri başlatmak için produceState API'yi ekleyin (Id4a57). - launchInComposition, Compose API yönergeleriyle eşleşmesi için LaunchedTask olarak yeniden adlandırıldı (I99a8e).
- Özel düzenlerdeki place() çağrılarının sırası artık alt öğelerin çizim sırasını tanımlıyor (Ibc9f6)
Sürüm 1.0.0-alpha04
1 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04 iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
- Geçerliliğini yitirdikten sonra düzen ve çizim gözlem kapsamlarının toplanmasına izin vermek için OwnerScope eklendi. (Ic4cf8)
- Diğer State nesnelerini okuyabilen (ve bunlardan türetilebilen) bir hesaplamaya dayalı State nesneleri oluşturmak için derivedStateOf API'si eklendi (If758b).
- SnapshotStateObserver için TestOnly API eklendi (I6e2a9)
Hata Düzeltmeleri
- foundation.Box desteği sonlandırıldı. Lütfen bunun yerine foundation.layout.Box kullanın. (Ie5950, b/167680279)
Sürüm 1.0.0-alpha03
16 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03 iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
CompositionCoroutineScopeartıkMonotonicFrameClockuygulamıyor.withFrameNanosişlevini çağıranlar, üst düzey işlevi açıkça içe aktarmalıdır. (Icb642, b/166778123)
Hata Düzeltmeleri
onNodeveyawaitForIdlegibi genel test işlevlerinin desteği sonlandırıldı. Lütfen ComposeTestRule'da (I7f45a) tanımlanan yeni karşılıklarına geçin.launchInCompositionartık gönderilmeyen eş yordamları başlatmıyor (Ief6af, b/166486000)
Sürüm 1.0.0-alpha02
2 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02 iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Anlık görüntü verilerindeki değişiklikleri kullanmak ve oluşturmak için
snapshotFlowvewithMutableSnapshotAPI'lerini ekleyin. (I3e722) Birleştirilebilir işlevlerin çağrı kuralı değişti. Bu, ikili bir zarar veren değişikliktir. Tüm kitaplıklar, Compose derleyici eklentisinin bu sürümüyle çalışmak için yeniden derlenmelidir.
Bu değişiklik, yalnızca açıkça etkinleştirilen derleyici API'leri değiştiği için kaynak düzeyinde bir hataya neden olmaz. (I7afd2, b/158123185)
EmbeddingContext'ten planlama yöntemleri kaldırıldı (I7b9be)
onPreCommit kullanımdan kaldırıldı. onCommit artık onPreCommit'in davranışına sahip.
onCommit ve onActive artık, bir sonraki koreograf çerçevesinin başında değil, kompozisyon değişikliklerinin kaydedildiği koreograf çerçevesinde çalışır. (I70403)
Sürüm 1.0.0-alpha01
26 Ağustos 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01 iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Sürüm 0.1.0-dev
Sürüm 0.1.0-dev17
19 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev17 iptal edilir. Version 0.1.0-dev17 contains these commits.
API Değişiklikleri
- Özel yayınlar artık ayarlayıcılarından bir veya daha fazlasının atlanabileceğini ve yayından bağımsız olarak yeniden oluşturulabileceğini belirtebilir. (Ibbd13)
Desteği sonlandırılan FrameManager çağrıları kaldırıldı.
Dahili oluşturma API'leri,
mutableStateof()gibi durum nesnelerini izlemek için gereken ek yük miktarını azaltacak şekilde değiştirildi (I80ba6).state { ... }composable'ı artık netlik içinremember { mutableStateOf(...) }'e yapılan açık çağrılar yerine kullanımdan kaldırıldı. Bu, durum yönetimi için genel API yüzeyini ve kavram sayısını azaltır ve sınıf özelliği temsilcisi içinby mutableStateOf()modeliyle eşleşir. (Ia5727)Flow.collectAsState artık varsayılan olarak Dispatchers.Main'i kullanmak yerine varsayılan dağıtıcıyı kompozisyonun kendisinden belirliyor. (I9c1d9)
Durumu kaydeden bir şey for döngüsünde kullanıldığında kilitlenme sorunu düzeltildi. Artık savedInstanceState() içinde aynı anahtara sahip olmaya izin veriliyor. UiSavedStateRegistry'nin API'si bu yeni koşula göre ayarlandı (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Hata Düzeltmeleri
emitViewdesteği sonlandırıldı. Compose'da Görünümler yayınlamak için mümkünseAndroidViewkullanın. Görünümlerin ve ViewGroup'ların doğrudan oluşturulmasının, kompozisyon ağacında yaprak olmadığı sürece gelecekte desteklenmeyeceğini unutmayın. Bu durumda, AndroidView kullanılarak bu işlem gerçekleştirilebilir. (I29b1e, b/163871221)
Sürüm 0.1.0-dev16
5 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16 iptal edilir. 0.1.0-dev16 sürümü şu commit'leri içerir.
API Değişiklikleri
mutableStateOf(),ambientOf()vesavedInstanceStateOf()için varsayılan mutasyon politikası,referentialEqualityPolicy()yerinestructuralEqualityPolicy()olarak değiştirildi.Bir
mutableStateOf()örneğine atanan yeni bir değerin artık değişiklik olarak kabul edilip edilmeyeceğine karar vermek için varsayılan olarak===yerine==kullanılır.https://kotlinlang.org/docs/reference/equality.html adresini ziyaret edin.
ambientOf()vesavedInstanceStateOf(), uygulamalarındamutableStateOf()kullandığındanmutableStateOf()ile tutarlı olacak şekilde değiştirildi.Yapısal eşitliği kullanmak, geliştiricilerin beklentileriyle daha yakından eşleşir.
Örneğin,
val state = mutableStateOf(1f)ardından,
state.value = 1fartık
stateiçin değişiklik olarak kabul edilmeyecek ve beste oluşturma sırasındastatekullanımlarının yeniden oluşturulması gerekmeyecek.Bu, önemli bir değişikliktir ancak çoğu durumda (ör.
equals()öğesini geçersiz kılmayan sınıflar kullanılırken) uygulamanın fark edilebilir bir etkisi olmaz.equals()'yı geçersiz kılan sınıflar (ör.datasınıfları),equals()yöntemleri artık varsayılan olarak birmutableStateOf()'a atandığında çağrıldığından performans düşüşü yaşayabilir.Politika parametresi
policy = referentialEqualityPolicy(),mutableStateOf(),ambientOf()vesavedInstanceStateOf()çağrılarına eklenerek önceki davranış geri yüklenebilir. (Ic21a7)RowveColumnartık satır içi işlevler olduğundan kullanımları önemli ölçüde kolaylaştı. (I75c10)
Hata Düzeltmeleri
- setViewContent desteği sonlandırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
Yeni coroutine tabanlı saatler ile eski geri çağırma tabanlı saatleri kullanan API'ler arasındaki boşluğu doldurmak için MonotonicFrameClock'u AnimationClockObservable olarak kullanmanıza olanak tanıyan MonotonicFrameAnimationClock eklendi.
ManualAnimationClock'un MonotonicFrameClock eşdeğeri artık ManualFrameClock'tur. (I111c7, b/161247083)
Modifier.stateDraggable tamamen yeniden düzenlendi ve Modifier.swipeable olarak yeniden adlandırıldı. Yeni bir SwipeableState sınıfı kullanıma sunuldu. DrawerState ve BottomDrawerState, bu sınıftan devralacak şekilde yeniden düzenlendi. [Modal/Bottom]DrawerLayout artık onStateChange parametresini almıyor. (I72332, b/148023068)
Modifier.plus desteği sonlandırıldı. Bunun yerine Modifier.then kullanın. "Sonra" sıralama sinyali daha güçlüdür ve
Modifier.padding().background() + anotherModifieryazılmasını da engeller. Bu, zinciri bozar ve okunmasını zorlaştırır (Iedd58, b/161529964).SubcomposeLayout eklendi. Bu, ölçüm sırasında alt ağaç kompozisyonu için yalnızca ölçüm sırasında daha sonra kullanılabilen bazı değerleri kullanmak istersek alt öğelerin ölçüm sırasında oluşturulmasına olanak tanıyan düşük seviyeli bir temeldir. Örneğin, WithConstraints, SubcomposeLayout kullanılarak uygulanmaz. (I25cc8)
En basit istenen API'nin kolayca bulunup kullanılabilmesi için Material FilledTextField, TextField olarak yeniden adlandırıldı ve temel TextField, BaseTextField olarak yeniden adlandırıldı (Ia6242, b/155482676).
Modifier.drawBackground, Modifier.background olarak yeniden adlandırıldı (I13677)
Sürüm 0.1.0-dev15
22 Temmuz 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15 iptal edilir. 0.1.0-dev15 sürümü şu commit'leri içerir.
Bağımlılıkları Güncelleme
- Compose'un
0.1.0-dev15sürümünü kullanmak için bağımlılıklarınızı yukarıda Bağımlılıkları bildirme bölümünde gösterilen yeni kod snippet'lerine göre güncellemeniz gerekir.
API Değişiklikleri
@Modelek açıklaması artık kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf'u kullanın. Bu desteği sonlandırma kararı, dikkatli bir şekilde yapılan birçok tartışmanın ardından alınmıştır.Gerekçe
Gerekçe aşağıdakileri kapsar ancak bunlarla sınırlı değildir:
- API yüzey alanını ve öğretmemiz gereken kavramları azaltır.
- Diğer karşılaştırılabilir araç kitleriyle (Swift UI, React, Flutter) daha uyumlu
- Geri alınabilir karar.
@Model'yı daha sonra istediğimiz zaman tekrar kullanıma sunabiliriz. @Modelyapılandırmasıyla ilgili, ele almamız gereken konular olarak uç durum kullanımını ve yanıtlanması zor soruları kaldırır.@Modelveri sınıfları, equals, hashcode vb.- Bazı mülklerimin "gözlemlenmesini" nasıl sağlarım?
- Gözlemde kullanılacak yapısal ve referans eşitliğini nasıl belirtirim?
- Sistemdeki "sihri" azaltır. Kullanıcıların sistemin olduğundan daha akıllı olduğunu (ör. bir listeyi nasıl karşılaştıracağını bildiğini) düşünme olasılığını azaltır.
- Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
- Değişkenden sınıftaki özelliğe yeniden düzenleme özelliğini iyileştirir.
- Eyalete özgü, el yapımı optimizasyonlar yapma olasılığını artırır.
- Ekosistemin geri kalan kısmıyla daha uyumlu hale gelir ve değişmezlik veya "değişebilir durumu benimseme" konusundaki belirsizlik azalır.
Taşımayla İlgili Notlar
@Modelöğesinin mevcut kullanımlarının neredeyse tamamı iki şekilde oldukça kolay bir şekilde dönüştürülür. Aşağıdaki örnekte, yalnızca örnek olması için iki özelliği olan bir@Modelsınıfı ve bu sınıfın composable bir işlevde kullanıldığı gösterilmektedir.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }1. alternatif:
State<OriginalClass>simgesini kullanarak kopya oluşturun.Bu yaklaşım, Kotlin'in veri sınıflarıyla daha kolay hale gelir. Temel olarak, daha önce
varolan tüm özellikleri bir veri sınıfınınvalözellikleri haline getirin, ardındanrememberyerinestatekullanın ve veri sınıfıcopy(...)kolaylık yöntemini kullanarak orijinalin klonlanmış kopyalarına durum değerini atayın.Bu yaklaşımın yalnızca söz konusu sınıfta yapılan tek değişiklikler
Stateörneğinin oluşturulduğu kapsamda yapıldığında işe yaradığını unutmayın. Sınıf, kullanım kapsamı dışında kendi içinde değişiyorsa ve bunu gözlemlemeye güveniyorsanız kullanmak isteyeceğiniz yaklaşım bir sonraki yaklaşımdır.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }2. alternatif: mutableStateOf ve özellik temsilcilerini kullanma
Bu yaklaşım, Kotlin'in özellik temsilcileri ve
mutableStateOfAPI ile kolaylaştırılır. Bu API, kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanır. Temel olarak, orijinal sınıfın tümvarözelliklerini, özellik temsilcisi olarakmutableStateOfolanvarözellikleriyle değiştirin. Bu, sınıfın kullanımının hiç değişmeyeceği, yalnızca dahili uygulamasının değişeceği avantajını sunar. Ancak her mülk artık ayrı ayrı gözlemlendiği/abone olunduğu için davranış, orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenlemeden sonra gördüğünüz yeniden oluşturmalar daha dar olabilir (bu iyi bir şeydir).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, derleme derleyicisi, composable işlevlere yapılan çağrıları dönüştürüyordu. Bu değişiklikle birlikte artık bir composable işlevin gövdesini dönüştürüyor ve çağrı sitesini (çoğunlukla) değiştirmeden bırakıyoruz.
Bu, oluşturma çalışma zamanıyla iletişim kuran mantığın çoğunun, işlev gövdesinin başında gerçekleştiği anlamına gelir.
Bu, Compose'un tüm kullanımları için kaynakla uyumlu bir değişiklik olmalıdır. Compose'u kullanan çoğu kullanıcının bu değişiklik nedeniyle herhangi bir kodu güncellemesi gerekmez.
Bu çalışmayı desteklemek için tüm composable işlevlerin JVM imzası değiştirildi. Tek bir parametreyi kabul eden bir Composable işlevi, 3 parametreyi kabul eden bir işlev haline dönüştürülür. Ek parametreler Composer, bir "anahtar" tam sayısı ve meta verileri çağrılar aracılığıyla yaymak için kullanılan bir bit maskesi tam sayısıdır.
Compose artık varsayılan bağımsız değişkenleri de composable işlevine dönüştürüyor. Bu işlem, işlevin kendisinde ek bir yapay varsayılan aşırı yükleme oluşturmadan gerçekleştirilir. Bu nedenle, bu değişiklik daha az işlevin tanımlanmasına neden olur.
Bu durumdan kaynaklanan bilinen ve kasıtlı davranış değişiklikleri:
- Bazı aramalar, daha önce atlanmayacakları yerlerde atlanacak.
- Varsayılan bağımsız değişken ifadelerindeki birleştirilebilir ifadeler artık doğru şekilde abone olunuyor ve işleniyor
Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer composable işlevlere yayılır. Bu, çalışma zamanında daha az karşılaştırma yapılmasına, yuva tablosu boyutunun küçülmesine ve daha önce atlanmayan composable işlevlerin daha fazla atlanmasına neden olur. 2. Derleme zamanında "statik" olduğu belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Bu, karşılaştırma sayısını ve yuva tablosu boyutunu azaltır. 3. Oluşturulan grup sayısını en aza indirmek için işlevlerin gövdesinin kontrol akışı yapısı kullanılır. Bu, yuva tablosu boyutunu küçültür ve çalışma zamanı için daha az iş yükü anlamına gelir. İşlevlere gönderilen ve işlev gövdesinde kullanılmayan kullanılmamış parametreler, işlevin atlanabilirliğini belirlemede dikkate alınmaz.
Çoğu önemli değişiklik, derleyicinin doğrudan hedeflediği API'lerle ilgiliydi ve Compose'un normal kullanımı etkilenmeyecek: 1. Composer::startExpr kaldırıldı 2. Composer::endExpr kaldırıldı. 3. Composer::call kullanımdan kaldırıldı. 4.
keyişlevinin değişken sayıda bağımsız değişken içermeyen aşırı yüklemeleri kaldırıldı. Bundan sonravarargsürümünü kullanın. 5. Pivotal ek açıklaması kullanımdan kaldırıldı.keyyerine kullanın. 6. ScopeUpdateScope::updateScope, Function1 yerine Function3 bekleyecek şekilde değiştirildi. 7. restartableFunction ve restartableFunctionN, ek derleme zamanı parametreleri içerecek şekilde güncellendi (I60756, b/143464846)MutableVector'a sortWith ve removeRange eklendi (Icccf7)
CompositionLifecycleObserver (I24289) için varsayılan yöntem uygulamaları eklendi.
Applier artık kompozisyonları silmek için clear() yöntemini gerektiriyor (Ibe697)
MutableVector'a asMutableList() işlevi eklendi. Bu işlev, listenin tamamını kopyalamak zorunda kalmadan listenin herkese açık API'ye iletilmesine olanak tanır. (I298df)
Etkinliklere yanıt olarak iş başlatmak için kompozisyonda yönetilen bir CoroutineScope elde etmek üzere rememberCoroutineScope() eklendi. (I0e264)
MutableVector, standart Collection arayüzünün hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde bir hız sunar ve yalnızca şirket içi uygulamalarda kullanılmak üzere tasarlanmıştır. (I8ebd6)
Kotlin Compose'un gerektirdiği sürümde sorun yaşanmaması için
StableMutableListveStableMutableMapgeçici olarak kaldırıldı. Bu arayüzler, Compose'un sorunu içermeyen bir Kotlin sürümüne güncellenmesinin ardından yeniden kullanıma sunulacaktır.SnapshotStateListveSnapshotStateMapartık herkese açık ancakStableMutableListveStableMutableMapgeri yüklendiğinde kullanımdan kaldırılacak. (Ia7769)Animasyon zamanlaması için üst düzey withFrameNanos işlevi eklendi (Ie34c5).
@Untracked ek açıklaması kullanımdan kaldırıldı. @ComposableContract(tracked=false) ile değiştirin (Id211e)
RestartableFunction ve ilişkili API'ler ComposableLambda olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyiciyi hedeflediğinden normalde kaynak düzeyinde uyumluluğu etkilemez. Yeniden adlandırma işlemi, bu sınıf yığın izlemelerinde (I7eb25) göründüğünde ne olduğunu daha iyi iletmek için yapıldı.
@Composable ek açıklaması artık sınıflarda geçerli değil (Ia5f02)
Ambient<T>artık @Immutable yerine @Stable olarak ayarlanıyor (I0b4bb)Bu değişiklikten önce, bir @Composable işlevinin içindeki oluşturuculara yapılan çağrılar, (I5205a, b/158123804) varsa Compose derleyici eklentisi tarafından önemsiz olmayan bir şekilde engelleniyordu.
Recompose composable artık yararlı bir soyutlama değildir. Çoğu yeniden oluşturma işlemi MutableState atamaları sonucunda gerçekleşmelidir. Bunun ötesinde bir işlem için, mevcut kapsamın yeniden oluşturulmasını tetiklemek üzere
invalidateişlevini kullanmanız önerilir. (Ifc992)Observe artık yararlı bir soyutlama değil. Uygulamanın kopyalanması gerekiyorsa yalnızca bir composable lambda parametresini yürüten bir composable işlev oluşturularak kopyalanabilir. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)@Direct, @ComposableContract(restartable=false) lehine kullanımdan kaldırıldı (If4708)
Yakın zamanda kullanıma sunulan StateFlow için bir bağdaştırıcı eklendi. Bu bağdaştırıcı, ilk değeri önceden doldurmamıza olanak tanır. Böylece döndürülen State, null değer içermez (I61dd8, b/156233789).
Flow için bir bağdaştırıcı eklendi. Kullanım örneği: val value by flow.collectAsState() (If2198, b/153375923)
[Mutable]State özellik temsilcisi operatörleri, Kotlin 1.4 özellik temsilcisi optimizasyonlarını desteklemek için uzantılara taşındı. Arayanların
by state { ... }veyaby mutableStateOf(...)kullanmaya devam etmek için içe aktarma işlemleri eklemesi gerekir. (I5312c)androidx.compose.ViewComposer, androidx.ui.node.UiComposer'a taşındı. androidx.compose.Emittable kaldırıldı. ComponentNode ile gereksizdi. androidx.compose.ViewAdapters kaldırıldı. Bu özellikler artık desteklenen bir kullanım alanı değildir. Compose.composeInto desteği sonlandırıldı. Bunun yerine
setContentveyasetViewContentkullanın. Compose.disposeComposition kullanımdan kaldırıldı. Bunun yerinesetContenttarafından döndürülenCompositionüzerindedisposeyöntemini kullanın. androidx.compose.Compose.subcomposeInto, androidx.ui.core.subcomposeInto olarak taşındı. ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı. ComponentNode#emitRemoveAt, ComponentNode#removeAt olarak yeniden adlandırıldı. ComponentNode#emitMode, ComponentNode#move olarak yeniden adlandırıldı (Idef00).ComposeFlags.COMPOSER_PARAMişaretinitrueolarak güncelledik. Bu değişiklik, Compose eklentisinin kod oluşturma stratejisini etkileyecek. Bu durum, üst düzeyde, @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametre, çalışma zamanının yürütmeyi düzgün bir şekilde yönetebilmesi için sonraki @Composable çağrılarına iletilir. Bu, önemli bir ikili uyumluluğu bozan değişikliktir ancak Compose'un izin verilen tüm kullanımlarında kaynak düzeyinde uyumluluğu korur. (I7971c)Ambients API'de önemli değişiklikler yapıldı. Ayrıntılar için günlük ve
Ambient<T>dokümanlarına bakın (I4c7ee, b/143769776)LiveData için adaptör içeren yeni bir yapay nesne olan ui-livedata eklendi. Kullanım örneği: val value by liveData.observeAsState() (Ie9e8c, b/150465596)
Açık başlangıç değeri olmayan Rx bağdaştırıcıları kullanımdan kaldırıldı. Boş değer kullanmak her zaman en iyi varsayılan değer değildir. Örneğin, bir listeniz olduğunda emptyList() veya başka bir makul varsayılan değerle başlamak daha iyidir (I00025, b/161348384).
ui-rxjava2 eklendi. Bu yeni yapay nesne, RxJava2 için bağdaştırıcılar içerir. Kullanım örneği: val value by observable.subscribeAsState() (Ifab4b, b/153369097)
savedInstanceState()artık null değer atanabilir türlerle kullanılabilir (I6847f, b/153532190)Özel Saver nesneleri yazmayı kolaylaştırmak için yeni listSaver() ve mapSaver() (I8cf68, b/152331508)
Yeni işlevler: savedInstanceState() ve rememberSavedInstanceState(). Bunlar state() ve remember() işlevlerine benzer ancak yerleşik olarak kaydedilmiş örnek durumu desteğine sahiptir (If1987, b/152025209).
Hata Düzeltmeleri
runOnIdleCompose,runOnIdleolarak yeniden adlandırıldı (I83607)- LayoutNode deneysel API'si yapıldı (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Bu türü kullanan TextField, FilledTextField ve CoreTextField composable'larının desteği de sonlandırıldı. Lütfen bunun yerine androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005).
- Desteği sonlandırılan DrawBackground API, Modifier'daki drawBackground uzantısı API'leri lehine kaldırıldı. Kod yollarını azaltmak ve Modifier'ın kompozisyonun bir parçası olarak oluşturulması gerekliliğini ortadan kaldırmak için renk, fırça ve paint drawBackground uygulamaları yeniden düzenlendi. (I0343a)
- Tuval yerine CanvasScope'u kullanıma sunan, daha üst düzeydeki Compose API'leri güncellendi. Bu sayede tüketicilerin kendi Paint nesnelerini korumasına gerek kalmaz. Hâlâ bir Canvas'a erişmesi gereken tüketiciler, temel Canvas ile çizim komutları vermek için geri çağırma sağlayan drawCanvas uzantı yöntemini kullanabilir. (I80afd)
- WithConstraints sondaki lambda API'si değiştirildi. Artık iki parametre yerine, kısıtlamalara ve layoutDirection'a ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlayan bir alıcı kapsamı var (I91b9a, b/149979702).
- Simetrik dolgu değiştiricisi eklendi. (I39840)
- wrapContentWidth ve wrapContentHeight, herhangi bir hizalama yerine dikey veya yatay hizalama bekleyecek şekilde güncellendi. Yer çekimi değiştiricisi, dikey veya yatay hizalamayı kabul edecek şekilde güncellendi. Satır, sütun ve yığın, özel sürekli hizalamaları destekleyecek şekilde güncellendi. (Ib0728)
- ui-text modülünün adı ui-text-core olarak değiştirildi (I57dec).
- DrawModifier API'yi iyileştirme:
- draw() için alıcı kapsamını ContentDrawScope olarak ayarladı.
- draw() işlevindeki tüm parametreler kaldırıldı
- DrawScope, eski CanvasScope ile aynı arayüze sahiptir.
- ContentDrawScope'ta drawContent() yöntemi var (Ibaced, b/152919067)
- ColoredRect desteği sonlandırıldı. Bunun yerine
Box(Modifier.preferredSize(width, height).drawBackground(color))politikasını kullanın. (I499fa, b/152753731) - Değiştirici artı operatör, fabrika uzantısı işlevleriyle değiştirildi (I225e4).
- RowScope ve ColumnScope üyelerine artık Row ve Column dışında da erişilebilir. (I3a641)
- LayoutFlexible, LayoutWeight olarak yeniden adlandırıldı. Sıkı parametrenin adı doldurma olarak değiştirildi. (If4738)
- WithConstraints, LayoutDirection parametresini aldı (I6d6f7)
- Arka planı DrawBackground olarak yeniden adlandırın ve varsayılan olarak ezberlenmesini sağlayın (Ia0bd3).
- ButtonStyle, ayrı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenen örneklere bakın. (If63ab, b/146478620, b/146482131)
runOnIdleComposeverunOnUiThreadartık ComposeTestRule'daki yöntemler yerine genel işlevlerdir. (Icbe8f)
Harici Katkı (External Contribution)
- Looper ve Handler gibi gereksiz API'leri Compose Runtime taşıma katmanından kaldırma (I6847d)
- Başlangıç değeri olmayan
Flow<T>.collectAsState()özelliğinin desteğini sonlandırın. Bunun yerineStateFlow<T>kullanın veya açık bir başlangıç değeri iletin. (I63f98, b/157674865)