Ç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 referansı paketlerine bakın
(
Son Güncelleme | Kararlı Sürüm | Serbest Bırakma Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
29 Kasım 2023 | 1.5.4 | - | 1.6.0-beta02 | - |
Yapı
Oluştur, androidx
içindeki 7 Maven Grup Kimliğinin birleşiminden oluşur. Her Grup, her birinin 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 notu grubunun bağlantıları açıklanmaktadır.
Gruplandır | Açıklama |
---|---|
compose.animation | Jetpack Compose uygulamalarında kullanıcı deneyimini zenginleştirmek için animasyonlar oluşturur. |
compose.derleyici | @Composable işlevlerini dönüştürün ve bir Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin. |
compose.foundation | Kullanıma hazır yapı taşlarıyla Jetpack Compose uygulamaları yazın ve kendi tasarım sistemi parçalarınızı oluşturmak için temeli genişletin. |
compose.material | Kullanıma hazır Materyal Tasarım Bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, www.material.io adresinde açıklananlarla eşleşen bileşenleri sağlamak üzere tasarlanmış Compose'un daha üst düzey giriş noktasıdır. |
compose.material3 | Materyal Tasarımın yeni evrimi olan Materyal Tasarım 3 Bileşen ile Jetpack Compose kullanıcı arayüzleri oluşturun. Güncellenen tema ve bileşenlerin yanı sıra dinamik renk gibi Material You kişiselleştirme özellikleri içeren Material 3, yeni Android 12 görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlandı. |
compose.runtime | Compose'un programlama modelinin ve durum yönetiminin temel yapı taşları ve Compose Compiler Eklentisi'nin hedeflemesi için temel çalışma zamanı. |
compose.ui | Cihazla etkileşim kurmak için gereken temel yazma kullanıcı arayüzü bileşenleri (ör. düzen, çizim ve giriş). |
Bağımlılıkları bildirme
Compose'da bağımlılık eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:
Modern
dependencies { implementation "androidx.compose.runtime:runtime:1.5.4" implementation "androidx.compose.runtime:runtime-livedata:1.5.4" implementation "androidx.compose.runtime:runtime-rxjava2:1.5.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.5" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.5.4") implementation("androidx.compose.runtime:runtime-livedata:1.5.4") implementation("androidx.compose.runtime:runtime-rxjava2:1.5.4") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.5" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme bölümüne bakın.
Geri bildirim
Geri bildirimleriniz Jetpack'i iyileştirmemize yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı geliştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni hesap 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. Böylece, oluşturma çalışma zamanı izlemenin uygulamaya daha yeni bir yazma çalışma zamanı sürümü getirmesi sorunu giderildi.
Sürüm 1.0.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
yayınlandı. 1.0.0-alpha04 sürümü bu kayıtları içerir.
Yeni Özellikler
- Karşılaştırma ve İzleme Perfetto'nun en son sürümleriyle uyumludur. Bu özellik, AndroidX Karşılaştırma ve Android Studio gibi (Hedgehog Beta 2'den itibaren) gibi uygulama başlatılırken (sıfır başlatma) Beste İzleme desteği sağlar.
API Değişiklikleri
androidx.tracing.perfetto.Trace
adlı dosyaandroidx.tracing.perfetto.PerfettoSdkTrace
olarak yeniden adlandırıldı. (I44af8)- Tracking Perfetto SDK API'lerini
android.os.Trace
ile tutarlı hale getirmek. (I73ba0, b/282199917) - Uygulama başlatılırken izleme için ön koşullar. (Iad890)
- Deneysel ve herkese açık API dosyaları birleştirildi (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.
Yeni Özellikler
- İşlevsel değişiklik yok. Aşağı akış bağımlılıklarında 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ı. Sürüm 1.0.0-alpha01 bu kayıtları içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing
, desteklediği araçlar sayesinde (yakında kullanıma sunulacak) bir Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. Bu ilk sürüm 1.0.0-alpha01'dir.
Sürüm 1.6
Sürüm 1.6.0-beta02
29 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
yayınlandı. Sürüm 1.6.0-beta02 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ı. Sürüm 1.6.0-beta01 bu kayıtları içerir.
API Değişiklikleri
- Belirli kararlılık değerlerini ek açıklamada yay. (274a4c)
Hata Düzeltmeleri
- Bağlam içinde beste yerel kapsam durumu için referans politikası kullanın. (83361c)
- $dirty yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)
- Bazen yanlış beste yerel değerleri alınırken 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
tam değeri 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ırlanan hesaplamada 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 kaydetmeleri içerir.
API Değişiklikleri
SnapshotStateList
, kullanılacak liste yardımcılarının doğrudan dizine ekleme sürümünü etkinleştirmek için artıkRandomAccess
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ü (4dff9a) sırasında yutulan istisnaları yeniden atma
API Değişiklikleri
ReusableComposition
devre dışı bırakılması için bir yöntem eklendi. Böylece gözlemler kaldırıldı ancak düğümleri yerlerinde duruyor. Devre dışı bırakılan beste,setContent
çağrısı yapılarak tekrar etkinleştirilebilir. (Ib7f31)- Yaşam döngüsünü yönetmek ve alt bestelerin yeniden kullanımı 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 kaydetmeleri 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)
- Beste yerel değerleri sağlama özelliğini iyileştirin (a337ea)
- Grup oluşturulmaması için
SideEffect
@ExplicitGroupsComposable
olarak işaretlendi. (I74815) - Kompozisyon yerel haritalarını yeniden kullanım sırasında karşılaştırmaktan kaçının (782071)
API Değişiklikleri
CompositionLocalProviders
için, birden fazla değerin daha hızlı sağlanması amacıyla 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
- Yuvadaki tablo 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 bestelerin yeniden oluşturulmasını 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ı yapmaktan 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ı. 1.5.1 sürümü 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 düzenleme, renk animasyonları ve
AndroidComposeView
ile ilgili 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) - Eyalet ve
MutableState
(fb3d89) temel sürümlerini ekleyin - Eklenen
Snapshot.isApplyObserverNotificationPending
(I672a5) State
API'sinin temel sürümleri eklendi. Böylece Int, Long, Float ve Çift değerlerininState
nesnelerinde otomatik kutulama için ceza uygulanmasına gerek kalmadan izlenmesine izin verildi. Bunları kullanmak için yeni fabrika yöntemleri olanmutableIntState(Int)
,mutableFloatStateOf(Float)
vb. kullanın. (I48e43)
Hata Düzeltmeleri
- Kaldırılacak alt bestelerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
ComposerImpl
içinde anlık görüntü referansını saklama (0206f7)- Kompozisyonu iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
- Beste silme 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 tüm bileşim yerine yalnızca
withFrameNanos
çağrılarını engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin, veri değişiklikleri için yeniden oluşturulmaya devam edeceği, ancak animasyonların veyawithFrameNanos
öğesini çağıran diğer kişilerin engelleneceği anlamına gelir. (Id9e7f, b/240975572) - Efektleri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını çalıştırın 3784073 - Yeniden başlatılan lambda'ların değiştirilen işaretlerini düzeltin ea81df9
- 73fd4d8 düğümleriyle Composable için canlı düzenleme regresyonu düzeltildi
- ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
- Değiştirilmemiş türetilmiş 84d9b1c durumları için
SnapshotStateObserver
kapsamı geçersiz kılın - Besteleri atarken olası kilitlenmeyi düzeltme 28761fc
- Bir alt besteye taşınan içeriği düzeltme 92d4156
- Yeniden başlatılan lambda'ların değiştirilen işaretlerini düzeltin (8a03e9)
- Efektleri ortadan kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını çalıştırı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()
içindekifill
öğ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 anında geçersiz kılma işlemlerini düzeltme (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ı iptal etme- Erişilemez durum kayıtları içeren durum nesnesi kayıtlarının üzerine yaz (c986960)
- Grupları gerçekleştirilirken doğru kapsamın oluşturucusunu kullanma (9a5e5b6)
- Anlık görüntü geçersiz kılma işlemlerini depolamak için
IdentityArraySet
öğesini kullanın (7f60cca) - Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
yayınlandı. Sürüm 1.5.0-rc01 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 öğelere karşılık gelen özel türlerine taşınmasını öneren isteğe bağlı bir inceleme mevcuttur. Hatanın hata analizi kimliği:AutoboxingStateCreation
. Daha önce bu inceleme tüm projeler için varsayılan olarak etkinleştirilmişti. Bu uyarıyı, Android Studio'nun düzenleyicisinde ve projenizin lint çıkışlarında görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında (I34f7e)warning "AutoboxingStateCreation"
tanımlayarak bilgi amaçlı olan önem derecesini uyarı (veya üstü) 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ı. Sürüm 1.5.0-beta03 bu kayıtları içerir.
Hata Düzeltmeleri
- Kaldırılacak alt bestelerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
Sürüm 1.5.0-beta02
7 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
yayınlandı. Sürüm 1.5.0-beta02 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ı. Sürüm 1.5.0-beta01 bu kayıtları içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
(Ib2bfa) içindeki 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) - Eyalet ve
MutableState
(fb3d89) temel sürümlerini ekleyin - Eklenen
Snapshot.isApplyObserverNotificationPending
(I672a5)
Hata Düzeltmeleri
- Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
ComposerImpl
içinde anlık görüntü referansını saklama (0206f7)CoroutineScopes
(a55362 ve bd382f) oluşturma işlemini hızlı iptal etme- Kompozisyonu iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
- Beste silme 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ın değiştirilen işaretlerini düzeltin (8a03e9)
- Efektleri ortadan kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını çalıştırı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. Böylece Int, Long, Float ve Çift değerlerininState
nesnelerinde otomatik kutulama için ceza uygulanmasına gerek kalmadan izlenmesine izin verildi. Bunları kullanmak için yeni fabrika yöntemleri olanmutableIntState(Int)
,mutableFloatStateOf(Float)
vb. kullanın. (I48e43)
Hata Düzeltmeleri
Beste silme 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 işlev, bağımlılık her değiştiğinde türetilmiş durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, anlık görüntü ilerlemesine kaydedilir. Bu durum, türetilmiş durum okunduktan sonra (Snapshot.notifyObjectsInitialized()
işlevine yapılan çağrı nedeniyle) gerçekleşebilir.SnapshotStateObserver
için önceki türetilmiş 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ş bir durumda geçersiz kılınmasına neden olan bir yarış koşuluna neden olmuştur.Bu değişiklik, türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralayarak geçersiz kılma işleminin her zaman geçerli bir durumda 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 tüm bileşim yerine yalnızca
withFrameNanos
çağrılarını engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin, veri değişiklikleri için yeniden oluşturulmaya devam edeceği, ancak animasyonların veyawithFrameNanos
öğesini çağıran diğer kişilerin engelleneceği anlamına gelir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 5c1a425
- Efektleri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını çalıştırın 3784073 - Yeniden başlatılan lambda'ların değiştirilen işaretlerini düzeltin ea81df9
- 73fd4d8 düğümleriyle Composable için canlı düzenleme regresyonu düzeltildi
- ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
- Değiştirilmemiş türetilmiş 84d9b1c durumları için
SnapshotStateObserver
kapsamı geçersiz kılın - Besteleri atarken olası kilitlenmeyi düzeltme 28761fc
- Bir 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 oluşturulabilir (f174f6e)
Hata Düzeltmeleri, Performans İyileştirmeleri
- Erişilemez durum kayıtları içeren durum nesnesi kayıtlarının üzerine yaz (c986960)
- Grupları gerçekleştirilirken doğru kapsamın oluşturucusunu kullanma (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ılma işlemlerini depolamak için
IdentityArraySet
öğesini kullanın (7f60cca) SlotTable.moveSlotGapTo()
içindekifill
öğ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 anında geçersiz kılma işlemlerini düzeltme (8676618)
- Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
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
özelliğini 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 yapılırsa
SnapshotStateList
veyaSnapshotStateMap
öğesine içerik eklemek kilitlenmeyle karşılaşabilir. Bu durum, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma özelliğini kullanan 93fcae828b tarafından ortaya çıkan değişikliklerle karşılaşma olasılığını önemli ölçüde artırmıştır.Artık kilitler, bir harita veya liste kilidi basılı tutulduğunda hiçbir zaman anlık görüntü kilidi alınmaya çalışılmayacak şekilde sıralanıyor.
Sürüm 1.4.1
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.1
yayınlandı. Sürüm 1.4.1 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 sürümünden sonraki önemli değişiklikler
- İlk beste 3680e25 için
LiveData
alanında başlatılmış değeri kullanın - Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallback
ekleyin. 8b6a258 ComposableMethod
7b6c7ad öğesineparameterTypes
mülkü ekleyin
Hata Düzeltmeleri ve Performans İyileştirmeleri
SnapshotStateObserver
29f4a3e içindeki her iki kapsam dizinini de temizleyin- Atlanamayan lambda'ların gövdesine gerekli grupları ekleyin 7d06752
- 93fcae8 anlık görüntüsünün bellek referans özelliklerini iyileştirin
- Beste yerel aramalarında boks kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın 6388d8d
SnapshotStateObserver
alanını yinelemeli ve eşzamanlı geçerli olana karşı koruyun 98cb6baIdentityArraySet
"get" yöntemine 35a77d3 bir kontrol dizini sınırı eklendi- Oluşturma modülünü
ViewTreeLifecycleOwner
21c2122 uzantılarını kullanacak şekilde güncelleyin - Yeniden Oluşturucu kareyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
- Yeniden Oluşturucu 8f8656f iptal edilirken sınırların dışındaki kilitlenmeyi düzeltin
- Bestenin üst sağlayıcıları 9526fcc değiştiyse yeniden oluşturmayı her zaman 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ştirin 9b7ed67
- Yerel olmayan getiriler için kapanış grubu 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ı. Sürüm 1.4.0-rc01 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ı. Sürüm 1.4.0-beta02 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ı. Sürüm 1.4.0-beta01 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şlev yalnızca testte güvenli bir şekilde çağrılabileceği için
@TestOnly
,Composer.disableSourceInformation()
işlevine eklendi. (I896c8)
Hata Düzeltmeleri
- Beste yerel 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ş kullanılabilirliği (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 yinelenen ve eşzamanlı uygulamalara karşı koruyun (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ıktoList()
vetoMap()
öğelerini saygılı bir şekilde açık bir şekilde uyguluyor. Bu yöntemler, içeriklerini depolamak için kullanılan dahili sabit verileri döndürdüğünden, bir kopya oluşturmadan mevcut içeriklerini döndürür. Bu değer örneğin, verilerin kopyalanmasını gerektirmedensnapshotFlow
kullanarak bir değer akışı oluşturmak için kullanılabilir. (Ica2bd)
Sürüm 1.3
Sürüm 1.3.3
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.3.3
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ü desteklemek için 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 sürümünden sonraki önemli değişiklikler
İstisna İşleme / Canlı Düzenleme Desteği
- Canlı düzenlemeyi daha iyi desteklemek için oluşturma sırasında istisnaların işlenmesini sağlamak üzere API'ler eklendi
- sıcak yeniden yükleme için beste hatası işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını ele alma
Beste İzleme
- Çalışma zamanı izleme API'leri, yeni bileşim izleme araçlarını desteklemek için eklendi
- Oluşturulabilir izleme etkinliği başlangıç/bitiş çağrıları oluşturma
- Yeniden Eklenen ComposerKt.traceEventStart(Int, String)
Composable Reffaction API'leri
- Oluşturulabilir API'lerin daha güvenilir şekilde yansıma tabanlı çağrılarına olanak tanımak için yeni bir
ComposableMethod
API eklendi. - callComposable öğesini oluşturma çalışma zamanına taşıma
- Oluşturulabilir yöntemi çağırmak için Rework API'si
Çalışma Zamanı Düzeltmeleri
- İşaretçiler için slot tablosu kontrolüyle ilgili hatalı aralık testini 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şımayı 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 alanlarda iyileştirmeler yaptı.
- SnapshotStateObserver'da kapsam kaldırma işlemini optimize edin
- Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri at
- Genel anlık görüntüden durum okunurken yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState'i destekleme
- Diğer kapsamlarda okunduğunda türetilmiş durumun besteden kaldırılmasını engelle
- DerivedState içinde HashMap yerine IdentityArrayMap'i kullanın
- Türetilmiş durum gözlemcilerini değişken vektör kullanmak için güncelleme
- SnapshotStateObserver durum temizleme işlemini güncelleme
- SnapshotStateObserver.invalidated değerini ArraySet ile değiştirin
- 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
- Global anlık görüntüyü ilerletirken yarış durumunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerini temizleme
Sürüm 1.3.0-rc01
5 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
yayınlandı. Sürüm 1.3.0-rc01 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şim
remember
verememberCoroutineScope
parametreleri,crossinline
olarak değiştirildi. Bu, erken dönüşe izin vermek yerine erken iadeler için bir hata bildirir. Bu da daha sonra dahili bir hatanın raporlanmasına neden olur.- Bu değişiklik, yerel olmayan getirilerin bu işlevlere geçirilen lambdalardan 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 beste alt grubunu kendi kimliğini kullanarak hızlı bir şekilde bulabilmesini sağlamak için
CompositionData
özelliğine 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 kaydetmeleri içerir.
Sürüm 1.3.0-alpha02
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
yayınlandı. 1.3.0-alpha02 sürümü 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şlevini ç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ı. Sürüm 1.2.1 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ırın 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 bu yana yapılan önemli değişiklikler
Compose Çalışma Zamanı, 1.2.0 sürümünde sunulan birçok özelliğin yanı sıra sabitleme amaçlı birçok hata düzeltmesine de sahipti. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimini etkinleştirmek için kullanılabilecek
movableContentOf
API'nin kullanıma sunulmasıydı.movableContentOf
API, özelleştirilebilir bir lambdayı, durumunu ve ilgili düğümleri adı verilen yeni konumlara taşıyan bir lambdaya dönüştürür. Önceki çağrı besteden çı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 arama eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.Bir
movableContentOf
lambdası aynı bestede 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ılıp yeni çağrılar girdikçe durum, ilk ayrılan çağrılardan gelen çağrılara çağrılma sırasına göre taşınır. Yeni çağrılar tarafından hak talebinde bulunulmayan tüm eyaletler kalıcı olarak kaldırılır.Buna ve diğer birkaç yeni özelliğe ek olarak, çalışma zamanı ve Anlık görüntü durum sistemini kararlı hale getirmek için uzun zaman harcandı. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özetini aşağıda bulabilirsiniz:
1.2
Uygulamasındaki Yeni Özellikler
- Deneysel anlık görüntü güvenli olmayanGiriş/Ayrılma
- Snapshot.asContextElement deneysel API ekleme
- Snapshot.WithReadObservation olmadan Snapshot'ı tanıtma
- Eyaletin bir beste içinde hareket etmesine izin verme
- Compose'da Yeniden Derlemeleri İzleme
1.2
bölgesindeki performans
- Bileşim yerel performansını iyileştirme
- Oluşturma işlemi için referans profiller, karşılaştırmalar kullanılarak türetilmelidir
1.2
Ürününde Hata Düzeltmeleri
- Sürüm yeniden oluşturma kapsamlarından izleme bilgilerini kaldırma
- Diğer kapsamlarda okunduğunda türetilmiş durumun besteden kaldırılmasını engelle
- SnapshotStateObserver'da daha verimli removeScope() kullanma
- Bileşimdeki türetilmiş durum bağımlılıklarını temizleme
- Taşınabilir içeriğin içindeki dahili yeniden besteden 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
- Tutarlı olmak için movableContent birleşik karma anahtarı düzeltildi
- Oluşturucunun kilitlendiği köşe sorununu düzeltme
- Bir grubun yeniden oluşturulmasını zorunlu kılmanın zorunlu olarak geçersiz kılınmasını sağlama
- Hatırlanabilirlik, girişle birlikte yanlış sırada geri yüklendiğinde hatayı düzeltme
Sürüm 1.2.0-rc03
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
yayınlandı. Sürüm 1.2.0-rc03 bu kayıtları içerir.
Hata Düzeltmeleri
- Türetilen durum gözlemleri, daha önce koşulsuz olarak yeniden oluşturulan kapsam ve bileşimden birlikte koşulsuz olarak 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 kapsamlar tarafından gözlemlenmiyorsa türetilmiş durum örneklerini kaldırır. (b/236618362)
Sürüm 1.2.0-rc02
22 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02
yayınlandı. Sürüm 1.2.0-rc02 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ı. Sürüm 1.2.0-rc01 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şturulmuştur
Sürüm 1.2.0-beta03
1 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
yayınlandı. Sürüm 1.2.0-beta03 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ı. Sürüm 1.2.0-beta02 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ı. Sürüm 1.2.0-beta01 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 hedef ek açıklama kullanmak, derleyicinin dosyadaki tüm oluşturulabilir 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 Oluştur kullanıcı arayüzü uygulayıcısını hedeflediği bildirilir. Başka bir uygulayıcıyı hedeflemesi gereken bir fonksiyon, istenen uygulama 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
sitesini Composer'a ekle (I0c873)- İzleme API'leri (Composer.setTracer)
OptIn(InternalComposeTracingApi)
ile kısıtlandı. (I9187f) - Yeniden kullanılabilir içeriklerin oluşturulduğu durumun ömrü üzerinde daha iyi kontrol sağlayan
ResuableContentHost
eklendi. Örneğin, bir alt beste geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, bestedeki tüm hatırlanan durum unutulabilir (örneğin, tek kullanımlık tüm efektler). (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ğerlerindeki 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 özelliklerinden yararlanmak, ancak gereksiz yeniden oluşturma veya yeniden ölçüme neden olmadan değeri okuyabilmek istediğiniz kullanım durumlarında faydalı olabilir. (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 kaydetmeleri 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ş yordamları 1.6.0 (I3366d) kullanılacak ş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
Oluşturulabilir bir işlevin, kullanmak üzere tasarlanmamış bir uygulamayı hedefleme olarak adlandırıldığı durumların derleme zamanı raporlamasını sağlayan
ComposableTarget
,ComposableTargetMarker
veComposableOpenTarget
eklendi.Çoğu durumda, ek açıklamalar yazma derleyici eklentisi tarafından anlaşılabilir. Dolayısıyla, bu ek açıklamaların doğrudan kullanılması nadirdir . Tahmin edilemeyen durumlar arasında özel bir uygulama aracı, soyut birleştirilebilir işlevler (arayüz yöntemleri gibi), oluşturulabilir lambda olan alanlar veya genel değişkenler (yerel değişkenler ve parametreler tahmin edilir) oluşturup kullanma veya
ComposeNode
ya da ilgili bir oluşturma işlevi kullanılır.Özel uygulayıcılar için
ComposeNode
veyaReusableComposeNode
çağıran oluşturulabilir işlevlerin, işlev ve oluşturulabilir 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 ek açıklama, uygulama parametresi olarak özellik sınıfının tam nitelikli adına sahipComposbleTarget
ile 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 lambda'yı, durumunu hareket ettiren bir lambdaya ve karşılık gelen düğümleri, adı verilen yeni bir konuma dönüştüren
movableContentOf
eklendi. Önceki çağrı besteden çı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 çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.Bir
movableContentOf
lambdası 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 çıkıp yeni çağrılar girdikçe durum, ilk ayrılan çağrılardan gelen çağrılara çağrıldıkları sırayla 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, birleştirilebilir işlevlerin daha ayrıntılı izlemesini sağlamak için besteye bir izleme API'si eklendi. Derleyici artık kaynak bilgilerini içeren tracing API'ye ç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çlara, yeniden kompozisyonlar sırasında bir kompozisyonu tanımlama olanağı veren
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 kaydetmeleri 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
- Düzen Denetleyici'de sabit kimlikler oluşturmak için
identity
alanıCompositionData
öğesine eklendi. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10
uygulamasına bağlı.
Sürüm 1.1
Sürüm 1.1.1
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.1
yayınlandı. Sürüm 1.1.1 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 olduğu kilitlenmeyi düzeltin. (I06020, b/197769306)
LazyVerticalGrid
cinsinden sabit RTL (aosp/1931080, b/207510535)
Sürüm 1.1.0
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0
yayınlandı. Sürüm 1.1.0 bu kayıtları içerir.
1.0.0 sürümünden sonraki önemli değişiklikler
- Android 12 Fazla kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmayla ilgili iyileştirmeler
- Compose 1.0'da, Materyal bileşenlerinin düzen alanlarını, dokunma hedefi boyutu için Materyal erişilebilirlik kurallarına uyacak ş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, Materyal Oluşturma Materyalini, Materyal Tasarım Bileşenleri ile aynı davranışla uyumlu hale getirerek Görünümler ve Oluşturma'yı 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
- Önceden deneysel API'lerden bazılarını 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ı. Sürüm 1.1.0-rc03 bu kayıtları içerir.
Hata Düzeltmeleri
- Materyal Oluşturma özelliğini (
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ı. Sürüm 1.1.0-rc01 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ünmüş, ancak bunların tümü hâlâ aynı JVM sınıfında bulunmaktadır. (Ic6c98)
Sürüm 1.1.0-beta01
27 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
yayınlandı. Sürüm 1.1.0-beta01 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ı. Sürüm 1.1.0-alpha06 bu kayıtları içerir.
API Değişiklikleri
- Modüller arası olarak adlandı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 kaydetmeleri 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ümdeki veya sonraki sürümlerin Compose Runtime ile uyumluydu. Bu değişiklikten sonra Compose Derleyici, Compose Çalışma Zamanının (1.0) daha eski bir sürümüyle uyumlu hale geldi. (aosp/1796968)
- Oluşturma
1.1.0-alpha03
öğesi, Kotlin1.5.30
sürümünü 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 kaydetmeleri 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üretStateOf örneklerinin kilitlenmesini izlemeyle ilgili 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
modeline bağlı olacak şekilde 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
modeline bağlı olacak şekilde 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ü destekleyecek şekilde 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
sürümüne bağlı olacak şekilde 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'e yükseltin. Bu sorun, Android Studio Bumblebee ve7.1
AGP'nin yeni 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'daki 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
kilitlenmesine 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ı. Sürüm 1.0.0-rc01 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.
Profil Kuralları Eklendi
Bu sürüm, aşağıdaki oluşturma modüllerine profil kuralları ekler (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.çalışma zamanı
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Profil kuralları nedir?
Bir kitaplığın profil kuralları,
src/main
veya eşdeğer dizinde bulunanbaseline-prof.txt
metin dosyasında belirtilir. Dosya, her satır için bir kural belirtir. Buradaki kural, kitaplıktaki yöntemler veya sınıflarla eşleştirme için bir kalıptır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...
kullanılırken kullanılan, kullanıcılar tarafından okunabilen ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini kullanır.Bir yöntem kuralının kalıbı aşağıdaki gibi olur:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Sınıf kuralının kalıbı aşağıdaki gibidir:
<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ı gösterilmektedir.<CLASS_DESCRIPTOR>
, hedeflenen yöntemin ait olduğu sınıfı tanımlar. Örneğin,androidx.compose.runtime.SlotTable
sınıfının tanımlayıcısıLandroidx/compose/runtime/SlotTable;
olur.<METHOD_SIGNATURE>
, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve döndürme 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ı için bu kalıplarda joker karakterler (
**
,*
ve?
) bulunabilir.
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, başlangıçta çağrılan bir yöntem olduğunu ve derleme ile yöntemin başlangıç zamanında yorumlanmasını önlemek için önceden derlenmesi gerektiğini belirtir.P
işaretine sahip bir yöntem, bunun başlangıçtan sonra çağrılan bir yöntem olduğunu gösterir.Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetinden kaçınmak için yığında önceden ayrılması gerektiğini belirtir.
Nasıl çalışır?
- Kitaplıklar, AAR yapılarına 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 ART profili oluşturmak için kullanılır. Böylece ART, uygulamanın performansını iyileştirmek amacıyla belirli bir alt kümeyi önceden derlemek için uygulama cihazlara yüklendiğinde bu profilden yararlanabilir. Bu işlem, özellikle ilk çalıştırmada uygulamanın performansını iyileştirir. Bu işlemin, hata ayıklaması yapılabilecek 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şikliklerin tek bir kartta yeniden düzenlenmesini 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 yazma 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, içerik için slot tablosundaki önceki değerler, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler dışında yoksayılır.ComposeNode
için yapılan gibi, değiştirmek yerine yayınlanan düğümü yeniden kullanacakReusableComposeNode
özelliğini sunar. (I1dd86)@ComposeCompilerApi
artık@RequiresOptIn
değil (Iab690)
Hata Düzeltmeleri
- LazyColumn/Satırı artık daha önce aşağı kaydırılmış olsalar bile önceden görünür olan en fazla 2 öğeyi etkin (atanmamış) tutacak. Bu, kaydırma performansını artıran yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt kompozisyonları yeniden kullanmasına olanak tanır. (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 yazma işlemlerini kaydetmek için
@InternalComposeApi
kaldırıldı (Id134d)
Hata Düzeltmeleri
- ui-test-manifest veui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumludur (I6f9de, b/184718994)
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 oluşturulabilir işlevler, parametrelerine göre atlanabilirdi. Bu değişiklikten sonra hiçbir yerel oluşturulabilecek işlev atlanmayacak. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri yakalaması yaygın ve beklenen bir işlem olduğundan ve bunların atlanması sık görülen bir hata kaynağı olduğundan 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
oluşturulabilir işlevicount
parametresi güncellendikten sonra bile her zaman atlanırdı. Bu durum artık geçerli değil. (I5648a)Giriş parametreleri (I1b110, b/182403380) ile kullanıldığında
rememberSaveable()
ürününün 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
çağrılırsa artıkIllegalStateException
politikası geçerli. (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) }
sorunu için düzeltme uygulandı. (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 bileşimleri ana çerçeve döngüsünden yeniden derlemek için
Recomposer.runRecomposeConcurrentlyAndApplyChanges
deneysel API ekleyin. (I342d0) - @ReadOnlyComposable ile işaretlenen tüm composable dosyalar artık yalnızca diğer @ReadOnlyComposables (I58961) öğelerine çağrı yaptığından emin olmak amacıyla derleme zamanı doğrulanıyor.
compositionLocalOf
vestaticCompositionLocalOf
içindefaultFactory
artık isteğe bağlı yerine zorunludur.Bu değişiklik, varsayılan fabrikanın sağlanmadığı, boş bırakılamayan türler için olası bir tür hatasını ortadan kaldırır. Daha önce bu, null yapılamayan bir tür için boş referans sağlıyordu.
Boş değer içeren türler için varsayılan fabrika ayarı olarak
{ null }
değerini sağlayabilirsiniz.Makul bir varsayılan sağlanmadığı sürece, null yapılamayan türlere sahip yerellerin kullanılması önerilmez. Mantıklı bir varsayılan yoksa
defaultFactory
lambda bir istisna atmalıdır. Bununla birlikte, istisna yapılması, yerel tüketicilerin tür sistemi tarafından zorunlu kılınmayan, sunulan dolaylı bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)Kullanımdan kaldırılan simgeler, yazma ç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 etmiyor ve kullanımdan kaldırıldı.
- currentCompositeKeyHash, derlenebilir bir üst düzey işlev yerine birleştirilebilir üst düzey mülke dönüştürüldü.
- CompositionData ve CompositionGroup androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, beton sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
- ComposableLambdaN, beton sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
- Snapshot işlevi, androidx.compose.runtime ad alanına taşındı
- SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değil.
- @TestOnly üst düzey clearRoots işlevi kaldırıldı. Artık gerekli değildir.
- keySourceInfoOf ve sıfırlaSourceInfo işlevleri kaldırıldı. Bunlar artık gerekli değildir.
- Composer.collectKeySourceInformation kaldırıldı. Artık gerekli değildir.
- isjoinedKey, katılmışKeyLeft vejoinKeyRight yöntemleri kaldırıldı. Bunlar 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 program uyumluluğunu bozar ancak kaynak uyumluluğunu bozar. Bu nedenle çoğu kullanıcı için bir sorun olmamalıdır.
- (I99b7d, b/177245490)
SnapshotStateObserver artık Deneysel değil (Id2e6a)
Daha önce desteği sonlandırılmış API'lerden bazıları 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 gerekli parametreler için API yönergelerine uygun olacak şekilde yeniden sıralandı.
- BottomNavigasyonItem öğesindeki
icon
parametresi,selected
veonClick
satırlarından sonra olacak şekilde taşındı. - BottomNavigasyonItem öğesindeki
alwaysShowLabels
parametresialwaysShowLabel
olarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContent
parametreleri yalnızcacontent
olarak yeniden adlandırıldı. - Parametreler
ButtonDefaults.buttonColors()
içinde yeniden sıralandı. Parametrelerin türü değişmediği için 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. secondaryVariant
parametresidarkColors()
parametresine eklendi. Bu renk, koyu temada genelliklesecondary
ile aynıdır, ancak tutarlılık ve daha fazla özelleştirme için eklenmiştir.- Yaygın olarak kullanılmadıkları / yararlı olmadıkları için ElevationDefaults veactivateElevation() herkese açık API yüzeyinden kaldırıldı.
Slider
içindekionValueChangeEnd
öğesi,onValueChangeFinished
olarak yeniden adlandırıldı ve boş değer atanabilir.- 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
parametresinecontentPadding
parametresi eklendi vecontent
,RowScope
üzerinde uzantı haline getirildi. ModalDrawerLayout
adlı dosyaModalDrawer
olarak yeniden adlandırıldı.BottomDrawerLayout
adlı dosyaBottomDrawer
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 için destek, UiApplier'dan kaldırıldı. Desteği sonlandırılan emitView composable öğeleri 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önergelerine daha uygun olacak şekilde güncellendi. (Id9e32)
- Ambiyans -> CompositionLocal yeniden adlandırmasıyla eşleşecek şekilde Ambiyanslar yeniden adlandırıldı. Ambiyanslar eskiden AmbientFoo olarak adlandırılırken artık CompositionLocals adı LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient adı sırasıyla CompositionLocal CompositionLocal ve ambientOf / staticAmbientOf adıyla, positionLocalOf / staticCompositionLocalOf olarak değiştirildi. Bu değişiklik, CompositionLocal amacının daha net hale getirilmesine yardımcı olur: besteye yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinde
Local
öneki kullanılmalıdır. Örneğin, val LocalFoo = positionLocalOf { Foo() }. (Ia55b6) - TakeMutableSnapshot ve TakeSnapshot, Snapshot’ın tamamlayıcı yöntemleri olmaya başlamıştır. (91f19)
@ComposableContract
desteği sonlandırıldı ve yerine üç ek ek açıklama eklendi.@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 (I6a45f) değilYeniden düzenleyenler artık kapatılabilir. Kapalı yeniden düzenleyenler, beste alt eş yordamları tamamlanana kadar yeniden oluşturma işlemine devam eder. Recomposer.shutDown, kapatmayla zıtlık oluşturmak için iptal edilecek şekilde yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatch
yapısı kullanımdan kaldırıldı. MonotonicFrameClock artık sadeceCompose:runtime'da, AndroidUiDispatcher ise write:ui'de bulunabilir. (Ib5c36)Compose derleyici eklentisinin hedeflediği API, somut bir sınıf yerine arayüz kullanacak şekilde yeniden düzenlendi. Arayüzde artık bir tür parametre de kullanılmamaktadır.
Bu, kaynak kodu uyumluluğunu etkilememesi gereken dahili bir değişikliktir ancak ikili programlarda sorun yaratan 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 olarak ayarlanmıştır. Ana makine Yaşam Döngüsü durdurulurken yeniden oluşturma veFrameNanos tabanlı animasyon kareleri duraklatılır. (I38e11)
Recomposer.runningRecomposers artık süreçte devam eden bileşim durumunu gözlemlemek için küresel bir salt okunur RecomposerInfo StateFlow'u sunuyor. Bu API'yi, kullanımdan kaldırılan Recomposer.current() için 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; kullanımdan kaldırılarak, SideEffect ve DisposableEffect API'lerinin (If760e) yerini aldı.
- emit() API ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler birbirinin aynısı, yalnızca Compose'un adlandırma kurallarına uymak için farklı bir ad kullanıyorlar (I4137b)
- inexpiration ve beste (I583a8)
Hatırlatıcı, CompositionLifecycleObserver'ın yerini almıştır ve CompositionLifecycleObserver kullanımdan kaldırılmıştır.
RememberObserver
,CompositionLifecycleObserver
ifadesinin yerine değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemler kullanır. Önerilen uygulama olan ve olmaya devam eden ve yalnızca bir kez hatırlanan nesneler için yeni API'ye geçiş mekanik olarak yapılabilir. Bununla birlikte, bir bestede bir referans birden çok kez hatırlanırsaonEnter
yalnızca bir kez çağrılan her referans içinonRemembered
ç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 getirdi veRememberObserver
için kaldırıldı.RememberObserver
,RememberObserver
örneğininremember
'a iletilen geri çağırmadan döndürülmesi durumunda çağrılanonAbandoned
özelliğini ekler. Ancak bu işlem 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 olmaması ya da başka bir şekilde gerekli olmaması nedeniyle bestenin silinmesi durumunda gerçekleşebilir. Yukarıdaki tek referans önerisini uygulayanRememberObserver
örneği, hemonForgotten
hem deonAbandoned
harici bir kaynağı izliyorsa her biri artık kaynağa ihtiyaç olmadığını gösterir. Nesne,onRemembered
içinde ayrılan işleri veya kaynakları izliyorsaonRemembered
çağrıldığında çağrılmayacağındanonAbandoned
yoksayılabilir. (I02c36)collectAsState()
işlevlerini satır içi olarak işaretleme (Ia73e4)
Hata Düzeltmeleri
- WithConstraints, BoxWithConstraints olarak yeniden tasarlanıp foundation.layout'a taşındı. (I9420b, b/173387208)
- Testlerde TestCoroutineDispatcher'dan yararlanın (I532b6)
Sürüm 1.0.0-alpha10
13 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
yayınlandı. Sürüm 1.0.0-alpha10 bu kaydetmeleri içerir.
Çarpıcı Değişim
Dahili derleyici API'sinin yeniden yapılandırılması, tüm
@Composable
işlevleri tamamlandıktan sonra, bileşimin bir sonucu olarak oluşturulan düğümlerde değişikliklerin, bileşimin "değişiklikleri uygula" aşamasında toplu olarak yapılmasını sağlar.Bu, değişiklikler uygulanana kadar dahili ve deneysel API'lerde artık düğüm bulunmadığı için uygulama kodunu etkileyebilecek, davranışsal zarar veren bir değişikliktir. Bu sorun, genellikle düğümler oluşturulup başlatılana kadar kodun yürütülmesini ertelemek için bir
SideEffect
içinde bu tür bağımlılıklarla kod yuvarlanarak çözülebilir. (I018da)
API Değişiklikleri
- Yeniden oluşturucunun değişiklikleri uygulayıp uygulamadığını izlemek için bir yol eklendi. (I1b3e2)
[Abstract]ComposeView API'lerini genişleterek [Abstract]Compose tabanlı görünümlerin geri dönüşümünü sağlayarak bu görünümlerin daha sonra tekrar oluşturmak üzere imha edilmesini sağlayın. Alt besteler oluşturmak için pencere kapsamlı Recomposer ve CompositionReferences öğelerini yüklemek ve keşfetmek amacıyla API'ler ekleyin.
[Abstract]ComposeViews'un beste yok etme stratejisini yapılandırmak için ViewCompositionStrategy ekleyin. Varsayılan davranış pencere ayırmaya göre ortadan kaldırılmaktır. (I860ab)
Hata Düzeltmeleri
- Yeniden birleştirici artık mevcut durumunun bir Akışını sunarak etkinliğinin ve ilişkili efektlerin etkinliğinin izlenmesine olanak tanıyor. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent üzerinden erişilebilir (I87c57, b/173086397)
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.
API Değişiklikleri
Genel API'den SlotTable, SlotReader ve SlotWriter kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretliydi. Artık oluşturma modülünün dahilinde bulunuyorlar.
CompositionData ve CompositionGroup, kompozisyon bilgilerini ayıklamak için kullanmak üzere arayüz araçları API'sinin yerine eklenmiştir. Bunlar herkese açık olsa da kullanıcı arayüzü API'sinin yorumladığı ham bilgileri sağladığı için (I31a9c) kullanıcı arayüzü API'si dışında kullanılmak üzere tasarlanmamıştır
Uygulamacı sınıfı artık (Id85b0) olarak kabul edilmemektedir
Applier
arayüzü, ağaç oluşturma işlemini yukarıdan aşağı değil, aşağıdan yukarıya doğru kolaylaştıracak şekilde değiştirildi.insert()
yöntemi,insertTopDown()
olarak yeniden adlandırıldı.Yeni bir yöntem (
insertBottomUp()
) eklendi.Bir uygulama, hangisinin daha iyi performans gösterdiğine bağlı olarak düğümleri,
insertTopDown()
veyainsertBottomUp()
kullanarak düzenlediği ağaca ekler.LayoutNode
veView
gibi bazı ağaçlar, yukarıdan aşağıya doğru inşa etmekten çok daha verimlidir. Bu değişiklikten önce, performans için aşağıdan yukarıya yapı gerektiren her uygulama kullanıcısına kopyalanması gereken, aşağıdan yukarıya doğru bir dizi ekleme yapılması gerekiyordu. Bu değişiklikle birlikteApplier
, ağacı aşağıdan yukarıya doğru oluşturmak içininsertBottomUp()
öğesini, yukarıdan aşağıya doğru derlemek için deinsertTopDown()
politikasını geçersiz kılar. (Icbdc2)Compose, oluşturulabilir ç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ılan söz dizimi, özelliğin kendisine ek açıklama ekliyordu:
@Composable val someProperty: Int get() = ...
Bunu yapmak için şu anda en doğru olan söz dizimi, özelliğin alıcısına ek açıklama eklemektir:
val someProperty: Int @Composable get() = ...
Her iki söz dizimi de bir süre çalışmaya devam eder, ancak kullanımdan kaldırılan eski söz dizimi nihayetinde derleme hatasına dönüşür. (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 birleştirilebilir lambda parametresi adlandırma ve konumu için hata analizi denetimi eklendi.
Ayrıca, hata analizi ve yönlendirmelere göre sondaki lambdalarının adı olarak
children
kullanan bazı API'lericontent
'e taşıdı. (Iec48e) - Yeniden düzenleyen artık EmbeddingContext kabul etmez; 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ılan Ambiyanslar, son eki
Ambient
olarak adlandırdı ve diğer Ambiyans ve Compose API kurallarına uyarak bunların ön ekini Ambient içeren yeni özelliklerle değiştirdi. (I33440) - Eski kullanıcı arayüzü testi modülünü ve taslaklarını (I3a7cb) kaldırın
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 sağlamak için alternatif olarak allowDefault eklendi ve yalnızca önceden bir ortam değeri sağlanmadığında ayarlanacak ortam 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 için "Subject" parametresi içermeyen LaunchedEfektine izin verilmez. (Ifd3d4)
- Uygulamada artık, bir Composer ağacın değişiklikleri uygulamaya başladığında/tamamlandığında çağrılan onbeginChanges/onEndChanges geri çağırmalarına sahiptir. Bunlar, gerekirse kaynak yönetimini toplu olarak işlemek için kullanılabilir. (Icf476)
- Yeniden derleme için artık yapım sırasında bir CoroutineContext gerekiyor (Ic4610)
- Dahili SlotTable uygulamasında 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 kullanımdan kaldırıldı ve Matter.Text ile değiştirildi. Bir 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üzenleyle ilgili birçok simge 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
- Yeniden oluşturucu artık bir CompositionReference ve geçerli bir beste üst öğesidir. Açık Yeniden Oluşturucu artık daha az yerde gerekli. (I4036f)
- SideEffect'e DisposableEffect eşdeğer API'si eklendi. Böylece onCommit-with-params rolü zorunlu bir onDispose ile doldurulur.
- Yeniden oluşturma aşamasından DisposableEffects veya LaunchedTasks gibi devam eden ya da uzun ömürlü işlemlere kadar veri yayınlamak için remindersUpdatedState API eklendi.
- (Id50b9)
- MutableVector artık RandomAccess'i uyguluyor (I85d73, b/170461551)
- Bestenin yan efektlerini bestenin yönettiği nesnelere uygulamak için SideEffect kompozisyonu eklendi. SideEffect, onCommit composit özelliğinin yerini alacaktır. (Ia77c2)
- Yeni deneysel API RestorableStateHolder. Alt ağacın [savedInstanceState] ve [remembersaveInstanceState] komutuyla tanımlanan durumun kaydedilmesine olanak tanır. Böylece alt ağaç, sonraki sefer geri yüklenen durumla yeniden oluşturulabilmesi için atılır. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştirin; ComposeTestRule'da yanıp sönen imleci etkinleştirme seçeneğini 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)
- Her kaydırmada alt kompozisyonda daha az çalışma yapılarak LazyColumn/Row'un kaydırma performansı iyileştirildi. Beste sınıfı için yeni hasGeçersizations() 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'yi ekleyin (Id4a57) - LaunchInComposition, Compose API yönergelerine uygun olacak şekilde LaunchedTask olarak yeniden adlandırıldı (I99a8e)
- Özel Layouts'taki 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ı. 1.0.0-alpha04 sürümü bu kayıtları içerir.
API Değişiklikleri
- Artık geçerli olmadığında düzenin toplanmasına ve gözlem kapsamlarının oluşturulmasına izin vermek için OwnerScope eklendi. (Ic4cf8)
- Diğer Durum nesnelerini (If758b) okuyabilen (ve türetebilen) bir hesaplamaya dayalı Durum nesneleri oluşturmak için türvedStateOf API'si eklendi
- SnapshotStateObserver için TestOnly API'si eklendi (I6e2a9)
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ı. Sürüm 1.0.0-alpha03 bu kayıtları içerir.
API Değişiklikleri
CompositionCoroutineScope
artıkMonotonicFrameClock
uygulamasını kullanmıyor.withFrameNanos
çağrılarının üst düzey işlevi açık bir şekilde içe aktarması gerekir. (Icb642, b/166778123)
Hata Düzeltmeleri
onNode
veyawaitForIdle
gibi küresel test işlevleri kullanımdan kaldırıldı. LütfenComposeTestRule'da (I7f45a) tanımlanan yeni eşdeğerlerine geçiş yapın.launchInComposition
, gönderilmemiş eş yordamlarını artık 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 kullanmak ve oluşturmak için
snapshotFlow
vewithMutableSnapshot
API'leri ekleyin. (I3e722) Birleştirilebilir işlevler için çağrı kuralı değişti. Bu, ikili programlarda sorun yaratan bir değişikliktir. 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 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şlangıcı yerine 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ı. Sürüm 1.0.0-alpha01 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ı. Sürüm 0.1.0-dev17 bu kayıtları içerir.
API Değişiklikleri
- Özel emisyonlar, artık ayarlayıcılarından bir veya daha fazlasının atlanıp yayılmadan bağımsız olarak yeniden oluşturulabileceğini bildirebiliyor. (Ibbd13)
Kullanımdan kaldırılan FrameManager çağrıları kaldırıldı.
Dahili yazma API'leri,
mutableStateof()
(I80ba6) gibi durum nesnelerini izlemek için genel gider miktarını azaltmak amacıyla değiştirildistate { ... }
derlemesi artık kullanımdan kaldırıldı. Bunun yerine, açıklık sağlamak amacıylaremember { mutableStateOf(...) }
öğesine yapılan açık çağrılar devre dışı bırakıldı. Bu, genel API yüzeyini ve durum yönetimiyle ilgili kavramların sayısını azaltır ve sınıf özelliği yetkilendirmesi içinby mutableStateOf()
kalıbıyla eşleşir. (Ia5727)Flow.collectAsState artık varsayılan görev dağıtıcıyı Dispatchers.Main'e ayarlamak yerine bestenin kendisinden belirliyor. (I9c1d9)
For döngüsü içinde durumu kaydeden bir öğe kullanıldığında kilitlenme. SaveInstanceState() dosyasında artık aynı anahtara izin veriliyor. UiSaveStateRegistry 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üm yayınlamak için mümkünse bunun yerineAndroidView
kullanın. Görünümler ve Görünüm Grupları oluşturma işlemlerinin, bunlar AndroidView kullanılarak bileşim ağacında bırakılmadığı sürece gelecekte desteklenmeyeceğini unutmayın. (I29b1e, b/163871221)
Sürüm 0.1.0-dev16
5 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
yayınlandı. Sürüm 0.1.0-dev16 bu kayıtları içerir.
API Değişiklikleri
Varsayılan mutasyon politikası
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
,referentialEqualityPolicy()
yerinestructuralEqualityPolicy()
olarak değiştirildi.Bir
mutableStateOf()
örneğine atanan yeni bir değerin değişiklik olarak kabul edilip edilmeyeceğini belirleyen varsayılan değer, artık===
yerine==
kullanılır.https://kotlinlang.org/docs/reference/equality.html adresini ziyaret edin
ambientOf()
vesavedInstanceStateOf()
, uygulamalarındamutableStateOf()
kullandığından,mutableStateOf()
ile tutarlı olacak şekilde değiştirildi.Yapısal eşitliğin kullanılması, geliştiricilerin beklentilerine daha iyi uyum sağlıyor.
Örneğin,
val state = mutableStateOf(1f)
ardından şu şekilde devam edin:
state.value = 1f
artık
state
için bir değişiklik olarak kabul edilmez ve beste sırasındastate
kullanımının artık yeniden oluşturulması gerekmez.Bu, olumsuz bir değişikliktir ancak çoğu durumda (
equals()
değerini geçersiz kılmayan sınıflar kullanılırken) bir uygulama üzerinde fark edilebilir bir etkisi olmaz.equals()
yöntemini geçersiz kılan sınıfların (ör.data
sınıfları) performansta düşüş görebilirsiniz. Bunun nedeni,equals()
yöntemlerinin artık birmutableStateOf()
'ye atandıklarında varsayılan olarak çağrılmasıdır.Ö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şlevlerde, 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ğırma tabanlı saatleri kullanan API'ler arasındaki boşluğu doldurmak için bir AnimationClockObservable öğesi olarak MonotonicFrameClock kullanabilmenizi sağlayan MonotonicFrameAnimationClock eklendi.
ManualAnimationClock'un MonotonicFrameClock eşdeğeri artık ManuelFrameClock oldu. (I111c7, b/161247083)
Modifier.stateDraggable, baştan aşağı yenilendi ve Modifier.skayable 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üzenleme yapıldı. [Modal/Bottom]DrawerLayout artık onStateChange parametresi almıyor. (I72332, b/148023068)
Modifier.plus kullanımdan kaldırıldı. Bunun yerine Modifier.then adını kullanın. "Sonra"da sıralama sinyali daha güçlüyken
Modifier.padding().background() + anotherModifier
yazmanız da yasaklanır, bu da zinciri bozar ve okunması daha zordur (Iedd58, b/161529964)SubcomposeLayout eklendi. Alt ağaç bileşimini ölçme sırasında yalnızca daha sonra sunulacak bazı değerleri kullanmak istiyorsak ölçüm sırasında alt öğelerin oluşturulmasına olanak tanıyan düşük düzey bir temel öğedir. Örneğin, WithConstraints, SubcomposeLayout kullanılarak uygulanmamıştır. (I25cc8)
Material FilledTextField, TextField olarak, temel TextField'in adı ise BaseTextField olarak değiştirildi
Modifier.drawArka Plan, 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ı. Sürüm 0.1.0-dev15 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ıkları 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ılmıştır. Alternatif olarak state ve mutableStateOf ifadesini kullanın. Bu kullanımdan kaldırma kararı, ayrıntılı bir tartışma sonrasında alınmıştır.Gerekçe
Gerekçe aşağıdakileri kapsar, ancak bunlarla sınırlı değildir:
- API yüzey alanını ve öğretmemiz gereken kavramları azaltır
- Diğer benzer araç setleriyle daha uyumlu (Swift UI, React, Flutter)
- Karar geri alınabilir.
@Model
adlı sağlayıcıyı daha sonra dilediğiniz zaman geri getirebiliriz. @Model
ürününün köşeye kullanımını ve yanıtlanması zor soruları ele almamız gereken işlemler olarak yapılandırmayla ilgili sorunları ortadan kaldırır@Model
veri sınıfı, eşittir, karma kodu vb.- Bazı mülklerim nasıl "gözlemleniyor", bazıları ise görmüyorum?
- Gözlemde kullanılacak yapısal ve referanssal eşitliği nasıl belirtirim?
- Sistemdeki “sihir”i azaltır. Bir kişinin sistemin olduğundan daha akıllı olduğunu varsayma (ör. bir listeyi nasıl fark edeceğini bilmesi) olasılığını azaltır
- Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
- Sınıftaki değişken -> özelliğinden yeniden düzenlemeye olanak sağlar
- Potansiyel olarak devlete özgü el ile yapılmış optimizasyonlar yapma olanakları sağlar
- Ekosistemin geri kalanıyla daha uyumlu olur ve sabit durumu bize ya da "değişken durumu benimsemeye" yönelik belirsizliği azaltır
Taşıma Notları
@Model
ürününün neredeyse tüm mevcut kullanımları, iki yöntemden biriyle oldukça küçük değişiklikler içerir. Aşağıdaki örnekte, yalnızca örnek olması açısından iki özellik içeren bir@Model
sınıfı vardır ve bu sınıf composable bir şekilde 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 kopyalarını oluşturun.Kotlin'in veri sınıfları sayesinde bu yaklaşım daha kolay hâle getirilmiştir. Esas olarak, önceki tüm
var
özelliklerini bir veri sınıfınınval
özelliklerinde oluşturun, 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 sınıfta yapılan mutasyonların yalnızca
State
örneğinin oluşturulmasıyla aynı kapsamda yapılması durumunda işe yaradığını unutmamak önemlidir. Sınıf, kullanım kapsamı dışında kendi kendine değişiyorsa ve bunun gözlemine güveniyorsanız bir sonraki yaklaşım kullanmak isteyeceğiniz yaklaşımdır.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
2. Alternatif: mutableStateOf ve mülk yetki verilmiş kullanıcılarını kullanın
Bu yaklaşım, Kotlin’in mülk delegeleri ve kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanıyan
mutableStateOf
API ile daha kolay hâle getirildi. Aslında, orijinal sınıfın tümvar
özelliklerinivar
mülkleriyle değiştirin. Bunların yerine, özellik temsilcisi olarakmutableStateOf
koyun. Bu, sınıfın kullanımının hiçbir şekilde değişmeyecek ve yalnızca dahili olarak uygulanması gibi bir avantaja sahiptir. Ancak davranış, orijinal örnekle tamamen aynı değildir. Çünkü her özellik artık ayrı ayrı gözlemlenmektedir/abone edilmiştir. Bu nedenle, bu yeniden düzenleme işleminden sonra göreceğiniz yeniden düzenlemeler daha dar olabilir (iyi bir şeydir).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/93}b/143}
Compose'un derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, oluşturma derleyicisi çağrıları birleştirilebilir işlevlere dönüştürür. Bu değişiklikle birlikte, composable işlevin gövdesini dönüştürüp (çoğunlukla) çağrı sitesini değiştirmeden bırakıyoruz.
Bu, yazma çalışma zamanıyla iletişim kurma mantığının büyük kısmının, çağrı sitesi yerine işlev gövdesinin başında gerçekleştiği anlamına gelir.
Bu, tüm oluşturma işlemlerinde kaynakla uyumlu bir değişiklik olmalıdır. Bu değişikliğin ardından, yazma özelliğini kullanan çoğu kullanıcının herhangi bir kod güncellemesi gerekmeyecektir.
Bu çalışmayı desteklemek için oluşturulabilir tüm işlevlerin JVM imzası değiştirildi. Tek bir parametreyi kabul eden bir yazılabilir işlev, 3 parametre kabul eden bir işleve dönüştürülür. Ek parametreler, bir "anahtar" tam sayısı olan Composer, çağrılar aracılığıyla meta verileri yaymak için kullanılan bir bit maskesi tam sayıdır.
Oluştur özelliği artık varsayılan bağımsız değişkenleri de oluşturulabilir bir işleve dönüştürüyor. Bunu, işlevin kendisinin fazladan bir sentetik varsayılan aşırı yüklemesi uygulamadan yapar. Dolayısıyla 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 ulaşamadıkları yerden atlanır
- Varsayılan bağımsız değişken ifadelerindeki oluşturulabilir ifadeler artık doğru şekilde abone olundu ve işlendi
Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer oluşturulabilecek işlevlere 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ış birleştirilebilir 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ı ve slot tablosu boyutu küçültülür. 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ı için daha az iş yapılmasına neden olur 4. İşlevlere yönelik kullanılmayan dağıtım ve alıcı parametreleri, işlevin gövde bölümünde kullanılmadığı takdirde işlevin atlanabilirliğinin belirlenmesine 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 desteği sonlandı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, Function1 yerine bir Function3 içerecek şekilde değiştirildi 7. restartableFunction ve restartableFunctionN, ek derleme zamanı parametreleri içerecek şekilde güncellendi (I60756, b/143464846)MutableVector'a SortWith ve removeRange eklendi (Icccf7)
CompositionLifecycleObserver için varsayılan yöntem uygulamaları eklendi (I24289)
Uygulama, artık bileşimleri atmak için clear() yöntemi gerektiriyor (Ibe697)
Tüm listeyi kopyalamak zorunda kalmadan herkese açık API'ye iletilmesine izin vermek için MutableVector'a asMutableList() eklendi. (I298df)
Etkinliklere yanıt olarak iş başlatmak amacıyla kompozisyonda yönetilen bir CoroutineScope almak için readCoroutineScope() 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 dahili uygulamalarda kullanılmak üzere tasarlanmıştır. (I8ebd6)
Kotlin oluşturma sürümünde bir sorun yaşanmaması için
StableMutableList
veStableMutableMap
geçici olarak kaldırıldı. Oluşturma işlemi, Kotlin'in bu sorun içermeyen sürümüne güncellendiğinde bu arayüzler yeniden kullanıma sunulur.SnapshotStateList
veSnapshotStateMap
şu anda herkese açık ancakStableMutableList
veStableMutableMap
geri yüklendiğinde 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ılmıştır. @ComposableContract(tracked=false) ile değiştirin (Id211e)
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 öncelikle bu sınıfın yığın izlemelerde gösterildiğinde daha iyi olduğunu belirtmek 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 @Stable (I0b4bb) yerine @StableBu değişiklikten önce, yazma derleyici eklentisi (I5205a, b/158123804) varsa @Composable işlevinin içindeki kuruculara yapılan çağrılara önemsiz bir şekilde müdahale ediyordu.
Recompose kompozisyonu artık yararlı bir soyutlama değil. Çoğu yeniden oluşturma işlemi MutableState atamaları sonucunda gerçekleşir. Bunun dışında 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 faydalı bir soyutlama değil. Kodu çoğaltmanız gerekiyorsa, yalnızca, özelleştirilebilir bir lambda parametresi yürüten hazırlanabilir bir işlev oluşturarak bu işlevin uygulanması yinelenebilir. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct işlevinin desteği sonlandırıldı ve yerini @ComposableContract(restartable=false) kullanıma aldı (If4708)
Kısa süre önce kullanıma sunulan StateFlow için, başlangıç değerinin önceden doldurulmasına olanak tanıyan bir bağdaştırıcı eklendi. Böylece döndürülen Durum, null olamaz (I61dd8, b/156233789)
Flow için bağdaştırıcı eklendi. Kullanım örneği: flow.collectAsState() (If2198, b/153375923)
[Mutable]Eyalet mülk yetki verilmiş 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 eklemesi gerekir. (I5312c)androidx.compose.ViewComposer kaldırıldı. androidx.ui.node.UiComposer androidx.compose.Emittable kaldırıldı. componentNode ile yedekliydi. 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
üzerindedispose
yöntemini kullanın. androidx.compose.Compose.subcomposeInto, androidx.ui.core.subcomposeInto'ya taşındı BileşenNode#emitInsertAt, BileşenNode#insertAt olarak yeniden adlandırıldı BileşenNode#emitRemoveAt, BileşenNode#removeAt NoefNodemove#emitMode (BileşenNoef#emitMode), BileşenComposeFlags.COMPOSER_PARAM
işareti,true
olarak güncellendi. Bu durum, oluşturma eklentisinin kod oluşturma stratejisini değiştirecek. 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 aktarılır. Bu, önemli bir ikili program değişikliğidir. Ancak tüm onaylı oluşturma kullanımlarında kaynak düzeyindeki uyumluluğun korunması gerekir. (I7971c)Ambiyans API'sinde ö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 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 boşList() veya başka bir makul varsayılan (I00025, b/161348384) ile başlamak daha iyidir
RxJava2 için bağdaştırıcılara sahip yeni yapı ui-rxjava2 eklendi. Kullanım örneği: observable.subscribeAsState() tarafından kullanılan val değeri (Ifab4b, b/153369097)
savedInstanceState()
artık null özellikli türlerle kullanılabilir (I6847f, b/153532190)Özel Saver nesneleri yazmayı kolaylaştıran yeni listSaver() vemapSaver() işlevleri (I8cf68, b/152331508)
Yeni işlevler: saveInstanceState() ve hatırlamakSaveInstanceState(). Bu işlevler, state() ve come() ile benzerdir ancak içinde (If1987, b/152025209) kayıtlı bir örnek durumu destek derlemesi mevcuttur.
Hata Düzeltmeleri
runOnIdleCompose
,runOnIdle
(I83607) olarak yeniden adlandırıldı- LayoutNode deneysel API'sı oluşturuldu (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Bu türü kullanan TextField,FilledTextField ve CoreTextField besteleri de kullanımdan kaldırılmıştır. Lütfen bunun yerine androidx.ui.input.TextFieldValue öğesini kullanın (I4066d, b/155211005)
- Modifier'dakidrawArka Plan uzantı API'leri yerine, kullanımdan kaldırılan DrawArka Plan API'si kaldırıldı. Kod yollarını azaltmak için renk, fırça ve boya çekme Arka plan uygulamaları yeniden düzenlendi ve bileşim kapsamında Değiştirici'nin oluşturulması zorunluluğu kaldırıldı. (I0343a)
- Canvas'ı CanvasScope'u kullanıma sunacak şekilde gösteren üst düzey oluşturma API'leri güncellendi. Bu sayede, tüketicilerin kendi Paint nesnelerini tutma gerekliliği ortadan kalkar. Hâlâ bir Canvas'a erişmesi gereken tüketiciler, çizim komutu vermek için temel Tuval'e geri çağırma sağlayandrawCanvas uzantı yöntemini kullanabilir. (I80afd)
- WithConstraints sondaki lambda API'si değiştirildi. Artık iki parametre yerine, kısıtlamalar ve layoutDirection'a ek olarak Dp'de minwidth, maxwidth, minHeight ve maxHeight özelliklerini sağlayan bir alıcı kapsamına sahiptir (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ştirici, 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ılmıştır
- DrawModifier API'yi iyileştirin:
- schema() 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 yöntemi,drawContent() yöntemine (Ibaced, b/152919067) sahiptir
- 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 Satır ve Sütun dışından erişilebilir. (I3a641)
- LayoutEsnek adlı düzen, 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 hatırlanacak (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ı taşıma katmanından Looper ve Handler gibi gereksiz API'leri kaldırın (I6847d)
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)