Çalışma Zamanı Oluşturma
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
API paketlerine göz atın
(Tüm API paketlerine bakın)
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
20 Mart 2024 | 1.6.4 | - | - | 1.7.0-alpha05 |
Yapı
Oluşturma işlemi, androidx
içindeki 7 Maven Grup Kimliğinin birleşiminden oluşur. Her Grup, her biri kendi sürüm notlarına sahip olan hedeflenmiş bir işlev alt kümesi içerir.
Bu tabloda, gruplar ve her sürüm notları grubunun bağlantıları açıklanmaktadır.
Gruplandır | Açıklama |
---|---|
compose.animation | Kullanıcı deneyimini zenginleştirmek için Jetpack Compose uygulamalarında animasyonlar oluşturun. |
compose.derleyici | @Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin. |
compose.temel | 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 derleyin. Bu, Compose'un daha üst düzey giriş noktasıdır ve www.material.io adresinde açıklananlarla eşleşen bileşenleri sağlamak için tasarlanmıştır. |
compose.material3 | Materyal Tasarımın yeni evrimi olan Materyal Tasarım 3 Bileşenler ile Jetpack Compose kullanıcı arayüzleri derleyin. Material 3, güncellenmiş tema ve bileşenlerin yanı sıra dinamik renk gibi Material You kişiselleştirme özellikleri içerir ve 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 Eklentisi'nin hedeflemesi için temel çalışma zamanı. |
compose.ui | Düzen, çizim ve giriş de dahil olmak üzere cihazla etkileşimde bulunmak için gereken kullanıcı arayüzünün temel 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ın veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { implementation "androidx.compose.runtime:runtime:1.6.4" implementation "androidx.compose.runtime:runtime-livedata:1.6.4" implementation "androidx.compose.runtime:runtime-rxjava2:1.6.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.6.4") implementation("androidx.compose.runtime:runtime-livedata:1.6.4") implementation("androidx.compose.runtime:runtime-rxjava2:1.6.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.11" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme bağımlılıkları ekleme konusuna bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa 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 belgelerine bakın.
Ç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
yayınlandı. 1.0.0-beta01 sürümü bu kayıtları içerir.
Sürüm 1.0.0-alpha05
15 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.yazma çalışma zamanı ve izleme-perfetto) sabitlendi. Oluşturulma-çalışma zamanı izleme özelliğinin uygulamaya, oluşturma çalışma zamanının daha yeni bir sürümünü getirmesi sorunu düzeltildi.
Sürüm 1.0.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
yayınlandı. Sürüm 1.0.0-alpha04 bu kayıtları içerir.
Yeni Özellikler
- Karşılaştırma ve İzleme Perfetto'nun en son sürümleriyle uyumludur. Bu özellik, AndroidX Benchmark ve Android Studio gibi uygulama başlatılırken (sıfır başlatma) Beste İzleme desteği sağlar (Hedgehog Beta 2'den itibaren).
API Değişiklikleri
androidx.tracing.perfetto.Trace
,androidx.tracing.perfetto.PerfettoSdkTrace
olarak yeniden adlandırıldı. (I44af8)- İzleme Perfetto SDK API'lerini
android.os.Trace
ile tutarlı hale getirme. (I73ba0, b/282199917) - Uygulama başlatılırken takiple ilgili ön koşullar. (Iad890)
- Birleştirilen deneysel ve herkese açık API dosyaları (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.
Yeni Özellikler
- İşlevsel bir değişiklik yok. Satışa dönük bağımlılıklarda birden çok 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
yayınlandı. 1.0.0-alpha01 sürümü bu kayıtları içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing
, destekleyen araçların bulunduğu (yakında kullanıma sunulacak) bir Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. İlk sürüm 1.0.0-alpha01'dir.
Sürüm 1.7
Sürüm 1.7.0-alpha05
20 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
yayınlandı. 1.7.0-alpha05 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Devre dışı bırakılan bestedeki geç değişiklikleri temizle (5950bc)
Sürüm 1.7.0-alpha04
6 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
yayınlandı. 1.7.0-alpha04 sürümü bu kayıtları içerir.
Performans iyileştirmeleri
- Türetilmiş durum değerlendirmesi başına
Snapshot.current
numaralı telefonu bir kez arayın (ee7daf) - Bileşimdeki gözlem başına bir kez
currentRecord
okundu (b882b2) snapshotFlow
öğesinde yanlışlıkla yineleyici ayırmayı kaldırın (231e56)- Oluşturma kitaplıkları için
nonSkippingGroupOptimization
öğesini etkinleştirin. Bu, Androidx'teki yeniden başlatılamayan tüm composable işlevleri için oluşturulan kodun daha verimli olmasına neden olur. 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
yayınlandı. Sürüm 1.7.0-alpha03 bu kayıtları içerir.
API Değişiklikleri
- Değişikliklerin tespit edilmesini iyileştirmek için değiştirme grupları kullanma (0941b5)
Performans iyileştirmeleri
- Değişiklikleri algılarken bellek ayırmayı iyileştirme (53e7fd)
- Oluşturucudaki bellek sızıntısını düzeltme (0e097d)
- Yeniden oluşturma sırasında geçersiz kılma işlemlerini geçirmek için
ScopeMap
kullanın (e19a7e) - Geçersiz kılma eşlemesini, yalnızca türetilen durumları koruyacak şekilde optimize edin (f11c44)
IdentityArraySet
kullanımlarınıScatterSet
(db572e) ile değiştirinScopeMap
içinderemoveScope
optimizasyonu (bb0530)
Sürüm 1.7.0-alpha02
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
yayınlandı. Sürüm 1.7.0-alpha02 bu kayıtları içerir.
Hata Düzeltmeleri
- Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
onRelease
geri aramasınıonForgotten
ile aynı sırayla arayın. (2cd790)snapshotFlow
içinde gözlemlenmeyen değiştirilmiş durumları filtreleyin. (796b80)
Performans iyileştirmeleri
- Anlık görüntü gözlemleyicisini zaten şeffaf olduğunda yerinde değiştirin. (f60f30)
SnapshotIdSet.lowest()
optimizasyonu yapın. (7ae149)SnapshotIdSet
için tahsissiz birfold()
kullanın. (532b7d)- Yineleyici ayırmayı kaldır (83f96b)
Sürüm 1.7.0-alpha01
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
yayınlandı. Sürüm 1.7.0-alpha01 bu kayıtları içerir.
Performans Optimizasyonları
- Alt grup eklendikten sonra slot oluşturma özelliği ekleyin (b5960c)
- Anlık görüntü durumlarının kayıt değişikliklerini optimize edin (28c3fe)
- Güçlü atlama modunu etkinleştirin (ed1766)
Hata Düzeltmeleri
- İçsel hatırlamadaki varsayılan parametre meta verilerini dikkate alın (096665)
- Daha fazla destek kaydı için
currentCompoundHashKey
benzersiz oluşturun (d4a872) - Satır içi işlev çağrısından çıkarken grupları fark etme (2a90fc)
Sürüm 1.6
Sürüm 1.6.4
20 Mart 2024
androidx.compose.runtime:runtime-*:1.6.4
yayınlandı. 1.6.4 sürümü bu kayıtları içerir.
Sürüm 1.6.3
6 Mart 2024
androidx.compose.runtime:runtime-*:1.6.3
yayınlandı. 1.6.3 sürümü bu kayıtları içerir.
Sürüm 1.6.2
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.2
yayınlandı. 1.6.2 sürümü bu kayıtları içerir.
Sürüm 1.6.1
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.1
yayınlandı. 1.6.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
onRelease
geri aramasınıonForgotten
ile aynı sırayla arayın. (2cd790)snapshotFlow
içinde gözlemlenmeyen değiştirilmiş durumları filtreleyin. (796b80)
Sürüm 1.6.0
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0
yayınlandı. 1.6.0 sürümü bu kayıtları içerir.
1.5.0'dan sonraki önemli değişiklikler
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden atma (4dff9a)
Performans Optimizasyonları
- Anlık görüntü durumlarının kayıt değişikliklerini optimize edin (28c3fe)
rememberSaveable
(f01d79) optimizasyonu- Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)
- Bileşim yerel değerlerini sağlama işlemini iyileştirin (a337ea)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
- Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
RememberObserver
yaşam döngülerini yalnızca hatırlama hesaplamasına saklandığında tetikleyin. (f6b4dc)$dirty
yakalamasını satır içi lambda'larla sınırlandırın. (acfca0)- Bazen yanlış beste yerel olarak gönderilen taşınabilir içeriği düzeltin. (035cd6)
Sürüm 1.6.0-rc01
10 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
yayınlandı. 1.6.0-rc01 sürümü bu kayıtları içerir.
Sürüm 1.6.0-beta03
13 Aralık 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
yayınlandı. 1.6.0-beta03 sürümü bu kayıtları içerir.
Sürüm 1.6.0-beta02
29 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
yayınlandı. 1.6.0-beta02 sürümü bu kayıtları içerir.
Sürüm 1.6.0-beta01
15 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01
yayınlandı. 1.6.0-beta01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Ek açıklamada Belirli kararlılık değerlerini yayın. (274a4c)
Hata Düzeltmeleri
- Bağlam içinde bileşim yerel kapsam durumu için referans politikası kullanın. (83361c)
- $dirty yakalamayı satır içi lambda'larla sınırlandırın. (acfca0)
- Bazen yanlış beste yerel olarak gönderilen taşınabilir içeriği düzeltin. (035cd6)
RecomposeScopeImpl
içinde ayırmadan daha hızlı karma eşlemeler kullanın. (d79494)DerivedState
uygulamasındaObjectIntMap
kullanın. (21862e)DerivedState
içindekiSnapshotThreadLocal
tamsayısı içinIntRef
kullanın. (04eaf4)
Sürüm 1.6.0-alpha08
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08
yayınlandı. Sürüm 1.6.0-alpha08 bu kayıtları içerir.
Hata Düzeltmeleri
RememberObserver
yaşam döngülerini yalnızca hatırlama hesaplamasına saklandığında tetikleyin. (f6b4dc)- Geçersiz kılma listesi sıralamasında ayırmaları iyileştirin. (954d63)
SnapshotStateObserver
içinde tahsis edilmeyen yeni haritaları kullanın. (4303ce)- Beste devre dışı bırakıldığında geçersiz kılmaları temizle. (e001be)
Sürüm 1.6.0-alpha07
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
yayınlandı. Sürüm 1.6.0-alpha07 bu kayıtları içerir.
API Değişiklikleri
SnapshotStateList
, liste yardımcılarının doğrudan dizine ekleme sürümünün kullanılabilmesi içinRandomAccess
olarak işaretlendi. (I5210c, b/219554654)
Sürüm 1.6.0-alpha06
20 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
yayınlandı. Sürüm 1.6.0-alpha06 bu kayıtları içerir.
Sürüm 1.6.0-alpha05
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
yayınlandı. Sürüm 1.6.0-alpha05 bu kayıtları içerir.
Sürüm 1.6.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
yayınlandı. Sürüm 1.6.0-alpha04 bu kayıtları içerir.
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden atma (4dff9a)
API Değişiklikleri
ReusableComposition
devre dışı bırakılması için bir yöntem eklendi. Gözlemler kaldırıldı ancak düğümler yerinde tutuldu. Devre dışı bırakılan besteyisetContent
çağrısı yapılarak tekrar etkinleştirilebilir. (Ib7f31)- Alt bestelerin yaşam döngüsünü yönetmek ve yeniden kullanmak için
ReusableComposition
arayüzü ekleyin. (I812d1, b/252846775)
Sürüm 1.6.0-alpha03
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03
yayınlandı. Sürüm 1.6.0-alpha03 bu kayıtları içerir.
Hata Düzeltmeleri
- Yeni
CompositionLocalProvider
optimizasyonunu düzeltin (3118e88) - Taşınabilir içerik düğümlerinin nasıl ayrıldığını düzeltin. (5e3d59b)
Sürüm 1.6.0-alpha02
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02
yayınlandı. Sürüm 1.6.0-alpha02 bu kayıtları içerir.
Yeni Özellikler ve Performans Geliştirmeleri
rememberSaveable
(f01d79) optimizasyonu- Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)
- Bileşim yerel değerlerini sağlama işlemini iyileştirin (a337ea)
- Grup oluşturulmaması için
SideEffect
,@ExplicitGroupsComposable
olarak işaretlenir. (I74815) - Yeniden kullanım sırasında kompozisyon yerel haritalarını karşılaştırmaktan kaçının (782071)
API Değişiklikleri
CompositionLocalProviders
için, birden fazla değerin daha hızlı sağlanmasını sağlamak üzere kullanılan ek yükü önleyen ancak tek bir değer sağlarken ek yük oluşturan özel durum aşırı yüklemesi eklendi. (I6d640, b/288169379)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
stateSaver
null değerini döndürdüğünde (90748c)rememberSaveable
öğesini geri yükleme şeklimizi düzeltin
Sürüm 1.6.0-alpha01
21 Haziran 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01
yayınlandı. Sürüm 1.6.0-alpha01 bu kayıtları içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
- Anlık görüntüler uygulanırken azaltılmış ayırmalar. (I65c09)
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplamasından kaçının (68c565)
Sürüm 1.5
Sürüm 1.5.4
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.4
yayınlandı. 1.5.4 sürümü bu kayıtları içerir.
Sürüm 1.5.3
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.3
yayınlandı. 1.5.3 sürümü bu kayıtları içerir.
Sürüm 1.5.2
27 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.2
yayınlandı. 1.5.2 sürümü bu kayıtları içerir.
Sürüm 1.5.1
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.1
yayınlandı. Sürüm 1.5.1 bu kayıtları içerir.
Sürüm 1.5.0
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.5.0
yayınlandı. 1.5.0 sürümü bu kayıtları içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
kapsamındaki ayırmalar kaldırıldı. (Ib2bfa) - Durum oluşturan ve bir
remember
çağrısında sarmalanması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklaması eklendi. (I64550) - State ve
MutableState
(fb3d89) basit versiyonlarını ekleyin - Eklenen
Snapshot.isApplyObserverNotificationPending
(I672a5) State
API'sinin temel sürümleri eklendi. Bu sayede Int, Long, Float ve Çift değerlerinin otomatik kutulama için ceza uygulanmadanState
nesnelerinde izlenmesine izin verildi. 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 kompozisyonunu atlayın. (Ieeb99, b/254645321)
ComposerImpl
(0206f7) içinde anlık görüntü referansını saklama- Kompozisyonu iki kez uygulama (f5791b)
- Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
- Besteyi yok etme işlemi sırasında
onEndChanges
numaralı telefonu arayın. (62cc8c) - Alt besteye taşınan içeriği düzeltme (4beb41)
- Olası kilitlenmeleri düzeltin (c1a425 ve 8edce0)
- Bir Android penceresi için oluşturulan yeniden düzenleyici, ON_STOP bildirimi aldığında artık tüm besteleri değil yalnızca
withFrameNanos
çağrılarını engelleyecektir. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği, ancak animasyonların veyawithFrameNanos
işleviyle ilişkili diğer tüm çağrıların engelleneceği anlamına gelir. (Id9e7f, b/240975572) - Efektleri atmadan önce
LayoutNode
iç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
- 73fd4d8 düğümlü Composable için canlı düzenleme regresyonunu düzeltin
- ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
- Türetilmeyen 84d9b1c durumları için
SnapshotStateObserver
kapsamı geçersiz kılın - Kompozisyonları atarken ortaya çıkabilecek kilitlenme sorununu düzeltme 28761fc
- Alt besteye taşınan içeriği düzeltme 92d4156
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltin (8a03e9)
- Efektleri atmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4) - Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltin. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullan (a0b518b) SlotTable.moveSlotGapTo()
öğesindekifill
öğesini kaldırın ve kapatmak için taşıyın (81f9935)- Taşınabilir içerik taşınırken eksik olan geçersiz kılma işlemlerini düzeltme (1d7c024)
- Taşınan taşınabilir içerik için derhal geçersiz kılma işlemlerini düzeltin (8676618)
Performans iyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplaması yapmaktan kaçının. (307102) - Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
CoroutineScopes
(a55362 ve bd382f) oluşturma işlemini hızlı bir şekilde iptal etme- Erişilemez durum kayıtları içeren durum nesneleri kayıtlarının üzerine yaz (c986960)
- Grupları gerçekleştirirken doğru kapsamın oluşturucusunu kullanın (9a5e5b6)
- Anlık görüntü geçersiz kılmalarını depolamak için
IdentityArraySet
kullanın (7f60cca) - Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
yayınlandı. 1.5.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)
mutableStateOf()
çağrılarının temel öğeler için karşılık gelen özel türlerine taşınmasını öneren isteğe bağlı bir denetim mevcuttur. lint kimliği:AutoboxingStateCreation
. Daha önce bu inceleme tüm projeler için varsayılan olarak etkindi. Bu uyarıyı Android Studio'nun düzenleyicisinde ve projenizin lint çıkışlarında görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında gösterilen (I34f7e) içindewarning "AutoboxingStateCreation"
öğesini belirterek önem derecesini bilgi amaçlı yerine uyarı (veya daha yüksek) olarak değiştirin:android { lint { warning "AutoboxingStateCreation" } ... }
Sürüm 1.5.0-beta03
28 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03
yayınlandı. 1.5.0-beta03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
Sürüm 1.5.0-beta02
7 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
yayınlandı. 1.5.0-beta02 sürümü bu kayıtları içerir.
Performans iyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplaması yapmaktan kaçının. (307102)
Sürüm 1.5.0-beta01
24 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01
yayınlandı. 1.5.0-beta01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
(Ib2bfa) kapsamındaki ayırmalar kaldırıldı - Durum oluşturan ve bir
remember
çağrısında sarmalanması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklaması eklendi. (I64550) - State ve
MutableState
(fb3d89) basit versiyonlarını ekleyin - Eklenen
Snapshot.isApplyObserverNotificationPending
(I672a5)
Hata Düzeltmeleri
- Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
ComposerImpl
(0206f7) içinde anlık görüntü referansını saklamaCoroutineScopes
(a55362 ve bd382f) oluşturma işlemini hızlı bir şekilde iptal etme- Kompozisyonu iki kez uygulama (f5791b)
- Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
- Besteyi yok etme işlemi sırasında
onEndChanges
numaralı telefonu arayın. (62cc8c) - Alt besteye taşınan içeriği düzeltme (4beb41)
- Olası kilitlenmeleri düzeltin (c1a425
- ON_STOP, beste yerine kare saat yayınlarını duraklatmalıdır (f4a2d1)
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltin (8a03e9)
- Efektleri atmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4)
Harici Katkı
- Eklenen
Snapshot.isApplyObserverNotificationPending
(I672a5)
Sürüm 1.5.0-alpha04
10 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
yayınlandı. Sürüm 1.5.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
State
API'sinin temel sürümleri eklendi. Bu sayede Int, Long, Float ve Çift değerlerinin otomatik kutulama için ceza uygulanmadanState
nesnelerinde izlenmesine izin verildi. Bunları kullanmak için yeni fabrika yöntemlerimutableIntState(Int)
,mutableFloatStateOf(Float)
vb. kullanın. (I48e43)
Hata Düzeltmeleri
Besteyi yok etme işlemi sırasında
onEndChanges
numaralı telefonu arayın.Composition.dispose
sırasında kaldırılan odak düğümleri, odağı sıfırlamak içinonEndChanges
hizmetine abone olur.(03d4a47)Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlayın. Türetilen her durum,
SnapshotStateObserver
içindeki bağımlılıklarının bir listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilen durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, türetilen durum okunduktan sonra (Snapshot.notifyObjectsInitialized()
çağrısına bağlı olarak) anlık görüntü ilerlemesine kaydedilir.SnapshotStateObserver
için önceden türetilen durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değeri okumaktı. Bu durum, bağımlılık geçersiz kılma işleminin kaydedilmediği temizlenmiş durumda gerçekleşen geçersiz kılma işlemine yol açan bir yarış durumuyla sonuçlandı.Bu değişiklik, türetilen 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 olmasını sağlar. (c472be6)
Sürüm 1.5.0-alpha03
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
yayınlandı. Sürüm 1.5.0-alpha03 bu kayıtları içerir.
API Değişiklikleri
- Bir Android penceresi için oluşturulan yeniden düzenleyici, ON_STOP bildirimi aldığında artık tüm besteleri değil yalnızca
withFrameNanos
çağrılarını engelleyecektir. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği, ancak animasyonların veyawithFrameNanos
işleviyle ilişkili diğer tüm çağrıların engelleneceği anlamına gelir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesinde ve haritasında olası kilitlenmeyi düzeltme 5c1a425
- Efektleri atmadan önce
LayoutNode
iç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
- 73fd4d8 düğümlü Composable için canlı düzenleme regresyonunu düzeltin
- ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
- Türetilmeyen 84d9b1c durumları için
SnapshotStateObserver
kapsamı geçersiz kılın - Kompozisyonları atarken ortaya çıkabilecek kilitlenme sorununu düzeltme 28761fc
- Alt besteye taşınan içeriği düzeltme 92d4156
Sürüm 1.5.0-alpha02
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02
yayınlandı. Sürüm 1.5.0-alpha02 bu kayıtları içerir.
Yeni Özellikler
- Kotlin’in
getValue
operatörü artık composable (f174f6e) haline gelebilir
Hata Düzeltmeleri, Performans Geliştirmeleri
- Erişilemez durum kayıtları içeren durum nesneleri kayıtlarının üzerine yaz (c986960)
- Grupları gerçekleştirirken doğru kapsamın oluşturucusunu kullanın (9a5e5b6)
- Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltin. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullan (a0b518b) - Anlık görüntü geçersiz kılmalarını depolamak için
IdentityArraySet
kullanın (7f60cca) SlotTable.moveSlotGapTo()
öğesindekifill
öğesini kaldırın ve kapatmak için taşıyın (81f9935)- Taşınabilir içerik taşınırken eksik olan geçersiz kılma işlemlerini düzeltme (1d7c024)
- Taşınan taşınabilir içerik için derhal geçersiz kılma işlemlerini düzeltin (8676618)
- Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
yayınlandı. Sürüm 1.5.0-alpha01 bu kayıtları içerir.
Yeni Özellikler
Modifier.Nodes
hizmetinin eş yordamları başlatmasına izin vermek içinModifier.Node#coroutineScope
ekler (I76ef9)CompositionLocalConsumerModifierNode
arayüzünü uygulayarakModifier.Nodes
uygulamasınınCompositionLocals
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
, hiçbir değişiklik yapılmadan serbest bırakıldı.
Sürüm 1.4.2
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.2
yayınlandı. 1.4.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 2eb6570
Değişiklik işlemi, durum kaydına doğrudan yazma işlemiyle eş zamanlı olarak gerçekleştirilirse
SnapshotStateList
veyaSnapshotStateMap
öğesine içerik eklendiğinde kilitlenme meydana gelebilir. Bu durum, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma kullanan 93fcae828b tarafından ortaya çıkan değişikliklerle karşılaşma olasılığını önemli ölçüde artırmıştır.Kilitlerin sırası, harita veya liste kilidi basılı tutulduğunda anlık görüntü kilidinin asla alınmayacağı şekilde belirlenmiştir.
Sürüm 1.4.1
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.1
yayınlandı. 1.4.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltin. d71d980
Sürüm 1.4.0
22 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0
yayınlandı. 1.4.0 sürümü bu kayıtları içerir.
1.3.0'dan sonraki önemli değişiklikler
- İlk beste 3680e25 için
LiveData
değerindeki başlatılmış değeri kullanın - Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallback
ekleyin. 8b6a258 parameterTypes
özelliğiniComposableMethod
7b6c7ad öğesine ekleyin
Hata Düzeltmeleri ve Performans İyileştirmeleri
- Her iki kapsam dizinini de
SnapshotStateObserver
29f4a3e içinde temizle - Atlanamayan lambda'ların gövdesine gereken grupları ekleyin 7d06752
- 93fcae8 anlık görüntüsünün bellek referans özelliklerini iyileştirin
- Yerel beste aramalarında boks kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın 6388d8d
SnapshotStateObserver
öğesini yinelemeli ve eşzamanlı uygulananlardan koruyun 98cb6baIdentityArraySet
"get" yöntemi 35a77d3'e bir kontrol dizini sınırı kontrolü eklendi- Oluşturma modülünü
ViewTreeLifecycleOwner
21c2122 uzantılarını kullanacak şekilde güncelleyin - Recomposer kareyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
- Recomposer 8f8656f iptal edilirken dizin sınırları dışındaki kilitlenme sorununu düzeltme
- Bestenin üst sağlayıcıları 9526fcc'yi değiştirdiyse her zaman yeniden oluşturmayı zorunlu kıl
- İptal edilen İşler için yeniden düzenleyen toleransı a55f7ed
- Çok sayıda oluşturucu için geçersiz kılma işlemlerinin işlenmesini iyileştirme 9b7ed67
- Yerel olmayan dönüşler için kapanış 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
yayınlandı. 1.4.0-rc01 sürümü bu kayıtları 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ü bu kayıtları içerir.
Sürüm 1.4.0-beta01
8 Şubat 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01
yayınlandı. 1.4.0-beta01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Compose düğümlerinin yaşam döngüsünü gözlemlemeye olanak tanıyan
ComposeNodeLifecycleCallback
eklendi (I3731b) - Bu işlevin yalnızca testte çağrılması güvenli olduğundan
Composer.disableSourceInformation()
işlevine@TestOnly
eklendi. (I896c8)
Hata Düzeltmeleri
- Yerel beste aramalarında boksu 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ı. Sürüm 1.4.0-alpha05 bu kayıtları içerir.
API Değişiklikleri
- Satır içi/kullanımdan kaldırılan gizli işlevlerin daha fazla tür/boşluk değeri (I24f91)
Sürüm 1.4.0-alpha04
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
yayınlandı. Sürüm 1.4.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
TestMonotonicFrameClock
artık doğru deneysel ek açıklamayı kullanıyor. (I95c9e)
Hata Düzeltmeleri
SnapshotStateObserver
öğesini yinelemeli ve eşzamanlı uygulamalardan koru (d902fb)
Sürüm 1.4.0-alpha03
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
yayınlandı. Sürüm 1.4.0-alpha03 bu kayıtları içerir.
API Değişiklikleri
ComposableMethod
sınıfınajava.lang.reflect.Method#getParameterTypes()
ile benzer yeni bir herkese açık yöntem ekleniyor (Iab0c3)
Hata Düzeltmeleri
- Anlık görüntü uygulama bildirimleri,
Recomposer
değişiklikleri uygulamayı bitirdikten sonra gönderilir. (Iad6c0, b/222093277)
Sürüm 1.4.0-alpha02
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
yayınlandı. Sürüm 1.4.0-alpha02 bu kayıtları içerir.
Sürüm 1.4.0-alpha01
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
yayınlandı. Sürüm 1.4.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
SnapshotStateList
veSnapshotStateMap
artık saygılı bir şekildetoList()
vetoMap()
uygulamalarını açık bir şekilde uyguluyor. Bu yöntemler, içeriklerini depolamak için kullanılan dahili sabit verileri döndürdüğünden, bir kopyasını oluşturmadan mevcut içeriklerini döndürür. Bu değer, örneğin, verilerin kopyalanmasını gerektirmedensnapshotFlow
kullanarak bir değer akışı üretmek 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
yayınlandı. 1.3.3 sürümü bu kayıtları içerir.
- 1.3.2'den bu yana değişiklik yok
Sürüm 1.3.2
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.3.2
yayınlandı. 1.3.2 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- androidx.compose.ui 1.3.2 sürümünü destekleyecek şekilde güncellendi
Sürüm 1.3.1
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.3.1
yayınlandı. 1.3.1 sürümü bu kayıtları içerir.
Sürüm 1.3.0
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0
yayınlandı. 1.3.0 sürümü bu kayıtları içerir.
1.2.0'dan sonraki önemli değişiklikler
İstisnaları İşleme / Canlı Düzenleme Desteği
- Canlı düzenlemeyi daha iyi desteklemek için düzenleme sırasında istisnaların ele alınmasını sağlamak üzere API'ler eklendi
- sırada yeniden yükleme için beste hatası işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını işleme
Beste İzleme
- Yeni bileşim izleme araçlarını desteklemek için çalışma zamanı izleme API'leri eklendi
- Oluşturulabilir izleme etkinliği başlangıç/bitiş çağrıları oluşturma
- Composekt.traceEventStart(Int, String) yeniden eklendi
Düzenlenebilir Yansıtma API'leri
- Oluşturulabilir API'lerin yansıma tabanlı çağrılarının daha güvenilir olmasını sağlamak için yeni bir
ComposableMethod
API eklendi. - callComposable'ı çalışma zamanına taşıma
- composable yöntemini çağırmak için Rework API
Çalışma Zamanı Düzeltmeleri
- İşaretçileri kontrol eden slot tablosuyla ilgili hatalı aralık testi düzeltme
- Taşınabilir içeriğin SubcomposeLayout'un içine ve dışına taşınmasına izin verme
- Bir alt bestenin yeni içeriğine içerik taşıma sorununu düzeltme
Anlık Görüntü Sistemi
- Anlık görüntü sistemi; bellek yönetimi, performans ve doğruluk açısından çeşitli iyileştirmeler elde etti.
- SnapshotStateObserver'da kapsam kaldırma işlemini optimize etme
- Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri ortadan kaldırma
- Genel anlık görüntüden durum okunurken yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState'i Destekle
- Diğer kapsamlarda okunurken türetilen durumun bileşimden kaldırılmasını engelle
- DerivedState içinde HashMap yerine IdentityArrayMap kullanın
- Türetilmiş durum gözlemcilerini değişken vektör kullanacak şekilde güncelleme
- SnapshotStateObserver durum temizlemeyi güncelleme
- SnapshotStateObserver.invalidated öğesini ArraySet ile değiştirme
- Genel anlık görüntüden durum okunurken yarış durumu düzeltildi
- DerivedState karma hesaplamasında eski kaydın kullanımını düzeltme
- Genel anlık görüntüyü ilerletirken yarış durumunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerini temizlemeyi hızlandırma
Sürüm 1.3.0-rc01
5 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
yayınlandı. 1.3.0-rc01 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Slot tablosundan gelen
ArrayIndexOutOfBoundsException
düzeltildi (b/249076084)
Sürüm 1.3.0-beta03
21 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03
yayınlandı. 1.3.0-beta03 sürümü bu kayıtları içerir.
Davranış Kırıcı Değişikliği
remember
verememberCoroutineScope
parametreleri,crossinline
olarak değiştirildi. Bu özellik, erken geri döndürmeye izin vermek yerine erken iadeler için bir hata bildirir. Bu da daha sonra oluşan dahili bir hatanın bildirilmesine neden olur.- Bu değişiklik, potansiyel olarak bu işlevlere aktarılan lambdalardan yerel olmayan dönüşlerin kaldırılmasını gerektiren yeni derleyici hatalarının bildirilmesine yol açabilir. (Ibea62)
Sürüm 1.3.0-beta02
7 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
yayınlandı. 1.3.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Güncellenmiş API (I64ca0)
Sürüm 1.3.0-beta01
24 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01
yayınlandı. 1.3.0-beta01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Bu API'yi kullanan geliştirici araçlarının, bir bileşim alt grubunu kendi kimliğini kullanarak hızlı bir şekilde bulmasını sağlamak için
CompositionData
öğesine birfind
yöntemi eklendi. (I5794f)
Sürüm 1.3.0-alpha03
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03
yayınlandı. Sürüm 1.3.0-alpha03 bu kayıtları içerir.
Sürüm 1.3.0-alpha02
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
yayınlandı. Sürüm 1.3.0-alpha02 bu kayıtları 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
yayınlandı. Sürüm 1.3.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
- Yardımcı program işlevlerini çalışma zamanına taşıma (I4f729)
Sürüm 1.2
Sürüm 1.2.1
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.2.1
yayınlandı. 1.2.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Düzeltilen bellek sızıntısı: Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri ortadan kaldırma b/239603305
Sürüm 1.2.0
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.2.0
yayınlandı. 1.2.0 sürümü bu kayıtları içerir.
1.1.0
tarihinden itibaren önemli değişiklikler
Compose Çalışma Zamanı'nın 1.2.0 sürümünde kullanıma sunulan birçok özelliğin yanı sıra sabitleme amaçlı birçok hata düzeltmesi de yapıldı. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimini sağlamak için kullanılabilecek
movableContentOf
API'nin kullanıma sunulmasıydı.movableContentOf
API'si, composable bir lambda'yı, durumunu ve karşılık gelen düğümleri çağrıldığı yeni konuma taşıyan bir lambdaya dönüştürür. Önceki çağrı bileşimden çıktığında, durum geçici olarak korunur ve lambdaya yeni bir çağrı besteye girerse durum ve ilişkili Düğümler yeni çağrının konumuna taşınır. Yeni bir arama eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.Bir
movableContentOf
lambda aynı bileşimde birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar besteden çıktıkça ve yeni çağrılar girdikçe durum, ayrılan ilk çağrılardan gelen çağrılara çağrıldıkları sırayla taşınır. Yeni aramalarla hak talebinde bulunulmayan tüm eyaletler kalıcı olarak kaldırılır.Buna ve birkaç yeni özelliğe ek olarak, çalışma zamanı ve Enstantane durum sistemini kararlı hale getirmek için çok zaman harcadık. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özet bir listesini aşağıda bulabilirsiniz:
1.2
Uygulamasındaki Yeni Özellikler
- Güvenli olmayan deneysel anlık görüntü eklemeGiriş/Ayrıl
- Snapshot.asContextElement deneysel API ekleme
- Snapshot.withoutReadObservation'ı tanıtın
- Eyaletin bir beste içinde hareket etmesine izin verme
- Oluşturma İşleminde Yeniden Oluşturmaları İzleme
1.2
bölgesindeki performans
- Bileşim yerel performansını artırma
- Oluşturma işlemi için referans profiller, karşılaştırmalar kullanılarak türetilmelidir
1.2
için Hata Düzeltmeleri
- Sürüm yeniden oluşturma kapsamlarından izleme bilgilerini kaldırma
- Diğer kapsamlarda okunurken türetilen durumun bileşimden kaldırılmasını engelle
- SnapshotStateObserver'da removeScope() öğesini daha verimli kullanma
- Bileşimdeki türetilmiş durum bağımlılıklarını temizleme
- Taşınabilir içeriğin içindeki yeniden yapılandırmadan sonra currentCompositeKeyHash değişimini düzeltme
- Geçersiz kılınan besteleri imha ederken temizleme
- Yeniden oluşturma sırasında okunan türetme durumunu düzeltin
- Türetilmiş durum nesnelerini gözlemlerken bellek sızıntısını düzeltme
- movableContent birleşik karma anahtarı tutarlı olacak şekilde düzeltildi
- Bestecinin çöktüğü köşe sorununu düzeltme
- Bir grubun yeniden düzenlemeye zorlayarak geçersiz kılınmasını sağlama
- Girişle birlikte hatırlanılabilir öğe yanlış sırada geri yüklendiğinde oluşan hatayı düzeltme
Sürüm 1.2.0-rc03
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
yayınlandı. 1.2.0-rc03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Türetilmiş durum gözlemleri daha önce yeniden derleme kapsamından ve bileşimden koşulsuz olarak birlikte kaldırılmıştı. Bu da türetilmiş durumu gözlemliyor olabilecek diğer kapsamları bozuyordu. Bu değişiklik yalnızca artık başka kapsamlarda gözlemlenmeyen 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
yayınlandı. 1.2.0-rc02 sürümü bu kayıtları içerir.
Sürüm 1.2.0-rc01
15 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01
yayınlandı. 1.2.0-rc01 sürümü bu kayıtları içerir.
API Değişiklikleri
- Oluşturma kitaplıklarındaki arayüzler artık jdk8 varsayılan arayüz yöntemleri (I5bcf1) kullanılarak oluşturuluyor
Sürüm 1.2.0-beta03
1 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
yayınlandı. 1.2.0-beta03 sürümü bu kayıtları içerir.
Sürüm 1.2.0-beta02
18 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02
yayınlandı. 1.2.0-beta02 sürümü bu kayıtları içerir.
Sürüm 1.2.0-beta01
11 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01
yayınlandı. 1.2.0-beta01 sürümü bu kayıtları içerir.
Yeni Özellikler
- Bu, 1.2'nin ilk beta sürümüdür!
API Değişiklikleri
- Deneysel
Snapshot.unsafeEnter/unsafeLeave
eklendi (I108f3) - Deneysel
Snapshot.asContextElement()
API'si (Iff072) eklendi @ComposableTargetMarker
tarafından işaretlenen@ComposableTarget
ek açıklaması ve ek açıklamaları artık@file
önekiyle dosya kapsamında kullanılabilir. Dosya kapsamında bir hedef ek açıklama kullanmak, derleyicinin dosyadaki tüm composable işlevlerin ilişkili uygulamayı hedeflemeyi amaçladığını varsaymasına neden olur. Örneğin,@file:UiComposable
kullanıldığında tüm@Composable
işlevlerinin Compose kullanıcı arayüzü 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şaretçi 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
yayınlandı. Sürüm 1.2.0-alpha08 bu kayıtları içerir.
API Değişiklikleri
TracingInProgress
,CompositionTracer
arayüzüne eklendi. (Ic6f12)recomposeScopeIdentity
hizmetini Composer'a (I0c873) ekleyin- İzleme API'leri (Composer.setTracer)
OptIn(InternalComposeTracingApi)
ile kısıtlandı. (I9187f) - Yeniden kullanılabilir içerik için oluşturulan durumun ömrü üzerinde daha fazla kontrol sağlayan
ResuableContentHost
eklendi. Örneğin, bir alt beste geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bunun sonucunda, bestedeki tüm hatırlanan durum unutulur ve örneğin tek kullanımlık tüm efektler devre dışı bırakılır. (I2c0f2, b/220322704)
Sürüm 1.2.0-alpha07
6 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
yayınlandı. Sürüm 1.2.0-alpha07 bu kayıtları içerir.
API Değişiklikleri
- Yeni
Snapshot.withoutReadObservation { ... }
işlevi eklendi. Kullanıcıların bu blok sırasında okunan durum değerlerinde yapılan değişikliklere abone olmadan geçirilen 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, ancak gereksiz yeniden oluşturma veya yeniden ölçüme neden olmadan değeri okuyabilmek istediğiniz kullanım durumlarında bu özellikten yararlanabilirsiniz. (I9f365, b/214054486)
Sürüm 1.2.0-alpha06
23 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
yayınlandı. Sürüm 1.2.0-alpha06 bu kayıtları içerir.
Sürüm 1.2.0-alpha05
9 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
yayınlandı. Sürüm 1.2.0-alpha05 bu kayıtları içerir.
Harici Katkı
- Kotlinx eş 1.6.0 (I3366d) sürümünü kullanacak şekilde güncellendi
Sürüm 1.2.0-alpha04
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04
yayınlandı. Sürüm 1.2.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
Bir composable işlevin, kullanmak üzere tasarlanmamış bir uygulamayı hedefleyen çağrıldığında derleme zamanı raporlamasını sağlayan
ComposableTarget
,ComposableTargetMarker
veComposableOpenTarget
eklendi.Çoğu durumda ek açıklamalar, oluşturucu derleyici eklentisi tarafından tahmin edilebilir. Dolayısıyla, bu ek açıklamaların doğrudan kullanılması nadir bir durumdur. Çıkarım yapılamayan durumlar arasında özel uygulayıcı, soyut composable işlevleri (arayüz yöntemleri gibi), alanlar veya composable lambda olan genel değişkenler (yerel değişkenler ve parametreler çıkarım yapılır) oluşturup kullanmak veya
ComposeNode
ya da ilgili composable işlevleri kullanmak yer alır.Özel uygulayıcılar için
ComposeNode
veyaReusableComposeNode
çağıran composable işlevlerin, işlev ve tümcomposable lambda parametre türleri içinCompoableTarget
ek açıklaması eklemesi gerekir. Bununla birlikte,ComposableTargetMarker
ek açıklaması içeren bir ek açıklama oluşturmanız ve daha sonra, işaretli ek açıklamanın doğrudanComposableTarget
yerine kullanılması önerilir.ComposableTargetMarker
ile işaretlenmiş bir composable ek açıklama, applier parametresi olarak özellik sınıfının tam adına sahipComposbleTarget
özelliğine eşdeğerdir.ComposableTargetMarker
kullanımına ilişkin örnek içinanroidx.compose.ui.UiComposable
sayfasını inceleyin. (I38f11)
Sürüm 1.2.0-alpha03
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03
yayınlandı. Sürüm 1.2.0-alpha03 bu kayıtları içerir.
API Değişiklikleri
Oluşturulabilir bir lambdayı, durumunu hareket ettiren bir lambdaya ve karşılık gelen düğümleri çağrıldığı yeni konuma dönüştüren
movableContentOf
eklendi. Önceki çağrı besteden çıktığında durum geçici olarak korunur ve lambda'ya yeni bir çağrı besteye girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.Bir
movableContentOf
lambda aynı bileşimde birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Ayrıca, çağrılar besteden ayrıldıkça ve yeni çağrılar girdikçe durum, ilk ayrılan çağrılardan gelen çağrılara çağrıldıkları sırada taşınır. Yeni çağrılar tarafından talep edilmeyen tüm eyaletler kalıcı olarak kaldırılır. (Ib4850)Araçların composable işlevlerin daha ayrıntılı izlemesini sağlamak için besteye bir izleme API'si eklendi. Derleyici artık izleme API'sine kaynak bilgilerini içeren çağrılar oluşturur. (Ib0eb5)
Bu çağrıları ve ilişkili kaynak bilgilerini sürüm 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(); }
Araçların yeniden kompozisyonlar sırasında bir composable'ı tanımlayabilmesi için
InternalComposeScope
ekleyin. (I07a3f)
Sürüm 1.2.0-alpha02
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
yayınlandı. Sürüm 1.2.0-alpha02 bu kayıtları içerir.
Sürüm 1.2.0-alpha01
12 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01
yayınlandı. Sürüm 1.2.0-alpha01 bu kayıtları içerir.
API Değişiklikleri
- Layout Inspector'da sabit kimlikler oluşturmaları için
CompositionData
öğesineidentity
alanı eklendi. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10
hizmetini kullanabilirsiniz.
Sürüm 1.1
Sürüm 1.1.1
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.1
yayınlandı. 1.1.1 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
adresindekiNullPointerException
sorununu düzeltin (aosp/1947059, b/206677462)- Android'de panodan okuma sırasında pano içeriğinin neden kilitlenmesi düzeltildi. (I06020, b/197769306)
LazyVerticalGrid
içinde sabit RTL (aosp/1931080, b/207510535)
Sürüm 1.1.0
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0
yayınlandı. 1.1.0 sürümü bu kayıtları içerir.
1.0.0'dan sonraki önemli değişiklikler
- Android 12 Fazla kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmasıyla ilgili iyileştirmeler
- Compose 1.0'da Material bileşenlerinin düzen alanlarını, dokunma hedefi boyutu için Materyal erişilebilirlik yönergelerini karşılayacak şekilde genişleteceğini unutmayın. Örneğin, Düğmenin boyutunu daha küçük olarak ayarlasanız bile Düğme dokunma hedefi minimum
48x48dp
boyutuna genişler. Bu işlem, Compose Materyalini Materyal Tasarım Bileşenleri ile aynı davranışla uyumlu hale getirir ve Görünümler ve Oluşturma öğelerini birlikte kullandığınızda tutarlı bir davranış sağlar. Bu değişiklik, kullanıcı arayüzünüzü Material Material bileşenlerini kullanarak oluşturduğunuzda, dokunma hedefi erişilebilirliği için minimum gereksinimlerin karşılanmasını da sağlar. - Navigasyon Rail 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
yayınlandı. 1.1.0-rc03 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Oluşturma Materyalini (
1.1.0-rc03
) desteklemek için güncellendi
Sürüm 1.1.0-rc01
15 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01
yayınlandı. 1.1.0-rc01 sürümü bu kayıtları içerir.
Sürüm 1.1.0-beta04
1 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
yayınlandı. 1.1.0-beta04 sürümü bu kayıtları içerir.
Yeni Özellikler
- Kotlin
1.6.0
ile uyumlu olacak şekilde güncellendi
Sürüm 1.1.0-beta03
17 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03
yayınlandı. 1.1.0-beta03 sürümü bu kayıtları içerir.
Sürüm 1.1.0-beta02
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
yayınlandı. 1.1.0-beta02 sürümü bu kayıtları içerir.
API Değişiklikleri
- Anlık görüntü kodu birden fazla dosyaya bölündü ancak hepsi aynı JVM sınıfında kalmaya devam ediyor. (Ic6c98)
Sürüm 1.1.0-beta01
27 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
yayınlandı. 1.1.0-beta01 sürümü bu kayıtları içerir.
Sürüm 1.1.0-alpha06
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
yayınlandı. 1.1.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
- Modüller arası olarak çağrılması gereken Composer yöntemlerinden
InternalCompilerApi
kaldırıldı (I1aa0b) Recomposer.state
kullanımdan kaldırıldı ve türünü StateFlow (Ic2ab3, b/197773820) olarak değiştirmek içinRecomposer.currentState
ile değiştirildi
Sürüm 1.1.0-alpha05
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05
yayınlandı. Sürüm 1.1.0-alpha05 bu kayıtları içerir.
Sürüm 1.1.0-alpha04
15 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
yayınlandı. Sürüm 1.1.0-alpha04 bu kayıtları içerir.
Sürüm 1.1.0-alpha03
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
yayınlandı. Sürüm 1.1.0-alpha03 bu kayıtları içerir.
Yeni Özellikler
- Compose Derleyici artık Compose Çalışma Zamanının (1.0) eski sürümlerini destekliyor. Bu değişiklikten önce Compose Derleyici yalnızca aynı sürümün veya sonraki bir sürümün Compose Çalışma Zamanı ile uyumluydu. Bu değişiklikten sonra Compose Derleyicisi daha eski bir Compose Çalışma Zamanı sürümüyle (1.0) uyumlu hale gelir. (aosp/1796968)
1.1.0-alpha03
oluşturma işlemi, Kotlin1.5.30
biçimini temel alacak şekilde güncellendi. (I74545)
Sürüm 1.1.0-alpha02
18 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
yayınlandı. Sürüm 1.1.0-alpha02 bu kayıtları içerir.
Sürüm 1.1.0-alpha01
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01
yayınlandı. Sürüm 1.1.0-alpha01 bu kayıtları içerir.
Sürüm 1.0
Sürüm 1.0.5
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.0.5
yayınlandı. 1.0.5 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- türvedStateOf örneklerinin kilitlenmesini izlemeyle ilgili bir sorun düzeltildi. (aosp/1792247)
Sürüm 1.0.4
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.0.4
yayınlandı. 1.0.4 sürümü bu kayıtları içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.31
temel alınarak güncellendi
Sürüm 1.0.3
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.3
yayınlandı. 1.0.3 sürümü bu kayıtları içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.30
temel alınarak güncellendi
Sürüm 1.0.2
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.2
yayınlandı. 1.0.2 sürümü bu kayıtları içerir.
Compose 1.0.2
sürümünü desteklemek için güncellendi. 1.0.2
oluşturma işlemi, Kotlin 1.5.21
ile hâlâ uyumlu.
Sürüm 1.0.1
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.0.1
yayınlandı. 1.0.1 sürümü bu kayıtları içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.21
temel alınarak güncellendi.
Sürüm 1.0.0
28 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0
yayınlandı. 1.0.0 sürümü bu kayıtları içerir.
1.0.0'ın temel özellikleri
Bu, Compose'un ilk kararlı sürümüdür. Daha fazla bilgi için lütfen resmi Sürüm Oluşturma bloguna göz atın!
Bilinen Sorunlar
Android Studio Bumblebee Canary 4 veya AGP
7.1.0-alpha04
/7.1.0-alpha05
kullanıyorsanız şu kilitlenmeyle karşılaşabilirsiniz:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Sorunu düzeltmek için
build.gradle
dosyanızda minSdkVersion değerini geçici olarak 24+ sürümüne yükseltin. Bu sorun, Android Studio Bumblebee ve AGP7.1
sürümünün bir sonraki sürümünde düzeltilecektir. (b/194289155)
Sürüm 1.0.0-rc02
14 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
yayınlandı. 1.0.0-rc02 sürümü bu kayıtları içerir.
- SnapshotStateObserver'da sahte NullPointerExceptions'a neden olan yarış koşulları düzeltildi. (aosp/1763445, aosp/1758105, b/192677711)
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
kilitlenmelerine neden olan çalışma zamanı anlık görüntüleriyle 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
yayınlandı. 1.0.0-rc01 sürümü bu kayıtları içerir.
Sürüm 1.0.0-beta09
16 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
yayınlandı. 1.0.0-beta09 sürümü bu kayıtları içerir.
Eklenmiş Profil Kuralları
Bu sürümde aşağıdaki oluşturma modüllerine (I14ed6) profil kuralları eklenir:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.temel
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-dalga
- 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ığa ilişkin profil kuralları,
src/main
veya eşdeğer dizinde bulunanbaseline-prof.txt
metin dosyasında belirtilir. Dosya, satır başına bir kural belirtir. Bu örnekte, bir kural kitaplıktaki yöntemler veya sınıflarla eşleştirme kalıbıdır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...
kullanılırken kullanılan, kullanıcılar tarafından 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>
Bir sınıf kuralı 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şaretlenmemesi gerektiğini belirtmek içinH
,S
veP
karakterlerinden bir veya daha fazlasını içerir.<CLASS_DESCRIPTOR>
, hedeflenen yöntemin ait olduğu sınıfı tanımlar. Örneğin,androidx.compose.runtime.SlotTable
sınıfındaLandroidx/compose/runtime/SlotTable;
tanımlayıcısı 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(): Boolean
yöntemiisPlaced()Z
imzasına sahiptir.Tek bir kuralın birden fazla yöntemi veya sınıfı kapsamasını sağlamak için bu kalıplar joker karakterler (
**
,*
ve?
) içerebilir.
Kurallar ne işe yarar?
H
işaretine sahip bir yöntem, bu yöntemin "sıcak" bir yöntem olduğunu ve önceden derlenmesi gerektiğini belirtir.S
işaretine sahip bir yöntem, bunun başlangıçta çağrılan bir yöntem olduğunu ve derleme ile yöntemi başlatma sırasında yorumlama maliyetinden kaçınmak için önceden derlenmesi gerektiğini belirtir.P
işaretine sahip bir yöntem, bunun başlatma sonrasında ç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 maliyetinden kaçınmak için yığında önceden ayrılması gerektiğini gösteriyor.
Nasıl çalışır?
- Kitaplıklar, AAR yapılarında paketlenecek bu kuralları tanımlayabilir. Bu yapıları içeren bir uygulama oluşturulduğunda, bu kurallar birleştirilir ve birleştirilen kurallar, uygulamaya özel kompakt bir ikili program ART profili oluşturmak için kullanılır. Uygulama cihazlara yüklendiğinde ART, uygulamanın performansını özellikle ilk çalıştırmada iyileştirmek için uygulamanın belirli bir alt kümesini önceden derlemek amacıyla bu profilden yararlanabilir. Bu işlemin hata ayıklaması yapılabilir uygulamalar üzerinde etkisi olmayacağını unutmayın.
Sürüm 1.0.0-beta08
2 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08
yayınlandı. 1.0.0-beta08 sürümü bu kayıtları içerir.
API Değişiklikleri
State<T>
artıkState<out T>
(I69049)- Değişiklikleri yeniden derleme tek geçişte yeniden oluşturmayı sağlayan
ControlledComposition
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
yayınlandı. 1.0.0-beta07 sürümü bu kayıtları 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 oluşturma derleyici API'leri eklendi. (Ia34e6)
Anahtar değiştirildiğinde düğümleri değiştirmek yerine içeriğinde yeniden kullanmayı deneyecek
ReusableContent
özelliğini sunar. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler hariç, içerik için alan tablosundaki önceki değerler yoksayılır.ComposeNode
için yapılan gibi değiştirmek yerine, yayınlanan düğümü yeniden kullanacak olanReusableComposeNode
özelliğini sunar. (I1dd86)@ComposeCompilerApi
artık@RequiresOptIn
değil (Iab690)
Hata Düzeltmeleri
- LazyColumn/Row artık, daha önce aşağı kaydırılmış olsalar bile önceden görünür olan en fazla 2 öğeyi etkin (atılmayan) tutacak. Bu, kaydırma performansını iyileştiren yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt kompozisyonları yeniden kullanmasına olanak verir. (Ie5555)
Sürüm 1.0.0-beta06
5 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06
yayınlandı. 1.0.0-beta06 sürümü bu kayıtları içerir.
API Değişiklikleri
@ComposeCompilerApi
artık@RequiresOptIn
değil (Iab690)
Sürüm 1.0.0-beta05
21 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05
yayınlandı. 1.0.0-beta05 sürümü bu kayıtları içerir.
API Değişiklikleri
- Anlık görüntü okuma ve yazmalarını kaydetmek için
@InternalComposeApi
kaldırıldı (Id134d)
Hata Düzeltmeleri
- ui-test-manifest veui-tooling-data içindeki AndroidManifest dosyaları artık Android 12 (I6f9de, b/184718994) ile uyumlu.
Sürüm 1.0.0-beta04
7 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
yayınlandı. 1.0.0-beta04 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabilirdi. Bu değişiklikten sonra hiçbir yerel composable işlev atlanmayacak. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri yakalaması yaygın ve beklenen bir uygulama olduğu ve bunların atlanması yaygın bir hata kaynağı olduğu için yapılmaktadır.
Özetlemek gerekirse:
@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,
ShowCount
composable işlevicount
parametresi güncellendikten sonra bile her zaman atlanıyordu. Bu durum artık geçerli değil. (I5648a)rememberSaveable()
öğesinin, giriş parametreleriyle (I1b110, b/182403380) birlikte kullanıldığında eski değeri geri yüklemesi sorunu düzeltildi
Sürüm 1.0.0-beta03
24 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
yayınlandı. 1.0.0-beta03 sürümü bu kayıtları içerir.
API Değişiklikleri
DefaultMonotonicFrameClock
desteği sonlandırıldı.MonotonicFrameClock
olmadanwithFrameNanos
veyaRecomposer.runRecomposeAndApplyChanges
araması, artıkIllegalStateException
bildirimine yol açacaktır. (I4eb0d)
Sürüm 1.0.0-beta02
10 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
yayınlandı. 1.0.0-beta02 sürümü bu kayıtları içerir.
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımında kısıtlamalar uygula (I6aa29, b/174531520)
- Gezinme-oluşturma hedefinde kullanıldığında bozuk
rememberSaveable { mutableStateOf(0) }
sorununu 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
yayınlandı. 1.0.0-beta01 sürümü bu kayıtları içerir.
Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.
API Değişiklikleri
- Geçersiz kılınan besteleri ana çerçeve döngüsünden yeniden derlemek için
Recomposer.runRecomposeConcurrentlyAndApplyChanges
deneysel API ekleyin. (I342d0) - @ReadOnlyComposable ile işaretlenen tüm composable'lar artık yalnızca diğer @ReadOnlyComposables (I58961) koduna çağrı yaptıklarından emin olmak için derleme zamanı açısından doğrulanıyor
compositionLocalOf
vestaticCompositionLocalOf
için artık isteğe bağlı yerinedefaultFactory
zorunludur.Bu değişiklik, varsayılan fabrikanın sağlanmadığı, boş değerli olmayan türler için olası tür hatasını ortadan kaldırır. Önceden bu, null yapılamayan bir tür için boş referans sağlıyordu.
Boş değer atanabilen türler için varsayılan fabrika ayarı olarak
{ null }
değerini sağlayın.Makul bir varsayılan sağlanmadığı sürece, null yapılamayan türlere sahip yerel halkın kullanılması önerilmez. Makul bir varsayılan yoksa
defaultFactory
lambda bir istisna atmalıdır. Bununla birlikte, istisna uygulamak yerel tüketicilerin, tür sistemi tarafından zorunlu kılınmayan, sağlanan dolaylı bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)Kullanımdan kaldırılan simgeler, oluşturma çalışma zamanından kaldırıldı (I3252c)
Desteği sonlandırılan
emptyContent()
kaldırıldı. Bunun yerine{}
politikasını kullanın. (Idb33f, b/179432510)Sağlayıcılar, CompositionLocalProvider olarak yeniden adlandırıldı
- Beste oluşturucu artık anahtar parametresi kabul etmediğinden kullanımdan kaldırıldı.
- currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey mülke dönüştürüldü.
- CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, beton bir sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
- ComposableLambdaN, beton bir sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
- SnapshotFlow işlevi androidx.compose.runtime ad alanına taşındı
- SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değildir.
- @TestOnly üst düzey clearRoots işlevi kaldırıldı. Buna artık gerek yoktur.
- keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
- Composer.collectKeySourceBilgileri kaldırıldı. Buna artık gerek yoktur.
- isjoinedKey, birbirine katılmışKeyLeft vejoinKeyRight yöntemleri kaldırıldı. Artık gerekli değildir.
- Çeşitli üst düzey API'ler taşındı ve farklı dosyalar halinde yeniden düzenlendi. Kotlin’in dosya sınıfı semantiği nedeniyle bu, ikili uyumluluğu keser ancak kaynak uyumluluğunu keser. Bu nedenle çoğu kullanıcı için sorun teşkil etmeyecektir.
- (I99b7d, b/177245490)
SnapshotStateObserver artık Deneysel değil (Id2e6a)
Daha önce kullanımdan kaldırılmış bazı API'ler silindi (Ice5da, b/178633932)
Aşağıdaki Material API değişiklikleri yapıldı:
- Varsayılan dolgunun özelleştirilmesine olanak tanımak için Top/BottomAppBar'a contentPadding parametresi eklendi.
- BackdropScaffold'daki parametreler, isteğe bağlı parametrelerden önce gelen zorunlu parametreler için API yönergelerine uygun olacak şekilde yeniden sıralandı.
- BottomNavigasyonItem öğesindeki
icon
parametresi,selected
veonClick
değerlerinin sonrasına taşındı. - BottomNavigasyonItem parametresindeki
alwaysShowLabels
parametresialwaysShowLabel
olarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContent
parametresi yalnızcacontent
olarak yeniden adlandırıldı. ButtonDefaults.buttonColors()
içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediğinden, bunun kodunuzda bir hataya neden olmayacağını lütfen unutmayın. Lütfen adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde, kodunuz öncekiyle aynı şekilde çalışmaz.darkColors()
adlı kampanyayasecondaryVariant
parametresi eklendi. Bu renk, koyu temada genelliklesecondary
ile aynıdır, ancak tutarlılık ve daha fazla özelleştirme için eklenir.- Yaygın olarak kullanılmadığı / yararlı olmadığı için ElevationDefaults ve animasyonElevation() herkese açık API yüzeyinden kaldırıldı.
Slider
içindekionValueChangeEnd
öğesi,onValueChangeFinished
olarak yeniden adlandırıldı ve boş değerli hale getirildi.- Tutarlılık için
Snackbar
içindekitext
parametresicontent
olarak yeniden adlandırıldı. - Varsayılan dolgunun özelleştirilmesine olanak tanımak için
DropdownMenuItem
öğesinecontentPadding
parametresi eklendi vecontent
,RowScope
üzerinde bir uzantı oldu. ModalDrawerLayout
,ModalDrawer
olarak yeniden adlandırıldı.BottomDrawerLayout
,BottomDrawer
olarak yeniden adlandırıldı.- (I1cc66)
Sürüm 1.0.0-alpha12
10 Şubat 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12
yayınlandı. 1.0.0-alpha12 sürümü bu kayıtları içerir.
API Değişiklikleri
- ViewGroups desteği, UiApplier'den 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ündeki androidx.activity.compose.setContent konumuna taşındı. (Icf416)
- Snapshot API, dahili uygulama sınıflarını herkese açık API'den gizlemenin yanı sıra API yönergeleriyle daha tutarlı olacak şekilde güncellendi. (Id9e32)
- Ambiyans, Ambiyans -> CompositionLocal yeniden adlandırmasıyla eşleşecek şekilde yeniden adlandırıldı. Eskiden AmbientFoo adı verilen ambiyanslar artık CompositionLocals olarak LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient, CompositionLocal ve ambientOf / staticAmbientOf öğesi sırasıyla ComposerOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacını daha net hale getirmeye yardımcı olur: beste için yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinde
Local
önekinin kullanılması gerekir; ör. val LocalFoo = isationLocalOf { Foo() }. (Ia55b6) - TakeMutableSnapshot ve TakeSnapshot, Snapshot’ın tamamlayıcı yöntemleri haline geldi. (I91f19)
@ComposableContract
kullanımdan kaldırılmış ve üç spesifik ek açıklama kullanıma sunulmuştur.@ComposableContract(restartable = false)
,@NonRestartableComposable
oldu@ComposableContract(readonly = true)
,@ReadOnlyComposable
oldu@ComposableContract(preventCapture = true)
,@DisallowComposableCalls
oldu@ComposableContract(tracked = true)
kaldırıldı. (I60a9d)emptyContent() ve (@Composable () -> Unit).orBlank() yardımcı programları, artık performans üzerinde herhangi bir olumlu etkisi veya değeri olmadığı için kullanımdan kaldırılmıştır (I0484d)
snapshotFlow
vewithMutableSnapshot
artık deneysel değil (I6a45f)Yeniden toplayıcılar artık kapatılabilir. Kapalı yeniden düzenleyiciler, beste alt eş yordamları tamamlanana kadar yeniden oluşturma işlemine devam eder. Recomposer.shutDown, kapatma işlemiyle kontrast oluşturmak üzere iptal edilecek şekilde yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatch
yapısı kullanımdan kaldırıldı. MonotonicFrameClock artık write:runtime'da, AndroidUiDispatcher ise Composer:ui'de bulunabilir. (Ib5c36)Compose derleyici eklentisinin hedeflediği API, beton sınıf yerine arayüz kullanacak şekilde yeniden düzenlendi. Arayüz artık "type" parametresi kullanmamaktadır.
Bu, kaynak kodu uyumluluğunu etkilememesi gereken dahili bir değişikliktir. Ancak ikili programlara zarar veren bir değişikliktir. (I3b922, b/169406779)
SnapshotMutableState kullanıma sunuldu (Icfd03)
DisposableEffectDisposable, DisposaleEffectResult (Ica7c6) olarak yeniden adlandırıldı
Recomposer.current() kaldırıldı. [Abstract]ComposeView artık varsayılan olarak pencere için ViewTreeLifecycleOwner tarafından yönlendirilen, geç oluşturulmuş, pencere kapsamlı Recomposer'ları kullanıyor. Yeniden oluşturma ve withFrameNanos tabanlı animasyon onay işaretleri, ana makine Yaşam Döngüsü durdurulurken duraklatılır. (I38e11)
Recomposer.runningRecomposers artık süreçte devam eden beste durumunu gözlemlemek için küresel bir RecomposerInfo salt okunur StateFlow'u sunuyor. Artık kullanımdan kaldırılmış olan Recomposer.current() için bu API'yi tercih edin. (If8ebe)
DisposableEffectDisposable, DisposaleEffectResult (I3ea68) olarak yeniden adlandırıldı
Sürüm 1.0.0-alpha11
28 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
yayınlandı. Sürüm 1.0.0-alpha11 bu kayıtları içerir.
API Değişiklikleri
- onCommit, onDispose ve onActive desteği sonlandırıldı ve yerini SideEffect ve DisposableEffect API'leri (If760e) aldı.
- emit() API ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır. Compose'un (I4137b) adlandırma kurallarına uyması için farklı bir adları vardır.
- inverify ve engagementReference() işlevleri artık sırasıyla currentRecomposeScope ve remindersCompositionReference koduyla kullanımdan kaldırılmıştır. (I583a8)
ThankObserver, CompositionLifecycleObserver'ın yerini almıştır. CompositionLifecycleObserver için de destek sonlandırılmıştır.
RememberObserver
,CompositionLifecycleObserver
yerine değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemler kullanır. Yalnızca bir kez hatırlanan ve önerilen uygulama olmaya devam eden nesneler için mekanik olarak yeni API'ye geçiş yapılabilir. Bununla birlikte, bir referans bir bestede birden çok kez hatırlandıysa her bir referans içinonRemembered
çağrılır. Burada,onEnter
yalnızca bir kez çağrılır. Nesne alt kompozisyonlarda kullanılmışsaonEnter
birden çok kez çağrıldı (örneğin,WithConstraints
veScaffold
) tekonEnter
çağrısı garantisini güvenilmez hale getiriyor veRememberObserver
için kaldırıldı.RememberObserver
,RememberObserver
örneğininremember
öğesine iletilen geri çağırmadan döndürülmesi durumunda çağrılanonAbandoned
ifadesini ekler. Ancak bu işlev, bileşim durumunda hatırlanmaz ve bu nedenle, hiçbir zamanonRemembered
çağrılmaz. Bu durum, beste tamamlanmadan önce bir istisnanın sonlandırılması veya bestenin artık güncel olmadığı ya da başka bir şekilde gerekli olmaması nedeniyle bestenin çıkarılması durumunda meydana gelebilir. Yukarıdaki tek referans önerisini izleyenRememberObserver
örneğinin hemonForgotten
hem deonAbandoned
harici bir kaynağı izlemesi, kaynağa artık ihtiyaç duyulmadığını gösterir. Nesne,onRemembered
çağrılırsa çağrılmayacağı içinonAbandoned
, başlatılan işleri veyaonRemembered
içinde ayrılan kaynakları izliyorsa yoksayılabilir. (I02c36)collectAsState()
işlevlerini satır içi olarak işaretleme (Ia73e4)
Hata Düzeltmeleri
- WithConstraints, BoxWithConstraints olarak yeniden oluşturulması ve foundation.layout'a taşındı. (I9420b, b/173387208)
- Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)
Sürüm 1.0.0-alfa10
13 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
yayınlandı. Sürüm 1.0.0-alpha10 bu kayıtları içerir.
Çarpıcı Değişim
Dahili derleyici API'sinin yeniden yapılandırılması, bileşim sonucunda oluşturulan düğümlerde tüm
@Composable
işlevleri tamamlandıktan sonra değişikliklerin "değişiklikleri uygula" bileşimi aşamasında toplu olarak işlenmesini sağlar.Bu, değişiklikler uygulanana kadar dahili ve deneysel API'lerde artık düğümler mevcut olmadığı için uygulama kodunu etkileyebilecek olumsuz bir davranış değişikliğidir. Bu, genellikle kodun yürütülmesini, düğümler oluşturulup başlatılıncaya kadar ertelemek için bir
SideEffect
composable'ında bu tür bağımlılıklarla kod yuvarlanarak çözülebilir. (I018da)
API Değişiklikleri
- Toplayıcının değişiklikleri uygulayıp uygulamadığını izlemek için bir yol eklendi. (I1b3e2)
[Abstract]ComposeView API'lerini genişleterek Compose tabanlı görünümlerin geri dönüştürülmesini sağlayın ve bu görünümleri daha sonra yeniden oluşturmak üzere elden çıkarın. Alt besteler oluşturmak için pencere kapsamlı Recomposer ve CompositionReferences öğelerini yüklemek ve keşfetmek için API'ler ekleyin.
[Abstract]ComposeViews öğelerinin beste yok etme stratejisini yapılandırmak için ViewCompositionStrategy'yi ekleyin. Varsayılan davranış pencere ayırmada yok etme şeklindedir. (I860ab)
Hata Düzeltmeleri
- Recomposer artık geçerli durumunun bir Akışını sunarak etkinliğinin ve ilişkili efektlerin izlenmesine olanak tanıyor. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent üzerinden (I87c57, b/173086397) erişilebilir.
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kayıtları içerir.
API Değişiklikleri
Genel API'den SlotTable, SlotReader ve SlotWriter kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretleniyordu. Artık oluşturma modülünün dahilindedirler.
Kullanıcı arayüzü araçları API'sinin kompozisyon bilgilerini çıkarmak için kullanılması amacıyla CompositionData ve CompositionGroup eklendi. Bunlar herkese açıktır ancak kullanıcı arayüzü araçları API'sinin yorumladığı ham bilgileri sağladığı için (I31a9c) kullanıcı arayüzü araçları API'sinin dışında kullanılması amaçlanmamıştır.
Uygulamacı sınıfı artık (Id85b0) olarak kabul edilmiyor
Applier
arayüzü, ağaç oluşturmayı yukarıdan aşağı değil, aşağıdan yukarıya basitleştirecek şekilde değiştirildi.insert()
yöntemi,insertTopDown()
olarak yeniden adlandırıldı.Yeni bir yöntem (
insertBottomUp()
) eklendi.Uygulama geliştiricileri, düzenlediği ağaca düğüm ekleme işlemi için hangisinin daha iyi performans gösterdiğine bağlı olarak
insertTopDown()
veyainsertBottomUp()
seçeneklerini kullanır.LayoutNode
veView
gibi bazı ağaçlar, aşağıdan yukarıya doğru inşa etmekte yukarıdan aşağıya doğru çok daha etkilidir. Bu değişiklikten önce, performans için aşağıdan yukarıya yapı gerektiren her uygulamaya kopyalanan, aşağıdan yukarıya doğru bir ekleme yığını gerekiyordu. Bu değişiklikle birlikte birApplier
, ağacı aşağıdan yukarıya oluşturmak içininsertBottomUp()
öğesini, yukarıdan aşağıya doğru derlemek için deinsertTopDown()
politikasını geçersiz kılar. (Icbdc2)Compose, composable çağrılar yapabilen mülk alıcılarını destekler. Bu konuyla ilgili destek kaldırılmıyor, ancak bir özellik alıcıyı @Composable olarak tanımlamak için kullanılan söz dizimi değişiyor.
Bu işlemi gerçekleştirmek için kullanımdan kaldırılmış olan söz dizimi, özelliğin kendisine ek açıklama eklemekti:
@Composable val someProperty: Int get() = ...
Bunu yapmak için şu an doğru olan söz dizimi, özelliğin getter'ine ek açıklama eklemektir:
val someProperty: Int @Composable get() = ...
Her iki söz dizimi de bir süre çalışacaktır, ancak kullanımdan kaldırılan eski söz dizimi zaman içinde derleme hatası haline gelir. (Id9197)
Hata Düzeltmeleri
- AndroidSahibi dahili (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
yayınlandı. 1.0.0-alpha08 sürümü bu kayıtları içerir.
API Değişiklikleri
- Oluşturma yönergeleriyle tutarlılığı kontrol etmek amacıyla, composable lambda parametresi adlandırma ve konumu için lint denetimi eklendi.
Ayrıca, hata analizi ve yönlendirmelerine uygun şekilde, sonraki lambda'nın adı olarak
children
kullanan bazı API'lericontent
konumuna taşıdı. (Iec48e) - Recomposer artık EmbeddingContext kabul etmiyor. Gerekli planlama bağımlılıkları, efektCoroutineContext'ten alınır. FrameManager 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 (I66640) olarak yeniden adlandırıldı
Hata Düzeltmeleri
- Kullanımdan kaldırılmış Ambiyanslar ve Compose API kurallarına uyarak son eki
Ambient
olan Ambiyans sonekleri, ön ekinde Ambiyans olan yeni özelliklerle değiştirildi. (I33440) - Eski kullanıcı arayüzü testi modülünü ve saplamalarını kaldırın (I3a7cb)
Sürüm 1.0.0-alpha07
11 Kasım 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07
yayınlandı. 1.0.0-alpha07 sürümü bu kayıtları içerir.
Yeni Özellikler
API Değişiklikleri
@UnionType
ek açıklaması kullanımdan kaldırıldı (I57cde)- Ambiyans sağlama işlevi için alternatif olarak allowDefault eklendi ve yalnızca önceden bir ortam değeri sağlanmadığında ayarlanacak ambiyans değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
- LaunchedTask, SideEffect ve DisposableEffect API'leriyle tutarlılık sağlamak amacıyla LaunchedEffect olarak yeniden adlandırıldı. En iyi uygulamaları teşvik etmek amacıyla, konu parametresi olmayan LaunchedEfektine izin verilmez. (Ifd3d4)
- Başvuru sahibinin, artık, Composer ağa değişiklik uygulamaya başladığında/bittiğinde çağrılan onBeginChanges/onEndChanges geri çağırmalarına sahiptir. Bunlar, gerekirse kaynak yönetiminin toplu olarak işlenmesi için kullanılabilir. (Icf476)
- Recomposer artık yapım aşamasında CoroutineContext gerektirir (Ic4610)
- Dahili SlotTable uygulamasında yapılan ve genel API'yi etkilememesi gereken değişiklikler. (If9828)
- Başlangıç değerini almayan, kullanımdan kaldırılmış rxjava2 bağdaştırıcıları kaldırıldı (Idb72f)
Hata Düzeltmeleri
- foundation.Text desteği sonlandırıldı ve text.Text ile değiştirildi. Temadaki değerleri kullanmayan, temel ve yorumsuz bir metin API'si için androidx.compose.foundation.BasicText adresine bakın. (If64cb)
- BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField politikasını kullanın. (I896eb)
- Düzenle ilgili çeşitli simgeler androidx.compose.ui'den androidx.compose.layout.ui konumuna taşındı. (I0fa98, b/170475424)
Harici Katkı
- Oluşturma işlemi için
runtime-rxjava3
modülü eklendi.runtime-rxjava2
(I02cbf) ile benzer
Sürüm 1.0.0-alpha06
28 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06
yayınlandı. 1.0.0-alpha06 sürümü bu kayıtları içerir.
API Değişiklikleri
- Recomposer artık bir CompositionReference ve geçerli bir beste üst öğesi. Açık Recomposer artık daha az yerde gerekli. (I4036f)
- SideEffect'e DisposableEffect API'si eklenerek onCommit-with-params rolü zorunlu onDispose ile dolduruldu.
- Yeniden oluşturma işleminden elde edilen verileri, DisposableEffects veya LaunchedTasks gibi devam eden ya da uzun ömürlü işlemlere yayınlamak için YesUpdatedState API eklendi.
- (Id50b9)
- MutableVector artık RandomAccess'ı uyguluyor (I85d73, b/170461551)
- Bestenin yan efektlerini bestenin yönettiği nesnelere uygulamak için SideEffect composable eklendi. SideEffect'in onCommit composable'ın yerini alması amaçlanmıştır. (Ia77c2)
- Yeni deneysel API RestorableStateHolder. Alt ağaç için [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumun kaydedilmesine olanak tanır. Bu sayede, alt ağacın elden çıkarılmasından önce geri yüklenen durumla yeniden oluşturulur. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştirin; yanıp sönen imleci etkinleştirmek için ComposeTestRule'daki seçeneği kaldırın. (If0de3)
Sürüm 1.0.0-alpha05
14 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05
yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.
API Değişiklikleri
- Deneysel Modifier.pointerInput askıya alma giriş değiştiricisi (Ia77d2)
- LazyColumn/Row için kaydırma performansı, her kaydırmada alt kompozisyon üzerinde daha az işlem yapılarak iyileştirildi. Kompozisyon sınıfı için yeni hasClicks() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi has Invalidations() (Ib2f32, b/168293643, b/167972292, b/165028371) olarak yeniden adlandırıldı
- Zaman içinde tek bir
State<T>
değerini güncelleyen bileşimden eş yordamlar başlatmak için generateState API'si ekleyin (Id4a57) - LaunchInComposition, Compose API yönergeleriyle eşleşmesi için LaunchedTask olarak yeniden adlandırılır (I99a8e)
- Özel Düzenler'deki Place() çağrılarının sırası artık alt öğeler için ç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
yayınlandı. Sürüm 1.0.0-alpha04 bu kayıtları içerir.
API Değişiklikleri
- Artık geçerli olmadığında düzenin toplanmasına ve gözlem kapsamları çizimine izin vermek için OwnerScope eklendi. (Ic4cf8)
- Diğer Durum nesnelerini (If758b) okuyabilen (ve bundan türetebilen) bir hesaplamaya dayalı Durum nesneleri oluşturmak için türvedStateOf API'si eklendi
- SnapshotStateObserver için TestOnly API (I6e2a9) eklendi
Hata Düzeltmeleri
- foundation.Box kullanımdan kaldı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
yayınlandı. 1.0.0-alpha03 sürümü bu kayıtları içerir.
API Değişiklikleri
CompositionCoroutineScope
artıkMonotonicFrameClock
uygulamasını kullanmıyor.withFrameNanos
işlevini çağıranların üst düzey işlevi açıkça içe aktarması gerekir. (Icb642, b/166778123)
Hata Düzeltmeleri
onNode
veyawaitForIdle
gibi küresel test işlevleri kullanımdan kaldırıldı. Lütfen ComposerTestRule'da (I7f45a) tanımlanan yeni eşdeğerlerine taşıyınlaunchInComposition
, artık gönderilmemiş eşleri kullanıma sunmamaktadır (Ief6af, b/166486000)
Sürüm 1.0.0-alpha02
2 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.
API Değişiklikleri
- Anlık görüntü veri değişikliklerini almak ve üretmek için
snapshotFlow
vewithMutableSnapshot
API'leri ekleyin. (I3e722) composable işlevler için çağrı kuralı değişti. Bu, zarar veren bir ikili değişimdir. Tüm kitaplıklar, oluşturma derleyici eklentisinin bu sürümüyle çalışacak şekilde yeniden derlenmelidir.
Değişen tek API'ler açık bir etkinleştirmeye sahip derleyici API'leri olduğundan bu değişiklik kaynak düzeyinde zarar veren bir değişiklik oluşturmaz. (I7afd2, b/158123185)
EmbeddingContext'ten planlama yöntemleri kaldırıldı (I7b9be)
onPreCommit kullanımdan kaldırıldı; onCommit artık onPreCommit davranışına sahiptir.
onCommit ve onActive artık bir sonraki koreograf karesinin başında değil, bestenin kaydedildiği koreograf karesinde çalışıyor. (I70403)
Sürüm 1.0.0-alpha01
26 Ağustos 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
yayınlandı. 1.0.0-alpha01 sürümü bu kayıtları 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
yayınlandı. 0.1.0-dev17 sürümü bu kayıtları içerir.
API Değişiklikleri
- Özel Emit'ler artık bir veya daha fazla ayarlayıcının emit'ten bağımsız olarak atlanıp yeniden derlenebileceğini bildirebiliyor. (İbbd13)
Kullanımdan kaldırılan FrameManager çağrıları kaldırıldı.
Dahili oluşturma API'leri,
mutableStateof()
(I80ba6) gibi durum nesnelerini izlemek için kullanılan ek yük miktarını azaltacak şekilde değiştirildiArtık
state { ... }
composable'ı kullanımdan kaldırılarak yerine açıkremember { mutableStateOf(...) }
çağrısı yapılması gerekiyor. Bu, genel API yüzeyini ve durum yönetimiyle ilgili kavramların sayısını azaltır ve sınıf özelliği yetkisi içinby mutableStateOf()
kalıbıyla eşleşir. (Ia5727)Flow.collectAsState artık varsayılan olarak Dispatchers.Main'i kullanmak yerine bestenin kendisinden varsayılan görev dağıtıcıyı belirliyor. (I9c1d9)
For döngüsü içinde durumu kaydeden bir şey kullanıldığında kilitlenme. SaveInstanceState()'te aynı anahtara sahip olmaya artık izin veriliyor. UiSavedStateRegistry API'si artık bu yeni gereksinime göre ayarlanmıştır (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Hata Düzeltmeleri
emitView
desteği sonlandırıldı. Compose içinde Görünümler yayınlamak için mümkünse bunun yerineAndroidView
kullanın. Görünüm ve Görünüm Gruplarının doğrudan oluşturulmasının, bunlar bile oluşturma ağacında bırakılmadığı sürece gelecekte desteklenmeyeceğini unutmayın. Bu işlem AndroidView kullanılarak yapılabilir. (I29b1e, b/163871221)
Sürüm 0.1.0-dev16
5 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
yayınlandı. 0.1.0-dev16 sürümü bu kayıtları içerir.
API Değişiklikleri
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
öğelerinin varsayılan dönüşüm politikasıreferentialEqualityPolicy()
yerinestructuralEqualityPolicy()
olarak değiştirildi.Bir
mutableStateOf()
örneğine atanan yeni bir değerin değişiklik olarak kabul edilip edilmeyeceğine karar vermek için kullanılan varsayılan değer, artık===
yerine==
kullanılır.https://kotlinlang.org/docs/reference/equality.html adresine bakın
ambientOf()
vesavedInstanceStateOf()
,mutableStateOf()
ile tutarlı olması için uygulamalarındamutableStateOf()
kullanıyor.Yapısal eşitlik, geliştiricilerin beklentileriyle daha iyi eşleşiyor.
Örneğin,
val state = mutableStateOf(1f)
ardından,
state.value = 1f
artık
state
için bir değişiklik olarak kabul edilmez ve beste sırasındastate
kullanımının yeniden oluşturulması gerekmez.Bu, zarar veren bir değişikliktir ancak çoğu durumda (
equals()
'i geçersiz kılmayan sınıflar kullanılırken) uygulama üzerinde fark edilebilir bir etkisi olmaz.data
sınıfları gibiequals()
yöntemini geçersiz kılan sınıflarınequals()
yöntemleri artık birmutableStateOf()
'ye atandığında varsayılan olarak çağrıldığı için performansta düşüş yaşanabilir.Önceki davranış;
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
çağrılarınapolicy = referentialEqualityPolicy()
politika parametresi eklenerek geri yüklenebilir. (Ic21a7)Row
veColumn
artık satır içi işlevlerle bunları kullanmanın ek yükünü önemli ölçüde azaltıyor. (I75c10)
Hata Düzeltmeleri
- setViewContent desteği sonlandırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
Yeni eş yordam tabanlı saatler ile eski geri çağırmaya dayalı saatleri kullanmaya devam eden API'ler arasındaki boşluğu doldurmak için bir AnimationClockObservable olarak MonotonicFrameClock kullanmanızı sağlayan MonotonicFrameAnimationClock eklendi.
ManualAnimationClock'ın 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 ScrollableState sınıfı kullanıma sunuldu ve DrawerState ile BottomDrawerState sınıfını devralacak şekilde yeniden düzenlendi. [Modal/Bottom]DrawerLayout artık onStateChange parametresini kullanmıyor. (I72332, b/148023068)
Modifier.plus kullanımdan kaldırıldı, bunun yerine Modifier.then kullanın. "Ardından" daha güçlü bir sipariş sinyaline sahiptir. Ayrıca, zinciri bozan ve okunması daha zor olan
Modifier.padding().background() + anotherModifier
yazmayı da yasaklar (Iedd58, b/161529964)SubcomposeLayout eklendi. Alt ağaç bileşimi ölçümü sırasında yalnızca daha sonra kullanılabilen bazı değerleri kullanmak istiyorsak ölçüm sırasında alt öğelerin oluşturulmasına olanak tanıyan düşük seviyeli bir temel öğedir. Örneğin, SubcomposeLayout kullanılarak WithConstraints uygulanmaz. (I25cc8)
Material FilledTextField, TextField olarak, temel TextField'in adı ise BaseTextField olarak değiştirildi. Böylece, istenen API'nin en basit şekilde keşfedilip kullanılmasını kolaylaştırdı (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
yayınlandı. 0.1.0-dev15 sürümü bu kayıtları içerir.
Bağımlılıkları Güncelleme
- Compose'un
0.1.0-dev15
sürümünü kullanmak için bağımlılıklarınızı yukarıda Bağımlılık bildirme bölümünde gösterilen yeni kod snippet'lerine göre güncellemeniz gerekir.
API Değişiklikleri
@Model
ek açıklaması kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf alanını kullanın. Bu kullanımdan kaldırma kararı, ayrıntılı bir tartışma sonrasında alınmıştır.Gerekçe
Gerekçe, bunlarla sınırlı olmamakla birlikte aşağıdakileri içerir:
- API yüzey alanını ve öğretmemiz gereken kavramları azaltır
- Diğer benzer araç setleriyle daha uyumludur (Swift UI, React, Flutter)
- Geri alınabilir karar.
@Model
hizmetini daha sonra dilediğiniz zaman geri getirebiliriz. @Model
ürününün, özellikle ilgilenmemiz gereken durumlar olarak yapılandırılmasına ilişkin soruları ve cevaplanması zor soruları kaldırır.@Model
veri sınıfı, eşittir, karma kodu vb.- Bazı mülklerim "gözlemlenir"ken bazılarında nasıl olmaz?
- Gözlemde kullanılacak yapısal ve referanssal eşitliği nasıl belirtirim?
- Sistemdeki “sihri” azaltır. Bir kişinin sistemin olduğundan daha akıllı olduğunu (ör. bir listeyi nasıl farklılaştıracağını bildiği) varsayma olasılığını azaltır
- Gözlem ayrıntı düzeyini daha sezgisel hâle getirir.
- Sınıftaki değişken -> özelliğinden yeniden yapılandırılabilirliği iyileştirir
- Duruma özel el yapımı optimizasyonlar yapma potansiyeli yaratır
- Ekosistemin geri kalanıyla daha yakın uyum içindedir ve sabit durumumuz ya da bizim "değişken durumu benimseme" yönündeki belirsizliği azaltır
Taşıma Notları
Mevcut
@Model
kullanımlarının neredeyse tamamı, oldukça küçük çaplı bir şekilde iki şekilde dönüştürülür. Aşağıdaki örnekte, yalnızca örnek olması amacıyla iki özelliğe sahip bir@Model
sınıfı vardır ve bu sınıf bir composable'da kullanılmıştır.@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>
kullanarak kopya oluşturun.Kotlin'in veri sınıfları sayesinde bu yaklaşım daha kolay hale getirilmiştir. Temelde, önceki tüm
var
özelliklerini bir veri sınıfınınval
özelliklerinde yapın, ardındanremember
yerinestate
kullanın ve durum değerini,copy(...)
veri sınıfı kolaylık yöntemini kullanarak orijinalin klonlanmış kopyalarına atayın.Bu yaklaşımın yalnızca,
State
örneğinin oluşturulduğu kapsamda söz konusu sınıf üzerinde yalnızca mutasyonlar yapıldığında işe yarayacağını unutmayın. Sınıf, kullanım kapsamı dışında kendi içinde kendi kendine dönüşüm gerçekleştiriyorsa ve bunun gözlemine güveniyorsanız, kullanacağınız yaklaşım bir sonraki yaklaşım olacaktı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 mülk delegelerini kullanın
Bu yaklaşım, Kotlin’in mülk yetkilileri ve kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanıyan
mutableStateOf
API ile daha kolay hale getirildi. Esasen, orijinal sınıfın tümvar
özelliklerinivar
mülkleriyle değiştirin ve mülk yetkisi verilenmutableStateOf
mülklerini kullanın. Bu, sınıfın kullanımının hiçbir şekilde değişmeyecek; yalnızca dahili uygulamada değişiklik sağlaması gibi bir avantaja sahiptir. Bununla birlikte, her mülk artık ayrı ayrı gözlemlendiği/abone olduğu için davranış orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenleme işleminden sonra göreceğiniz yeniden düzenlemeler daha dar kapsamlı olabilir (iyi bir şey).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/924}b/924}
Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, oluşturma derleyicisi çağrıları composable işlevlere dönüştürüyordu. Bu değişiklikle birlikte, composable fonksiyonunun gövdesini dönüştürüp çağrı sitesini (çoğunlukla) değiştirmeden bırakıyoruz.
Bu, yazma çalışma zamanıyla iletişim kuran mantığın büyük bölümünün, çağrı sitesi yerine işlev gövdesinin başlangıcında gerçekleştiği anlamına gelir.
Bu, tüm oluşturma kullanımı için kaynakla uyumlu bir değişiklik olmalıdır. Bu değişikliğin ardından, yazma kullanıcılarının çoğunun 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şlev, 3 parametre kabul eden bir işleve dönüştürülür; ek parametreler "anahtar" tam sayısı olan Composer ve çağrılar aracılığıyla meta verileri yaymak için kullanılan bir bit maskesi tam sayısıdır.
Oluştur özelliği artık varsayılan bağımsız değişkenleri de composable bir işleve dönüştürüyor. Bunu, işlevin kendisinin ek bir sentetik varsayılan aşırı yüklemesi olmadan yapar; böylece bu değişiklik daha az işlevin tanımlanmasına neden olur.
Aşağıdaki durumlardan kaynaklanan bilinen kasıtlı davranış değişiklikleri:
- Bazı aramalar daha önce atlamadıkları noktalara atlanır
- Varsayılan bağımsız değişken ifadelerindeki composable ifadeler artık doğru şekilde abone olundu ve işlendi
Bu çalışma kapsamında bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer composable fonksiyonlara aktarılır. Bu, çalışma zamanında daha az karşılaştırmaya neden olur, slot tablosu boyutunu küçültür ve daha önce atlanmamış composable işlevlerin daha fazla atlanmasını sağlar 2. Derleme zamanında "statik" olduğu belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Böylece karşılaştırma sayısını azaltıp slot tablosu boyutunu küçültebilirsiniz. 3. İşlevlerin gövdesinin kontrol akışı yapısı, oluşturulan grup sayısını en aza indirmek için kullanılır. Bu, slot tablosu boyutunu küçültür ve çalışma zamanında daha az iş yapılmasına neden olur 4. İşlevlere yönelik kullanılmayan gönderme ve alıcı parametreleri, işlevin gövdesinde kullanılmadıkları takdirde işlevin atlanabilirliğini belirlemeye dahil edilmez.
Zarar veren değişikliklerin çoğu, derleyicinin doğrudan hedeflediği API'ler içindi ve tipik oluşturma kullanımı bu durumdan etkilenmeyecek: 1. Composer::startExpr kaldırıldı 2. Composer::endExpr kaldırıldı 3. Composer::call kullanımdan kaldırıldı 4.
key
öğesinin değişken olmayan aşırı yüklemeleri kaldırıldı. Bundan sonravararg
sürümünü kullanın. 5. Pivotal ek açıklaması kullanımdan kaldırıldı. Yedek olarakkey
kullanın. 6. ScopeUpdateScope::updateScope değeri, Function1 yerine bir Function3 öğesi beklenecek şekilde değiştirildi. 7. restartableFunction ve yeniden başlatılabilirFunctionN, ek derleme zamanı parametreleri içerecek şekilde güncellendi (I60756, b/143464846)MutableVector'a SortWith ve removeRange eklendi (Icccf7)
CompositionLifecycleObserver için varsayılan yöntem uygulamaları eklendi (I24289)
Applier artık kompozisyonları atmak için clear() yöntemi gerektiriyor (Ibe697)
Tüm listenin kopyalanmasına gerek kalmadan herkese açık API'ye iletilmesine olanak tanımak için asMutableList(), MutableVector'a eklendi. (I298df)
Etkinliklere yanıt olarak iş başlatmak üzere bileşimde yönetilen bir CoroutineScope elde etmek için fireCoroutineScope() eklendi. (I0e264)
MutableVector, standart Koleksiyon arayüzlerinin hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde hız sunar ve yalnızca şirket içi uygulamalarda kullanılmak üzere tasarlanmıştır. (I8ebd6)
Kotlin oluşturma sürümünde sorun olmaması için
StableMutableList
veStableMutableMap
geçici olarak kaldırıldı. Oluşturma işlemi, Kotlin'in sorun içermeyen bir sürümüne güncellendiğinde bu arayüzler yeniden kullanıma sunulacak.SnapshotStateList
veSnapshotStateMap
şu anda herkese açık ancakStableMutableList
veStableMutableMap
geri yüklendikten sonra kullanımdan kaldırılacak. (Ia7769)animasyon zamanlaması için üst düzey withFrameNanos işlevi ekleyin (Ie34c5)
@Untracked ek açıklaması kullanımdan kaldırıldı. @ComposableContract(tracked=false) (Id211e) ile değiştirin
RedirectableFunction ve ilişkili API'ler, ComposableLambda vb. olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiği için bu durum kaynak düzeyi uyumluluğunu normal şekilde etkilemeyecektir. Yeniden adlandırma esasen, bu sınıfın yığın izlemelerde gösterildiğinde hangi sınıfın daha iyi olduğunun bilinmesini sağlamak amacıyla yapılmıştır (I7eb25)
@Composable ek açıklaması artık sınıflarda geçerli değil (Ia5f02)
Ambient<T>
artık @Immutable yerine @Kararlı oldu (I0b4bb)Bu değişiklikten önce, bir @Composable işlevi (I5205a, b/158123804) varsa oluşturma derleyici eklentisi, bir @Composable işlevinin içindeki kuruculara yapılan çağrılarda önemsiz bir şekilde engelleniyordu.
Recompose composable artık yararlı bir soyutlama değil. Yeniden oluşturma işlemlerinin çoğu MutableState atamaları sonucunda gerçekleştirilmelidir. Bunun dışındaki her şey için geçerli kapsamın yeniden oluşturulmasını tetiklemek üzere
invalidate
işlevini kullanmanız önerilir. (Ifc992)Gözlem artık yararlı bir soyutlama değil. Kodu çoğaltmanız gerekiyorsa, composable lambda parametresini yürüten composable bir işlev oluşturarak uygulanarak çoğaltılabilir. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct kullanımdan kaldırılmış ve bunun yerine @ComposableContract(restartable=false) özelliği devreye alınmıştır (If4708)
Kısa süre önce kullanıma sunulan StateFlow için, döndürülen Durum'un null yapılamayan durumlarda başlangıç değerinin önceden doldurulmasına olanak tanıyan bir bağdaştırıcı eklendi (I61dd8, b/156233789)
Akış için bağdaştırıcı eklendi. Kullanım örneği: flow.collectAsState() tarafından kullanılan val değeri (If2198, b/153375923)
[Mutable]Eyalet mülk delege operatörleri, Kotlin 1.4 mülk yetkilendirmesi 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 eklemeleri gerekir. (I5312c)androidx.compose.ViewComposer, androidx.ui.node.UiComposer androidx.compose.Emittable'a taşındı. ComponentNode ile yedekliyordu. androidx.compose.ViewAdapters kaldırıldı. Bunlar artık desteklenen bir kullanım alanı değildir. Compose.composeInto kullanımdan kaldırıldı. Bunun yerine
setContent
veyasetViewContent
kullanın. Compose.disposeComposition kullanımdan kaldırıldı. Bunun yerine,setContent
tarafından döndürülenComposition
üzerindekidispose
yöntemini kullanın. androidx.compose.Compose.subcomposeInto androidx.ui.core.subcomposeInto'ya taşındı ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı ComponentNode#emitRemoveAt, ComponentNode#removeAt ComponentNode#emitMode0 olarak yeniden adlandırıldıComponentNode#removeAt#emitMode0 olarak yeniden adlandırıldıComposeFlags.COMPOSER_PARAM
işareti, oluşturma eklentisi için kod oluşturma stratejisini değiştirecek şekildetrue
olarak güncellendi. Yüksek düzeyde bu durum, @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 geçirilir. Bu, ikili programlarda önemli bir bozulma değişikliği olsa da, onaylı tüm oluşturma işlemlerinde kaynak düzeyinde uyumluluğun korunması gerekir. (I7971c)Ambients API'deki önemli değişiklikler. Ayrıntılar için günlüğe ve
Ambient<T>
dokümanlarına bakın (I4c7ee, b/143769776)ui-livedata eklendi: LiveData için bağdaştırıcıya sahip yeni yapı. Kullanım örneği: liveData.observeAsState() tarafından kullanılan val değeri (Ie9e8c, b/150465596)
Açık bir başlangıç değeri olmayan Rx adaptörleri kullanımdan kaldırılmıştır. Null kullanmak her zaman en iyi varsayılan yöntem değildir. Örneğin, bir Listeniz varsa emptyList() veya başka bir makul varsayılan (I00025, b/161348384) ile başlamak daha iyidir.
RxJava2 için adaptörlere sahip yeni yapı olan ui-rxjava2 eklendi. Kullanım örneği: observable.subscribeAsState()() (Ifab4b, b/153369097) tarafından kullanılan val değeri
savedInstanceState()
artık null özellikli türlerle kullanılabilir (I6847f, b/153532190)Özel Tasarrufu nesneleri yazmayı kolaylaştıran yeni listSaver() ve mapSaver() özellikleri (I8cf68, b/152331508)
Yeni işlevler: savedInstanceState() ve remindersSavedInstanceState(). Bunlar, state() ve reminders() işlevine benzerdir ancak şurada kaydedilmiş bir örnek durum desteği derlemesi içerir (If1987, b/152025209)
Hata Düzeltmeleri
runOnIdleCompose
,runOnIdle
(I83607) olarak yeniden adlandırıldı- LayoutNode deneysel API'sı yapıldı (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue kullanımdan kaldırıldı. Bu türü kullanan TextField,FilledTextField ve CoreTextField composable öğeleri de kullanımdan kaldırılmıştır. Lütfen bunun yerine androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005)
- Modifier'dadrawArka Plan uzantı API'leri yerine, kullanımdan kaldırılan Drawbackground API'si kaldırıldı. Kod yollarını azaltmak için renk, fırça ve boya çizimiArka plan uygulamaları yeniden düzenlendi ve kompozisyonun bir parçası olarak Değiştirici'nin oluşturulması gerekliliği kaldırıldı. (I0343a)
- Bunun yerine CanvasScope'u kullanıma sunmak için Tuval sunan daha üst düzey oluşturma API'leri güncellendi. Bu, tüketicilerin kendi Paint nesnelerini koruma ihtiyacını ortadan kaldırır. Hâlâ bir Tuval'e erişmesi gereken tüketiciler, çizim komutu vermek için alttaki Tuval'e geri çağırma sağlayandrawCanvas uzantı yöntemini kullanabilirler. (I80afd)
- WithConstraints sondaki lambda API'si değiştirildi. Şimdi iki parametre yerine bir alıcı kapsamına sahiptir. Bu alıcı kapsamı, sınırlamalara ve layoutDirection'a ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlar (I91b9a, b/149979702)
- Simetrik dolgu değiştiricisi eklendi. (I39840)
- wrapContentWidth ve wrapContentHeight, herhangi bir Hizalama yerine dikey veya yatay Hizalama beklenecek ş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)
- kullanıcı arayüzü modülü, ui-text-core (I57dec) olarak yeniden adlandırıldı
- DrawModifier API'yi iyileştirin:
- Draw() ContentDrawScope için alıcı kapsamı oluşturuldu
- Draw() üzerindeki tüm parametreler kaldırıldı
- DrawScope, eski CanvasScope ile aynı arayüze sahip
- ContentDrawScope'tadrawContent() yöntemi (Ibaced, b/152919067) bulunur
- ColoredRect kullanımdan kaldı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ı işlevleriyle değiştirildi (I225e4)
- RowScope ve ColumnScope üyelerine artık Satır ve Sütun dışından erişilebilir. (I3a641)
- LayoutEsnek, Layoutweight olarak yeniden adlandırıldı. Sıkı parametre, doldurulacak şekilde yeniden adlandırıldı. (If4738)
- WithConstraints, LayoutDirection parametresini (I6d6f7) aldı
- Arka plan, Drawbackground olarak yeniden adlandırıldı ve varsayılan olarak ezberlenmesi için ayarlandı (Ia0bd3)
- ButtonStyle farklı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenmiş örneklere bakın. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
verunOnUiThread
artık ComposeTestRule'daki yöntemler yerine genel işlevlerdir. (Icbe8f)
Harici Katkı
- Compose Çalışma Zamanı bağlantı noktası katmanından (I6847d) Looper ve İşleyici gibi gereksiz API'leri kaldırın
Flow<T>.collectAsState()
öğesini başlangıç değeri olmadan kullanımdan kaldırın. Bunun yerineStateFlow<T>
kullanın veya açık bir başlangıç değeri iletin. (I63f98, b/157674865)