Çalışma Zamanı Oluşturma
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(Tüm oluşturma paketleri için API referans dokümanlarına göz atın)
Son Güncelleme | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
7 Ağustos 2024 | 1.6.8 | - | 1.7.0-beta07 | - |
Yapı
Oluşturma, androidx
içindeki 7 Maven grubu kimliğinin kombinasyonudur. Her Grup
Her biri kendi sürüm kümesine sahip olan, hedeflenmiş bir işlev alt kümesi içerir
notlar.
Bu tabloda, gruplar ve her sürüm notu grubunun bağlantıları açıklanmaktadır.
Grup | Açıklama |
---|---|
compose.animation | Jetpack Compose uygulamalarında animasyonlar oluşturarak kullanıcı deneyimini zenginleştirin. |
compose.derleyici | @Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin. |
compose.temel | Kullanıma hazır yapı taşlarıyla Jetpack Compose uygulamaları yazın ve kendi tasarım sistemi parçalarınızı oluşturmak için temeli genişletin. |
compose.material | Kullanıma hazır Materyal Tasarım Bileşenleri ile Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, Compose'un www.material.io adresinde açıklananlarla eşleşen bileşenleri sağlamak üzere tasarlanmış üst düzey giriş noktasıdır. |
compose.material3 | Materyal Tasarım'ın yeni evrimi olan Materyal Tasarım 3 Bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Güncellenmiş tema ve bileşenler ile 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. |
compose.runtime | Compose'un programlama modelinin ve durum yönetiminin temel yapı taşları ve Compose Compiler eklentisinin hedefleyeceği temel çalışma zamanı. |
compose.ui | Düzen, çizim ve giriş de dahil olmak üzere cihazla etkileşimde bulunmak için gereken yazma kullanıcı arayüzünün temel bileşenleri. |
Bağımlılıkları bildirme
Compose'a bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.
build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin.
uygulamanız veya modülünüz:
Modern
dependencies { implementation "androidx.compose.runtime:runtime:1.6.8" implementation "androidx.compose.runtime:runtime-livedata:1.6.8" implementation "androidx.compose.runtime:runtime-rxjava2:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.6.8") implementation("androidx.compose.runtime:runtime-livedata:1.6.8") implementation("androidx.compose.runtime:runtime-rxjava2:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme bölümüne bakın.
Geri bildirim
Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Ç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ı. Sürüm 1.0.0-beta01 bu kaydetmeleri 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.oluşturma-çalışma zamanı ve izleme-perfetto) sabitlendi. Oluşturma-çalışma zamanı izleme özelliğinin uygulamaya oluşturma çalışma zamanının daha yeni bir sürümünü getireceği bir sorun düzeltildi.
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 kaydetmeleri içerir.
Yeni Özellikler
- Karşılaştırma ve İzleme Perfetto'nun en son sürümleriyle uyumludur, böylece uygulama başlatılırken (baştan başlatma) (örneğin, soğuk başlatma) Beste İzleme desteği sunulur. (Hedgehog Beta 2'den başlayarak).
API Değişiklikleri
androidx.tracing.perfetto.Trace
adlı dosyaandroidx.tracing.perfetto.PerfettoSdkTrace
olarak yeniden adlandırıldı. (I44af8)- Tracing Perfetto SDK API'leri
android.os.Trace
ile tutarlı hâle getiriliyor. (I73ba0, b/282199917) - Uygulama başlatılırken izlemeye ilişkin ön koşullar. (Iad890)
- Birleştirilmiş deneysel ve herkese açık API dosyaları (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- İşlevsel değişiklik yok. Aşağı akış bağımlılıklarında birden fazla performans optimizasyonu
androidx.tracing:tracing-perfetto*
.
Sürüm 1.0.0-alpha01
7 Eylül 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing
, destekleyen araçlar içeren (yakında) 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.7
Sürüm 1.7.0-beta07
7 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
yayınlandı. Sürüm 1.7.0-beta07 bu kayıtları içerir.
Sürüm 1.7.0-beta06
24 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06
yayınlandı. Sürüm 1.7.0-beta06 bu kayıtları içerir.
Sürüm 1.7.0-beta05
10 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05
yayınlandı. Sürüm 1.7.0-beta05 bu kayıtları içerir.
Sürüm 1.7.0-beta04
26 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04
yayınlandı. Sürüm 1.7.0-beta04 bu kayıtları içerir.
Sürüm 1.7.0-beta03
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03
yayınlandı. Sürüm 1.7.0-beta03 bu kayıtları içerir.
Sürüm 1.7.0-beta02
29 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02
yayınlandı. Sürüm 1.7.0-beta02 bu kayıtları içerir.
Sürüm 1.7.0-beta01
14 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01
yayınlandı. Sürüm 1.7.0-beta01 bu kayıtları içerir.
Sürüm 1.7.0-alpha08
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08
yayınlandı. Sürüm 1.7.0-alpha08 bu kaydetmeleri içerir.
Sürüm 1.7.0-alpha07
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07
yayınlandı. Sürüm 1.7.0-alpha07 bu kaydetmeleri içerir.
Yeni Özellikler
- Varsayılan olarak,
compositionLocalWithComputedDefault()
kullanılarak veyaprovides
yerineprovidesComputed
kullanarak değeri hesaplamak için kullanılacak bir lambda sağlanarak diğer beste yerellerinin değerlerine göre hesaplanan yerel bir beste sağlama özelliği eklendi. - Bir bestenin yerel değeri, değeri hesaplamak için lambda içinden erişilebilen bestenin
currentValue
özelliği kullanılarak elde edilebilir. Bu, yalnızca@Composable
işlevlerinde erişilebilencurrent
yerine kullanılır. (Iadbc0)
API Değişiklikleri
- Yeni oluşturulan durum nesnelerine, genel anlık görüntü de dahil olmak üzere diğer anlık görüntülerden başlangıç durumlarıyla hemen erişilebilir. Nesnenin oluşturulduğu anlık görüntü uygulanana kadar sonraki değişiklikler görünmez.
mutableStateOf()
öğesinin ilk durumu ve temel sürümleri,mutableStateOf()
işlevine parametre olarak iletilen değerdir.mutableStateListOf()
vemutableStateMapOf()
başlangıç durumu boş.- Bir durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilir olmasını desteklemek için kullanılan
Snapshot.isInSnapshot
veSnapshot.PreexistingSnapshotId
eklendi. - Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin kalıbını takip ederek hemen erişilebilir olmayı destekleyebilir. (I84a17)
Hata Düzeltmeleri
- İç içe yerleştirilmiş anlık görüntülerde
readObserver
öğelerinin birleştirilmesi düzeltildi. Bu durum, iç içe yerleştirilmiş türetilmiş durumlarınsnapshotFlow
içinde kullanıldığında gereğinden az geçersiz olmasına neden oldu. (Idf138)
Sürüm 1.7.0-alpha06
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06
yayınlandı. Sürüm 1.7.0-alpha06 bu kaydetmeleri içerir.
Hata Düzeltmeleri
providesDefault
(538f45) işleyen tek değerler sağlama sorununu düzeltin- Recomposer'da kare saate (07e5c6) erişen bir kilitlenme oluşmasını önleyin
Sürüm 1.7.0-alpha05
20 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
yayınlandı. Sürüm 1.7.0-alpha05 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Devre dışı bırakılan bestedeki geç değişiklikleri net bir şekilde belirtin (5950bc)
Sürüm 1.7.0-alpha04
6 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
yayınlandı. Sürüm 1.7.0-alpha04 bu kaydetmeleri içerir.
Performans iyileştirmeleri
- Türetilmiş durum değerlendirmesi başına bir kez
Snapshot.current
çağrısı (ee7daf) - Kompozisyonda gözlem başına bir kez
currentRecord
oku (b882b2) snapshotFlow
içinde yanlışlıkla yapılan yinelemeyi kaldırın (231e56)- Oluşturma kitaplıkları için
nonSkippingGroupOptimization
öğesini etkinleştir. Bu, androidx'te yeniden başlatılamayan tüm composable işlevler için oluşturulan kodun daha verimli olmasına neden olur. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08)
Sürüm 1.7.0-alpha03
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03
yayınlandı. 1.7.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Değişikliklerin daha iyi tespit edilebilmesi için değiştirme gruplarını kullanın (0941b5)
Performans iyileştirmeleri
- Değişiklikleri algılarken bellek ayırmayı iyileştirme (53e7fd)
- Oluşturucudaki bellek sızıntısını düzeltme (0e097d)
- Yeniden oluştururken geçersiz kılmaları iletmek için
ScopeMap
kullanın (e19a7e) - Yalnızca türetilmiş durumları korumak için geçersiz kılmalar haritasını optimize edin (f11c44)
IdentityArraySet
kullanımlarınıScatterSet
(db572e) ile değiştirinScopeMap
içinderemoveScope
optimize edin (bb0530)
Sürüm 1.7.0-alpha02
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
yayınlandı. 1.7.0-alpha02 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Aynı karedeki alt bestelerdeki composable lambda'ları geçersiz kılın. (98301c)
onForgotten
ile aynı sıraylaonRelease
geri arama numarasını arayın. (2cd790)snapshotFlow
içinde gözlemlenmeyen, filtre değişti durumları. (796b80)
Performans iyileştirmeleri
- Zaten şeffaf olduğunda anlık görüntü gözlemleyicisini yerinde değiştirin. (f60f30)
SnapshotIdSet.lowest()
optimize edin. (7ae149)SnapshotIdSet
uygulamasında tahsis edilmeyen birfold()
kullanın. (532b7d)- Yinelemeli ayırmayı kaldırın (83f96b)
Sürüm 1.7.0-alpha01
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
yayınlandı. 1.7.0-alpha01 sürümü bu kaydetmeleri içerir.
Performans optimizasyonları
- Alt grup eklendikten sonra alan oluşturma özelliğini ekleme (b5960c)
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
- Güçlü atlama modunu etkinleştirme (ed1766)
Hata Düzeltmeleri
- İçsel hatırlamada varsayılan parametre meta değerini hesaba katın (096665)
currentCompoundHashKey
özelliğini daha fazla durumda benzersiz hale getirin (d4a872)- Satır içi işlev çağrısından çıkarken grupları fark eder (2a90fc)
Sürüm 1.6
Sürüm 1.6.8
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.6.8
yayınlandı. Sürüm 1.6.8 bu taahhütleri içerir.
Sürüm 1.6.7
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.6.7
yayınlandı. Sürüm 1.6.7 bu taahhütleri içerir.
Sürüm 1.6.6
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.6
yayınlandı. Son sürümden bu yana değişiklik yok.
Sürüm 1.6.5
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.5
yayınlandı. Sürüm 1.6.5 bu taahhütleri içerir.
Sürüm 1.6.4
20 Mart 2024
androidx.compose.runtime:runtime-*:1.6.4
yayınlandı. Sürüm 1.6.4 bu kaydetmeleri içerir.
Sürüm 1.6.3
6 Mart 2024
androidx.compose.runtime:runtime-*:1.6.3
yayınlandı. Sürüm 1.6.3 bu taahhütleri içerir.
Sürüm 1.6.2
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.2
yayınlandı. 1.6.2 sürümü bu kaydetmeleri içerir.
Sürüm 1.6.1
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.1
yayınlandı. Sürüm 1.6.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
onForgotten
ile aynı sıraylaonRelease
geri arama numarasını arayın. (2cd790)snapshotFlow
içinde gözlemlenmeyen, filtre değişti durumları. (796b80)
Sürüm 1.6.0
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0
yayınlandı. 1.6.0 sürümü bu kaydetmeleri içerir.
1.5.0'dan bu yana önemli değişiklikler
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden gönderme (4dff9a)
Performans optimizasyonları
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
rememberSaveable
optimize edin (f01d79)- Değişiklikler kaydedilene kadar türetilen durumları yeniden okumayı ertele (f38099)
- Beste yerel değerleri sağlama özelliğini iyileştirme (a337ea)
Hata Düzeltmeleri
- Slot tablosu bellek sızıntısını düzeltme (73fcfe)
- Kaldırılacak alt bestelerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
RememberObserver
yaşam döngülerini yalnızca hatırlama hesaplamasında depolandığında tetikleyin. (f6b4dc)$dirty
yakalamasını satır içi lambda'larla kısıtlayın. (acfca0)- Bazen yanlış beste yerellerini alan taşınabilir içerik sorununu düzeltme. (035cd6)
Sürüm 1.6.0-rc01
10 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
yayınlandı. Sürüm 1.6.0-rc01 bu kaydetmeleri içerir.
Sürüm 1.6.0-beta03
13 Aralık 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
yayınlandı. Sürüm 1.6.0-beta03 bu kaydetmeleri içerir.
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 kaydetmeleri 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 kaydetmeleri içerir.
API Değişiklikleri
- Ek açıklamada belirli kararlılık değerlerini uygulayın. (274a4c)
Hata Düzeltmeleri
- Bir bağlamda 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 yerellerini alan taşınabilir içerik sorununu düzeltme. (035cd6)
RecomposeScopeImpl
bölgesinde, ayırma yapmayan daha hızlı karma eşlemeler kullanın. (d79494)DerivedState
uygulamasındaObjectIntMap
kullanın. (21862e)DerivedState
içinde tamSnapshotThreadLocal
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ı. 1.6.0-alpha08 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
RememberObserver
yaşam döngülerini yalnızca hatırlama hesaplamasında depolandığında tetikleyin. (f6b4dc)- Geçersiz kılma listesi sıralamasında ayırmaları iyileştirin. (954d63)
SnapshotStateObserver
ürününde, ayırma yapmayan yeni haritaları kullanın. (4303ce)- Beste devre dışı bırakıldığında geçersiz kılmaları temizleyin. (e001be)
Sürüm 1.6.0-alpha07
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
yayınlandı. 1.6.0-alpha07 sürümü 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ün etkinleştirilmesi içinRandomAccess
olarak işaretlendi. (I5210c, b/219554654)
Sürüm 1.6.0-alpha06
20 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
yayınlandı. 1.6.0-alpha06 sürümü bu kaydetmeleri içerir.
Sürüm 1.6.0-alpha05
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
yayınlandı. 1.6.0-alpha05 sürümü bu kaydetmeleri içerir.
Sürüm 1.6.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
yayınlandı. 1.6.0-alpha04 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden gönderme (4dff9a)
API Değişiklikleri
ReusableComposition
devre dışı bırakılması için gözlemleri kaldıran ancak düğümleri yerinde tutan bir yöntem eklendi. Devre dışı bırakılan beste,setContent
çağrısı yapılarak tekrar etkinleştirilebilir. (Ib7f31)- Alt bileşenlerin yaşam döngüsünü ve yeniden kullanımını yönetmek 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ı. 1.6.0-alpha03 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Yeni
CompositionLocalProvider
optimizasyonunu düzeltin (3118e88) - Taşınabilir içerik düğümlerinin nasıl sökü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ı. 1.6.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler ve Performans iyileştirmeleri
rememberSaveable
optimize edin (f01d79)- Değişiklikler kaydedilene kadar türetilen durumları yeniden okumayı ertele (f38099)
- Beste yerel değerleri sağlama özelliğini iyileştirme (a337ea)
SideEffect
, grup oluşturulmasını önlemek için@ExplicitGroupsComposable
olarak işaretlendi. (I74815)- Kompozisyon yerel haritalarını yeniden kullanım durumlarında karşılaştırmaktan kaçının (782071)
API Değişiklikleri
CompositionLocalProviders
için, birden fazla değer sağlamayı hızlandırmak amacıyla kullanılan ancak tek bir değer sağlarken ek yükten kaçınan özel bir durum aşırı yüklemesi eklendi. (I6d640, b/288169379)
Hata Düzeltmeleri
- Slot tablosu bellek sızıntısını düzeltme (73fcfe)
stateSaver
, null değeri döndürdüğünderememberSaveable
özelliğinin geri yüklenmesiyle ilgili sorunu düzeltin (90748c)
Sürüm 1.6.0-alpha01
21 Haziran 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01
yayınlandı. 1.6.0-alpha01 sürümü bu kaydetmeleri 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 daha az ayırmalar. (I65c09)
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplamasından kaçının (68c565)
Sürüm 1.5
Sürüm 1.5.4
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.4
yayınlandı. 1.5.4 sürümü bu kaydetmeleri 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 kaydetmeleri 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 kaydetmeleri içerir.
Sürüm 1.5.1
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.1
yayınlandı. Sürüm 1.5.1 bu kaydetmeleri 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 kaydetmeleri içerir.
API Değişiklikleri
- Yeniden düzenleme, renk animasyonları ve
AndroidComposeView
için ayırmalar kaldırıldı. (Ib2bfa) - Durum oluşturan ve bir
remember
çağrısına sarmalanması gereken işlevleri işaretlemek için bir@StateFactoryMarker
ek açıklaması eklendi. (I64550) - Devlet ve
MutableState
(fb3d89) temel sürümlerini ekleyin Snapshot.isApplyObserverNotificationPending
eklendi (I672a5)State
API'sinin temel sürümleri eklendi. Bu sürümler, otomatik kutulama için ceza uygulanmadan, Int, Long, Kayma ve Çift değerlerininState
nesnelerinde izlenmesini sağladı. Bunları kullanmak içinmutableIntState(Int)
,mutableFloatStateOf(Float)
vb. yeni fabrika yöntemlerini 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ğerleri için geçersiz kılmayı sağlama (aa2a92)
- Besteyi atma 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 oluşturucu artık, ON_STOP bildirimi aldığında tüm besteler yerine yalnızca
withFrameNanos
için yapılan aramaları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlemeye devam edeceği ancak animasyonların veyawithFrameNanos
diğer çağrılarının engelleyeceği anlamına gelir. (Id9e7f, b/240975572) - Efektleri uygulamadan önce
LayoutNode
için devre dışı bırakma geri çağırmaları yürütün 3784073 - Yeniden başlatılan lambdas ea81df9 için değiştirilen işaretleri düzeltme
- 73fd4d8 düğümleri olan Composable için canlı düzenleme regresyonunu düzeltme
- ON_STOP, ae276f1 bestesi yerine kare saat yayınlarını duraklatmalıdır
SnapshotStateObserver
kapsamlarını değiştirilmemiş türetilmiş durumlar için geçersiz kılın 84d9b1c- Besteleri atarken olası kilitlenmeleri giderme 28761fc
- Bir alt besteye taşınan içeriği düzeltme 92d4156
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri kullanmadan önce
LayoutNode
için devre dışı bırakma geri çağırmaları yürütün (8b0fa4) - Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltin. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullan (a0b518b) SlotTable.moveSlotGapTo()
içindekifill
öğesini kaldırın ve kapanışa taşıyın (81f9935)- Taşınabilir içerik taşınırken eksik geçersiz kılmaları düzeltme (1d7c024)
- Taşınan taşınabilir içerikle ilgili geçersiz kılma işlemlerini derhal düzeltme (8676618)
Performans iyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplamaktan kaçının. (307102) - Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
- Oluşturmayı hızlıca iptal etme
CoroutineScopes
(a55362 ve bd382f) - Erişilemez durum kayıtlarına sahip durum nesnelerinin kayıtlarının üzerine yaz (c986960)
- Grupları değerlendirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Anlık görüntü geçersiz kılmalarını depolamak için
IdentityArraySet
kullanın (7f60cca) - Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
yayınlandı. Sürüm 1.5.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
Değişiklikler kaydedilene kadar türetilen durumları yeniden okumayı ertele (f38099)
mutableStateOf()
çağrılarının, temel öğeler için karşılık gelen özel türlerine taşınmasını öneren isteğe bağlı bir inceleme mevcuttur. Kodun lint kimliğiAutoboxingStateCreation
. Daha önce bu inceleme tüm projeler için varsayılan olarak etkindi. Android Studio'nun düzenleyicisinde ve projenizin lint çıkışlarında bu uyarıyı görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında gösterildiği şekilde (I34f7e)warning "AutoboxingStateCreation"
değerini tanımlayarak bilgi düzeyinin bilgi amaçlı yerine uyarı (veya daha yüksek) değerini 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 kaydetmeleri 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 kaydetmeleri içerir.
Performans iyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
hesaplamaktan 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 kaydetmeleri içerir.
API Değişiklikleri
- Yeniden düzenleme, renk animasyonları ve
AndroidComposeView
(Ib2bfa) özelliğinde ayırmalar kaldırıldı - Durum oluşturan ve bir
remember
çağrısına sarmalanması gereken işlevleri işaretlemek için bir@StateFactoryMarker
ek açıklaması eklendi. (I64550) - Devlet ve
MutableState
(fb3d89) temel sürümlerini ekleyin Snapshot.isApplyObserverNotificationPending
eklendi (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)- Oluşturmayı hızlıca iptal etme
CoroutineScopes
(a55362 ve bd382f) - Kompozisyonu iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerleri için geçersiz kılmayı sağlama (aa2a92)
- Besteyi atma sırasında
onEndChanges
numaralı telefonu arayın. (62cc8c) - Alt besteye taşınan içeriği düzeltme (4beb41)
- Olası kilitlenmeleri giderme (c1a425)
- ON_STOP, beste (f4a2d1) yerine kare saat yayınlarını duraklatmalıdır
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri kullanmadan önce
LayoutNode
için devre dışı bırakma geri çağırmaları yürütün (8b0fa4)
Harici Katkı
Snapshot.isApplyObserverNotificationPending
eklendi (I672a5)
Sürüm 1.5.0-alpha04
10 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
yayınlandı. 1.5.0-alpha04 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
State
API'sinin temel sürümleri eklendi. Bu sürümler, otomatik kutulama için ceza uygulanmadan, Int, Long, Kayma ve Çift değerlerininState
nesnelerinde izlenmesini sağladı. Bunları kullanmak içinmutableIntState(Int)
,mutableFloatStateOf(Float)
vb. yeni fabrika yöntemlerini kullanın. (I48e43)
Hata Düzeltmeleri
Besteyi atma 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
öğesine abone oluyor.(03d4a47)Başlatılmamış türetilmiş durum değerlerinin geçersiz olduğundan emin olun.
SnapshotStateObserver
işlevindeki her türetilmiş durum, bağımlılıklarının bir listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilmiş durumla ilişkilendirilen kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, türetilmiş durum okunduktan sonra (Snapshot.notifyObjectsInitialized()
çağrısı nedeniyle) gerçekleşebilecek anlık görüntü ilerlemesine kaydedilir.SnapshotStateObserver
aracında daha önce türetilen durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değerleri okumaktı. Bu, bağımlılık geçersizliğinin kaydedilmediği temiz bir durumda geçersiz kılma içeren bir yarış koşuluna neden oldu.Bu değişiklik, geçersiz kılma işleminin her zaman geçerli bir durumda gerçekleşmesini sağlayacak ve türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralar. (c472be6)
Sürüm 1.5.0-alpha03
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
yayınlandı. 1.5.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Bir Android penceresi için oluşturulan oluşturucu artık, ON_STOP bildirimi aldığında tüm besteler yerine yalnızca
withFrameNanos
için yapılan aramaları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlemeye devam edeceği ancak animasyonların veyawithFrameNanos
diğer çağrılarının engelleyeceği anlamına gelir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesinde ve 5c1a425 haritasındaki olası kilitlenmeyi düzeltin
- Efektleri uygulamadan önce
LayoutNode
için devre dışı bırakma geri çağırmaları yürütün 3784073 - Yeniden başlatılan lambdas ea81df9 için değiştirilen işaretleri düzeltme
- 73fd4d8 düğümleri olan Composable için canlı düzenleme regresyonunu düzeltme
- ON_STOP, ae276f1 bestesi yerine kare saat yayınlarını duraklatmalıdır
SnapshotStateObserver
kapsamlarını değiştirilmemiş türetilmiş durumlar için geçersiz kılın 84d9b1c- Besteleri atarken olası kilitlenmeleri giderme 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ı. 1.5.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Kotlin’in
getValue
operatörü artık composable olabilir (f174f6e)
Hata Düzeltmeleri, Performans İyileştirmeleri
- Erişilemez durum kayıtlarına sahip durum nesnelerinin kayıtlarının üzerine yaz (c986960)
- Grupları değerlendirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltin. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullan (a0b518b) - Anlık görüntü geçersiz kılmalarını depolamak için
IdentityArraySet
kullanın (7f60cca) SlotTable.moveSlotGapTo()
içindekifill
öğesini kaldırın ve kapanışa taşıyın (81f9935)- Taşınabilir içerik taşınırken eksik geçersiz kılmaları düzeltme (1d7c024)
- Taşınan taşınabilir içerikle ilgili geçersiz kılma işlemlerini derhal düzeltme (8676618)
- Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
yayınlandı. 1.5.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Modifier.Nodes
ürününün eş yordamları başlatmasına izin vermek içinModifier.Node#coroutineScope
ekler (I76ef9)CompositionLocalConsumerModifierNode
arayüzünü uygulayarakModifier.Nodes
uygulamasınınCompositionLocals
okumasına izin verin. (Ib44df)
Sürüm 1.4
Sürüm 1.4.3
3 Mayıs 2023
androidx.compose.runtime:runtime-*:1.4.3
hiçbir değişiklik yapılmadan yayınlandı.
Sürüm 1.4.2
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.2
yayınlandı. Sürüm 1.4.2 bu kaydetmeleri içerir.
Hata Düzeltmeleri
Anlık görüntü listesinde ve 2eb6570 haritasındaki olası kilitlenmeyi düzeltin
Değişiklik, durum kaydına doğrudan yazma işlemiyle eş zamanlı olarak gerçekleştirilirse
SnapshotStateList
veyaSnapshotStateMap
öğesine içerik eklendiğinde bir kilitlenme yaşanabilir. Bu durumun, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma özelliğini kullanan 93fcae828b tarafından kullanıma sunulan değişikliklerle karşılaşma olasılığı önemli ölçüde daha yüksektir.Kilitler, artık harita veya liste kilidi basılı tutulduğunda anlık görüntü kilidi açılmaya çalışılmayacak şekilde sıralanmıştır.
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 kaydetmeleri 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 kaydetmeleri içerir.
1.3.0'dan bu yana önemli değişiklikler
- İlk beste için
LiveData
tarafından sağlanan başlatılmış değeri kullan 3680e25 - Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallback
ekleyin. 8b6a258 ComposableMethod
7b6c7ad mülküneparameterTypes
mülkü ekle
Hata Düzeltmeleri ve Performans iyileştirmeleri
SnapshotStateObserver
içindeki her iki kapsam dizinini de temizleyin 29f4a3e- Atlanamayan lambdaların gövdesine gereken grupları ekleyin 7d06752
- 93fcae8 anlık görüntü durumunun bellek referans özelliklerini iyileştirin
- Yerel kompozisyon aramalarında boks imajını kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın: 6388d8d
SnapshotStateObserver
öğesini yinelemeli ve eş zamanlı olarak korur 98cb6baIdentityArraySet
"get" işlevine giriş dizini sınırı kontrolü eklendi yöntem 35a77d3- Oluşturma modülünü,
ViewTreeLifecycleOwner
uzantılarını 21c2122 kullanacak şekilde güncelleyin - Recomposer kareyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
- Recomposer'ı iptal ederken 8f8656f dizin dışı kilitlenme sorununu düzeltme
- Beste'nin üst sağlayıcıları 9526fcc değiştiyse her zaman yeniden oluşturmayı zorunlu kıl
- İptal edilen İşler a55f7ed için düzenleyici toleransı
- Çok sayıda besteci için geçersiz kılma işlemlerini iyileştirme 9b7ed67
- Yerel olmayan iadeler için kapanış grupları oluşturma b6f590c sorununu düzeltme
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 kaydetmeleri 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
serbest bırakıldı. Sürüm 1.4.0-beta02 bu kaydetmeleri 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 kaydetmeleri içerir.
API Değişiklikleri
- Compose düğümlerinin (I3731b) yaşam döngüsünün gözlemlenmesine olanak tanıyan
ComposeNodeLifecycleCallback
eklendi - Bu işlev yalnızca testte güvenli bir şekilde çağrılabileceği için
@TestOnly
,Composer.disableSourceInformation()
bölümüne eklendi. (I896c8)
Hata Düzeltmeleri
- Kompozisyon yerel aramalarında boksu kaldırın (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
serbest bırakıldı. 1.4.0-alpha05 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Satır içi/kullanımdan kaldırılan gizli işlevlerin diğer tür/boşluk özellikleri (I24f91)
Sürüm 1.4.0-alpha04
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
yayınlandı. 1.4.0-alpha04 sürümü bu kaydetmeleri 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ı uygulamalardan koruyun (d902fb)
Sürüm 1.4.0-alpha03
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
yayınlandı. 1.4.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
ComposableMethod
sınıfınajava.lang.reflect.Method#getParameterTypes()
benzeri yeni bir herkese açık yöntem ekleniyor (Iab0c3)
Hata Düzeltmeleri
- Anlık görüntü uygulama bildirimleri artık
Recomposer
tarafından değişikliklerin uygulanması tamamlandıktan sonra gönderiliyor. (Iad6c0, b/222093277)
Sürüm 1.4.0-alpha02
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
yayınlandı. 1.4.0-alpha02 sürümü bu kaydetmeleri içerir.
Sürüm 1.4.0-alpha01
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
yayınlandı. 1.4.0-alpha01 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
SnapshotStateList
veSnapshotStateMap
, artık saygılı bir şekildetoList()
vetoMap()
kullanımlarına açıkça sahip. 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ına gerek kalmadansnapshotFlow
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 kaydetmeleri 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- androidx.compose.ui 1.3.2 sürümünü destekleyecek şekilde güncellendi
Sürüm 1.3.1
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.3.1
yayınlandı. Sürüm 1.3.1 bu kaydetmeleri 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 kaydetmeleri içerir.
1.2.0'dan bu yana önemli değişiklikler
İstisnaları ele alma / canlı düzenleme desteği
- Canlı düzenlemeyi daha iyi desteklemek için, beste sırasında istisnaların işlenmesini sağlayan API'ler eklendi
- Hazır yüklemede beste hatası işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını işleme
Beste İzleme
- Yeni bileşim izleme araçlarını desteklemek için çalışma zamanı izleme API'leri eklendi
- Oluşturulabilir izleme etkinliği başlangıç/bitiş çağrıları oluşturma
- ComposerKt.traceEventStart(Int, String) yeniden eklendi
Composable Reflection API'ler
- Oluşturulabilir API'lerin yansıtmaya dayalı daha güvenilir çağrılarına olanak tanımak için yeni bir
ComposableMethod
API eklendi. - CallComposable'ı çalışma zamanını oluşturmak için taşı
- composable yöntemi çağırmak için API'yi yeniden işleme
Çalışma Zamanı Düzeltmeleri
- İşaretçi olup olmadığını kontrol etmek için alan tablosuyla ilgili hatalı aralık testini düzeltme
- Taşınabilir içeriğin SubcomposeLayout içine ve dışına taşınmasına izin verme
- Bir alt bestenin yeni içeriğine içerik taşıma sorununu düzeltme
Anlık Görüntü Sistemi
- Anlık görüntü sisteminde bellek yönetimi, performans ve doğruluk konusunda çeşitli iyileştirmeler yapıldı.
- SnapshotStateObserver'da kapsam kaldırmayı optimize edin
- Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri ortadan kaldırın
- Genel anlık görüntüden durum okunurken oluşan yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState desteği
- Türetilmiş durumun diğer kapsamlarda okunduğunda besteden kaldırılmasını engelle
- DerivedState içinde HashMap yerine IdentityArrayMap kullanma
- Türetilmiş durum gözlemcilerini, değişebilir vektör kullanacak şekilde güncelleme
- SnapshotStateObserver durum temizliğini güncelleyin
- SnapshotStateObserver.Invalidated yerine ArraySet ile değiştirin
- Genel anlık görüntüden durum okunurken oluşan yarış durumu düzeltildi
- DerivedState karma hesaplamasında eski kaydın kullanımını düzeltme
- Genel anlık görüntüyü geliştirirken yarış durumunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerinin temizlenmesini hızlandırın
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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Alan 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ı. Sürüm 1.3.0-beta03 bu kaydetmeleri içerir.
Davranış Kırıcı Değişim
- Parametre
remember
verememberCoroutineScope
olarak değiştirildi vecrossinline
olarak değiştirildi. Erken iadeye izin vermek yerine bu seçeneği kullanarak erken iadeler için bir hata raporlanır, bu da daha sonra dahili bir hatanın bildirilmesine neden olur. - Bu değişiklik, potansiyel olarak yeni derleyici hatalarının bildirilmesine yol açabilir. Bu hatalar, bu işlevlere iletilen lambdalardan yerel olmayan dönüşlerin kaldırılmasını gerektirir. (Ibea62)
Sürüm 1.3.0-beta02
7 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
yayınlandı. Sürüm 1.3.0-beta02 bu kaydetmeleri 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ı. Sürüm 1.3.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
- Bu API'yi kullanan geliştirici araçlarının bir beste alt grubunu kimliğini kullanarak hızlıca bulmasına olanak tanımak için
CompositionData
uygulamasınafind
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ı. 1.3.0-alpha03 sürümü 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 kaydetmeleri içerir.
API Değişiklikleri
ComposerKt.traceEventStart(Int, String)
, geriye dönük uyumluluk için yeniden eklendi (I6e6de)
Sürüm 1.3.0-alpha01
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
yayınlandı. 1.3.0-alpha01 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Yardımcı program işlevselliğini ç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 kaydetmeleri 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 kaydetmeleri içerir.
1.1.0
tarihinden bu yana önemli değişiklikler
Compose Çalışma Zamanı'nda 1.2.0'da kullanıma sunulan çeşitli özellikler ve stabilize edici birçok hata düzeltmesi bulunuyordu. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık bir kullanıcı deneyimi sunmak için kullanılabilecek
movableContentOf
API'nin kullanıma sunulmasıydı.movableContentOf
API'si, composable lambda'yı durumunu ve karşılık gelen düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştürür. Önceki çağrı besteden ayrıldığında durum geçici olarak korunur ve besteye yeni bir lambda çağrısı 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
lambda aynı bileşimde birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur ve çağrılar besteden çıkıp yeni çağrılar girdikçe durum, ilk çıkış çağrılarından çağrıldıkları sırayla giriş çağrılarına taşınır. Yeni aramalarla hak talebinde bulunulmayan tüm durumlar 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ü durumu sistemini dengelemek için çok zaman harcandı. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özet bir listesini aşağıda bulabilirsiniz:
1.2
Yeni Özellikler
- Güvenli olmayan deneysel anlık görüntü ekleme/Ayrıl
- Snapshot.asContextElement deneysel API'sini ekleyin
- Introduce Snapshot.withReadObservation
- Durumun bir beste içinde hareket etmesine izin ver
- Bestelerde Yeniden Besteleri Takip Etme
1.2
bölgesindeki performans
- Bileşim yerel performansını artırma
- Oluşturma için temel profiller, karşılaştırmalar kullanılarak elde edilmelidir
1.2
İçin Hata Düzeltmeleri
- Sürüm yeniden oluşturma kapsamlarından izleme bilgilerini kaldırma
- Türetilmiş durumun diğer kapsamlarda okunduğunda besteden kaldırılmasını engelle
- SnapshotStateObserver'da daha verimli removeScope() kullanın
- Türetilmiş durum bağımlılıklarını bileşimde temizleme
- Taşınabilir içeriğin içindeki iç yeniden düzenlemeden sonra currentCompositeKeyHash değişimini düzeltme
- Geçersiz hale gelen bileşimleri imha sırasında temizleme
- Yeniden oluşturma sırasında okunan türet durumunu düzeltme
- Türetilmiş durum nesneleri gözlemlenirken bellek sızıntısını düzeltme
- Tutarlı olmak için movableContent birleşik karma anahtarı düzeltildi
- Oluşturucunun çökeceği yerin köşesini düzeltme
- Bir grubun zorla geçersiz kılınmasının yeniden oluşturulmasını zorunlu kılma
- YieldSaveable girişi yanlış sırada geri yüklendiğinde yaşanan hata düzeltildi
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 kaydetmeleri içerir.
Hata Düzeltmeleri
- Türetilmiş durum gözlemleri, daha önce birlikte yeniden oluşturma kapsamı ve yapısından koşulsuz olarak kaldırılmıştı ve bu da türetilmiş durumu hâlâ gözlemlemeye devam edebilecek diğer kapsamları bozmuştu. Bu değişiklik, türetilmiş durum örneklerini yalnızca artık diğer kapsamlar tarafından gözlemlenmiyorsa 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 kaydetmeleri 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 kaydetmeleri 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 kaydetmeleri 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 kaydetmeleri 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 kaydetmeleri içerir.
Yeni Özellikler
- Bu, 1.2'nin ilk beta sürümüdür.
API Değişiklikleri
- Deneme amaçlı
Snapshot.unsafeEnter/unsafeLeave
(I108f3) eklendi - Deneysel
Snapshot.asContextElement()
API'si (Iff072) eklendi @ComposableTargetMarker
tarafından işaretlenen@ComposableTarget
ek açıklaması ve ek açıklamaları artık@file
önekiyle dosya kapsamında kullanılabilir. Dosya kapsamında bir hedef ek açıklama kullanılması, derleyicinin dosyadaki tüm composable işlevlerin, ilişkili uygulayıcıyı hedeflediğini 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 açıklanır. Başka bir uygulayıcıyı hedeflemesi gereken bir işlev, istenen uygulayıcı için hedef işaretçi ek açıklamasını açıkça sağlamalıdır. (I40804)
Sürüm 1.2.0-alpha08
20 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08
yayınlandı. 1.2.0-alpha08 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
TracingInProgress
,CompositionTracer
arayüzüne eklendi. (Ic6f12)recomposeScopeIdentity
öğesini Composer'a ekle (I0c873)- İzleme API'leri (Composer.setTracer)
OptIn(InternalComposeTracingApi)
ile kısıtlandı. (I9187f) - Yeniden kullanılabilir içerik için oluşturulan durumun geçerlilik süresi üzerinde daha fazla kontrol sağlayan
ResuableContentHost
eklendi. Örneğin, bir alt beste geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, bestedeki hatırlanan tüm durum, örneğin, tek kullanımlık tüm efektler gibi tetiklenerek unutulabilir. (I2c0f2, b/220322704)
Sürüm 1.2.0-alpha07
6 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
yayınlandı. 1.2.0-alpha07 sürümü bu kaydetmeleri 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 iletilen lambda'yı çalıştırmasına olanak tanır. Anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak, ancak gereksiz yeniden birleşmeye veya yeniden ölçüme neden olmadan değeri okuyabilmek istediğiniz kullanım durumlarında bu özellikten yararlanabilirsiniz. (I9f365, b/214054486)
Sürüm 1.2.0-alpha06
23 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
yayınlandı. 1.2.0-alpha06 sürümü bu kaydetmeleri içerir.
Sürüm 1.2.0-alpha05
9 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
yayınlandı. 1.2.0-alpha05 sürümü bu kaydetmeleri 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ı. 1.2.0-alpha04 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
ComposableTarget
,ComposableTargetMarker
ve eklendi Aşağıdaki durumların derleme zamanı raporlanmasına olanak tanıyanComposableOpenTarget
: composable işlev, olmadığı bir uygulayıcıyı hedefleme olarak adlandırılır tasarladık.Çoğu durumda, ek açıklamalar oluşturma sırasında derleyici eklentisidir. Bu nedenle, bu ek açıklamayı doğrudan nadir . Tahmin edilemeyen durumlar, soyut composable işlevler (ör. arayüz yöntemleri), alanları veya değişkenleri composable lambda'lar (yerel değişkenler ve parametreler tahmin edilir), veya
ComposeNode
ya da ilgili composable işlevleri kullanılırken sorun yaşanmaz.Özel uygulayıcılar için
ComposeNode
veyaReusableComposeNode
tarafındanCompoableTarget
fonksiyon ve diğer herhangi bir composable lambda parametre türleri. Bununla birlikte, veComposableTargetMarker
ve ardından işaretlenen ek açıklama kullanılır. kullanabilirsiniz.ComposableTarget
Oluşturulabilir bir ek açıklamaComposableTargetMarker
ile işaretlenen bir Özelliğin tam adını içerenComposbleTarget
class'ı uygulayın. Örnek olarakComposableTargetMarker
bkz.anroidx.compose.ui.UiComposable
. (I38f11)
Sürüm 1.2.0-alpha03
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03
yayınlandı. 1.2.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
Bir composable'a dönüştüren
movableContentOf
eklendi lambdayı, durumunu hareket ettiren bir lambdaya ve bunlara karşılık gelen düğümlere çağrıldığı yeni bir konuma taşınır. Önceki görüşme ayrıldığında durum geçici olarak korunur ve yeni bir çağrı yapılırsa önce besteye, ardından eyalete ve yeni çağrının konumuna taşınır. Yeni arama yoksa durumun kalıcı olarak kaldırıldığını ve gözlemcilerin bildirim alır.movableContentOf
lambda aynı her çağrı için bileşim, yeni durum ve düğümler oluşturulur. çağrılar besteden çıkar ve yeni çağrılar girerse durum taşınır ilk çağrıdan ayrılan ilk çağrılardan, gelen aramalara kadar çağrılır. Yeni aramalarla hak talebinde bulunulmayan tüm durumlar kaldırıldı kalıcı olarak tartın. (Ib4850)Araçların composable işlevlerin daha ayrıntılı izlenmesini sağlar. Derleyici artık tracing API'ye kaynak içeren çağrılar oluşturuyor. ekleyebilirsiniz. (Ib0eb5)
Bu çağrıları ve ilişkili kaynağı kaldırmak için: bilgileri içeren bir sürüm kullanıyorsanız 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 eğitim sağlayan
InternalComposeScope
ekleyin dört farklı teknik bulunur. (I07a3f)
Sürüm 1.2.0-alpha02
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
yayınlandı. 1.2.0-alpha02 sürümü 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 kaydetmeleri içerir.
API Değişiklikleri
- Oluşturma işlemi için
CompositionData
öğesineidentity
alanı eklendi değişmeyen kimlikler oluşturabilirsiniz. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10
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 kaydetmeleri içerir.
Hata Düzeltmeleri
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
içinNullPointerException
düzeltme (aosp/1947059, b/206677462)- Şuradan okurken pano içeriğinden kaynaklanan kilitlenme düzeltildi panosuna bakacağız. (I06020, b/197769306)
LazyVerticalGrid
içinde sabit RTL (aosp/1931080, b/207510535)
Sürüm 1.1.0
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0
yayınlandı. 1.1.0 sürümü bu kaydetmeleri içerir.
1.0.0'dan bu yana önemli değişiklikler
- Android 12 Fazla kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmasıyla ilgili iyileştirmeler
- Compose 1.0'da, Materyal bileşenlerinin düzen alanlarını dokunma hedefi boyutu ile ilgili Materyal erişilebilirlik yönergelerine uygun olacak şekilde genişleteceğini unutmayın. Örneğin, düğmenin boyutunu daha küçük olacak şekilde ayarlasanız bile düğmenin dokunma hedefi en az
48x48dp
boyutuna genişletilir. Bu, Oluştur Materyalini, Materyal Tasarım Bileşenleri ile aynı davranışla uyumlu hale getirir ve Görünümler ile Oluştur'u birlikte kullandığınızda tutarlı davranış sağlar. Bu değişiklik, Materyal Oluşturma bileşenlerini kullanarak kullanıcı arayüzünüzü oluşturduğunuzda, dokunma hedefi erişilebilirliğiyle ilgili minimum gereksinimlerin karşılanmasını da sağlar. - Gezinme Rayı için kararlı destek
- Daha önce deneysel olan bir dizi API'yi kararlı sürüme geçirir
- Kotlin'in daha 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 kaydetmeleri içerir.
Hata Düzeltmeleri
1.1.0-rc03
Materyalini 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 kaydetmeleri içerir.
Sürüm 1.1.0-beta04
1 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
yayınlandı. Sürüm 1.1.0-beta04 bu kaydetmeleri 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ı. Sürüm 1.1.0-beta03 bu kaydetmeleri içerir.
Sürüm 1.1.0-beta02
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
yayınlandı. Sürüm 1.1.0-beta02 bu kaydetmeleri içerir.
API Değişiklikleri
- Anlık görüntü kodu birden fazla dosyaya bölündü ama hiçbiri aynı JVM sınıfında yaşar. (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 kaydetmeleri içerir.
Sürüm 1.1.0-alpha06
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
yayınlandı. 1.1.0-alpha06 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
InternalCompilerApi
, şu özelliklere sahip Composer yöntemlerinden kaldırıldı: modüller arası olarak çağrılması gerekir (I1aa0b)Recomposer.state
kullanımdan kaldırıldı ve şu şekilde değiştirildi: türünü bir StateFlow olarak değiştirmek içinRecomposer.currentState
(Ic2ab3, b/197773820)
Sürüm 1.1.0-alpha05
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05
yayınlandı. 1.1.0-alpha05 sürümü bu kaydetmeleri içerir.
Sürüm 1.1.0-alpha04
15 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
yayınlandı. 1.1.0-alpha04 sürümü bu kaydetmeleri içerir.
Sürüm 1.1.0-alpha03
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
yayınlandı. 1.1.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Oluşturma Derleyicisi artık Oluşturma Çalışma Zamanı'nın (1.0) eski sürümlerini destekliyor. Bu değişiklikten önce, Oluşturma Derleyicisi yalnızca aynı sürüm veya sonraki bir sürümün Oluşturma Çalışma Zamanı ile uyumluydu. Bu değişiklikten sonra, Oluşturma Derleyicisi, Oluşturma Çalışma Zamanı'nın (1.0) eski bir sürümüyle uyumlu hale gelecektir. (aosp/1796968)
- Oluşturma
1.1.0-alpha03
, Kotlin1.5.30
öğesine bağlı olacak şekilde güncellendi. (I74545)
Sürüm 1.1.0-alpha02
18 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
yayınlandı. 1.1.0-alpha02 sürümü 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ı. 1.1.0-alpha01 sürümü bu kaydetmeleri 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 kaydetmeleri içerir.
Hata Düzeltmeleri
- TüretilmişStateOf örneklerindeki kilitlenme izleme sorunu 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 kaydetmeleri içerir.
Bağımlılık Güncellemeleri
- Kotlin'e (
1.5.31
) bağlı olarak 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 kaydetmeleri içerir.
Bağımlılık Güncellemeleri
- Kotlin'e (
1.5.30
) bağlı olarak 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 kaydetmeleri içerir.
Compose 1.0.2
sürümünü desteklemek üzere güncellendi. Oluşturulan 1.0.2
, 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 kaydetmeleri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.21
kaynağına bağlı olarak 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 kaydetmeleri 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 Compose Sürüm 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'ün üzerine çıkarın. Bu sorun, Android Studio Bumblebee ve AGP'nin7.1
sonraki sürümünde düzeltilecektir. (b/194289155)
Sürüm 1.0.0-rc02
14 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.
- SnapshotStateObserver içindeki yarış koşulları spurratic hatasına neden oldu NullPointerExceptions. (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 kaydetmeleri içerir.
Sürüm 1.0.0-beta09
16 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
yayınlandı. Sürüm 1.0.0-beta09 bu kaydetmeleri içerir.
Eklenen Profil Kuralları
Bu sürüm, aşağıdaki oluşturma modüllerine (I14ed6) profil kuralları ekler:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.temel
- androidx.compose.foundation-layout
- androidx.compose.malzeme
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.grafikler
- androidx.compose.ui.metin
- androidx.compose.ui.metin
- androidx.compose.ui.unit
- androidx.compose.ui.util
Profil kuralları nedir?
Bir kitaplığa ilişkin profil kuralları,
src/main
veya eşdeğer dizinde bulunan bir metin dosyasında (baseline-prof.txt
) belirtilir. Dosya, her satır için bir kural belirtir. Bu durumda kural, kitaplıktaki yöntemler veya sınıflarla eşleştirmeye yönelik bir kalıptır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...
kullanılırken kullanılan, okunabilir ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.Bir yöntem kuralı aşağıdaki kalıba sahip olur:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Sınıf kuralı da aşağıdaki kalıba sahip olur:
<CLASS_DESCRIPTOR>
Burada
<FLAGS>
, bu yöntemin "Popüler", "Başlangıç" veya "Başlangıç Sonrası" olarak işaretlenip işaretlenmeyeceğini belirtmek içinH
,S
veP
karakterlerinden bir veya daha fazlasını göstermektedir.<CLASS_DESCRIPTOR>
, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Ö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
sitesindekifun isPlaced(): Boolean
yöntemiisPlaced()Z
imzasına sahiptir.Tek bir kuralın birden fazla yöntem veya sınıfı kapsaması için bu kalıplar joker karakterler (
**
,*
ve?
) içerebilir.
Kurallar ne işe yarar?
H
işaretine sahip bir yöntem, bu yöntemin "çalışıyor" olduğunu gösterir yöntemidir ve önceden derlenmesi gerekir.S
işaretine sahip bir yöntem, bu yöntemin başlangıçta çağrılan bir yöntem olduğunu ve derleme ve başlatma sırasında yöntemi yorumlama maliyetinden kaçınmak için önceden derlenmesi gerektiğini belirtir.P
işaretine sahip bir yöntem, bunun başlatmadan 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ığına önceden ayrılması gerektiğini belirtir.
Nasıl çalışır?
- Kitaplıklar, AAR yapılarında paketlenecek bu kuralları tanımlayabilir. Bu yapıları içeren bir uygulama oluşturulduğunda, bu kurallar birleştirilir ve birleştirilmiş kurallar, uygulamaya özel küçük bir ikili ART profili oluşturmak için kullanılır. ART, daha sonra uygulamanın belirli bir alt kümesini önceden derleyerek uygulamanın performansını, özellikle de ilk çalıştırmada performansını iyileştirmek için uygulama cihazlara yüklendiğinde bu profilden yararlanabilir. Bunun, hata ayıklaması yapılabilecek uygulamalar üzerinde herhangi bir 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ı. Sürüm 1.0.0-beta08 bu kaydetmeleri içerir.
API Değişiklikleri
State<T>
artıkState<out T>
(I69049) oldu- Yeniden oluşturmayı etkinleştirmek için
ControlledComposition
API değişikliği değişiklik gösterir. (Iaafd1, b/184173932)
Sürüm 1.0.0-beta07
18 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07
yayınlandı. Sürüm 1.0.0-beta07 bu kaydetmeleri içerir.
API Değişiklikleri
- İzin verilen yeni oluşturma derleyici API'leri eklendi derleyici tarafından üretilen kaynak bilgileri kaynak sadeleştirme sırasında kaldırıldı. (Ia34e6)
Şunu yeniden kullanmayı deneyen
ReusableContent
özelliğini sunar: düğümleri yeniden yüklemek yerine içeriğin değiştirilmelidir. Anahtar değiştirildiğinde, önceki değerler içeriğin alan tablosu, oluşturulan düğümleri ve bu değeri güncellemek için kullanılan değerleri düğüm.Düğümü yeniden kullanacak
ReusableComposeNode
özelliğini sunar parametresinin değeri,ComposeNode
için yapıldığı gibi değiştirilir. (I1dd86)@ComposeCompilerApi
artık@RequiresOptIn
(Iab690) değil
Hata Düzeltmeleri
- LazyColumn/Row, önceden kaydırılmış olsalar bile artık önceden görünür olan en fazla 2 öğeyi etkin (imha edilmez) tutacak. Bu, kaydırma performansını artıran yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt besteleri 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ı. Sürüm 1.0.0-beta06 bu kaydetmeleri içerir.
API Değişiklikleri
@ComposeCompilerApi
artık@RequiresOptIn
(Iab690) değil
Sürüm 1.0.0-beta05
21 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05
yayınlandı. Sürüm 1.0.0-beta05 bu kaydetmeleri 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 ve ui-tooling-data artık Android 12 (I6f9de, b/184718994) ile uyumlu
Sürüm 1.0.0-beta04
7 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
yayınlandı. Sürüm 1.0.0-beta04 bu kaydetmeleri içerir.
Hata Düzeltmeleri
Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabilirdi. Bu değişiklikten sonra hiçbir yerel composable işlevi atlanmayacaktır. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri yakalaması yaygın ve beklenen bir uygulamadır ve bunların atlanması hataya neden olan yaygın bir kaynaktır.
Özetlemek gerekirse aşağıdaki örneği düşünün:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Bu değişiklikten önce,
ShowCount
composable işlevi,count
parametresi güncellendikten sonra bile her zaman atlıyordu. Bu durum artık geçerli değil. (I5648a)Giriş parametreleriyle (I1b110, b/182403380) kullanıldığında
rememberSaveable()
ürününün eski değeri geri yüklemesiyle ilgili sorun düzeltildi
Sürüm 1.0.0-beta03
24 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
yayınlandı. Sürüm 1.0.0-beta03 bu kaydetmeleri içerir.
API Değişiklikleri
DefaultMonotonicFrameClock
desteği sonlandırıldı. Telefon etme Hayır,withFrameNanos
veyaRecomposer.runRecomposeAndApplyChanges
MonotonicFrameClock
şimdiIllegalStateException
atacak. (I4eb0d)
Sürüm 1.0.0-beta02
10 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
yayınlandı. Sürüm 1.0.0-beta02 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılın (I6aa29, b/174531520)
- Gezinme oluşturma hedefinin içinde kullanıldığında bozuk
rememberSaveable { mutableStateOf(0) }
sorunu düzeltildi. (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ı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.
Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.
API Değişiklikleri
Recomposer.runRecomposeConcurrentlyAndApplyChanges
adlı kullanıcıyı ekle geçersiz kılınan besteleri ana makine dışında yeniden derlemek için deneysel API çerçeve döngüsü. (I342d0)- @ReadOnlyComposable ile işaretlenen tüm composable'lar artık yalnızca diğer @ReadOnlyComposable'lara (I58961) çağrı yaptıklarından emin olmak için derleme zamanı açısından doğrulanıyor.
compositionLocalOf
ve içindefaultFactory
staticCompositionLocalOf
artık şunun yerine zorunludur: isteğe bağlıdır.Bu değişiklikler, null olmayan değer için olası bir tür hatasını kaldırır varsayılan fabrikanın sağlanmadığı türler bulunur. Daha önce bu değeri, null olmayan bir tür için boş bir referans sağlar.
Boş değer atanabilen türler için varsayılan olarak
{ null }
sağlayabilirsiniz fabrika ayarlarına dönelim.Aşağıdaki durumlarda, null olmayan türlere sahip yerellerin kullanılmasını önermiyoruz: makul bir varsayılan değer sağlanabilir. Makul bir varsayılan ayar yoksa
defaultFactory
lambda bir istisna yapar. Ancak bir istisna uygulamak, yerel tüketicilerin zorunlu kılınmayan örtülü bağımlılık yapabilirsiniz. (Ifbd2a)Desteği sonlandırılan simgeler, oluşturma çalışma zamanından kaldırıldı (I3252c)
Desteği sonlandırılmış
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 parametreleri kabul etmiyor ve kullanımdan kaldırıldı.
- currentCompositeKeyHash, composable üst seviye bir işlev yerine derlenebilir üst düzey bir mülke dönüştürüldü.
- CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, somut bir sınıf yerine bir arayüz haline getirildi ve artık tür parametrelerine sahip değil.
- ComposableLambdaN, somut bir sınıf yerine bir arayüz haline getirildi ve artık tür parametrelerine sahip değil.
- SnapshotFlow 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 resetSourceInfo işlevleri kaldırıldı. Bunlar artık gerekli değildir.
- Composer.collectKeySourceInfo bilgileri kaldırıldı. Artık gerekli değildir.
- isJoinedKey,joinKeyLeft vejoinKeyRight yöntemleri kaldırıldı. Bunlar artık gerekli değildir.
- Çeşitli üst düzey API'ler taşındı ve farklı dosyalara yeniden düzenlendi. Bu, Kotlin'in dosya sınıfı semantiği nedeniyle ikili program uyumluluğunu bozar ancak kaynak uyumluluğunu bozmaz. Bu nedenle çoğu kullanıcı için sorun olmayacaktır.
- (I99b7d, b/177245490)
SnapshotStateObserver artık Deneysel değil (Id2e6a)
Desteği sonlandırılan bazı API'ler silindi (Ice5da, b/178633932)
Aşağıdaki Material API değişiklikleri yapıldı:
- Varsayılan dolgunun özelleştirilmesine olanak tanımak için Top/BottomAppBar'a contentPadding parametresi eklendi.
- BackdropScaffold'deki parametreler, gerekli parametrelerin isteğe bağlı parametrelerden önce gelmesi için API yönergelerine uygun olacak şekilde yeniden sıralandı.
- BottomGezinmeItem kutusundaki
icon
parametresi,selected
veonClick
tarihinden sonra olacak şekilde taşındı. - BottomClicksItem öğesi içindeki
alwaysShowLabels
parametresialwaysShowLabel
olarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContent
parametre yalnızcacontent
olarak yeniden adlandırıldı. ButtonDefaults.buttonColors()
içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediği için bunun kodunuzda hataya neden olmayacağını lütfen unutmayın. Lütfen adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde, kodunuz öncekiyle aynı şekilde çalışmaz.darkColors()
öğesinesecondaryVariant
parametresi eklendi. Bu renk, genellikle koyu temadakisecondary
ile aynıdır ancak tutarlılık ve daha fazla özelleştirme sağlar.- Yaygın olarak kullanılmadığı / faydalı olmadığı için ElevationDefaults veAnimationElevation() öğelerini herkese açık API yüzeyinden kaldırdık.
Slider
öğesindekionValueChangeEnd
,onValueChangeFinished
olarak yeniden adlandırıldı ve boş değer olarak değiştirildi.- Tutarlılık sağlamak için
Snackbar
öğesindekitext
parametresicontent
olarak yeniden adlandırıldı. - Varsayılan dolgunun özelleştirilmesine olanak tanımak için
DropdownMenuItem
öğesinecontentPadding
parametresi eklendi vecontent
,RowScope
öğesinde uzantı yapıldı. 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 kaydetmeleri içerir.
API Değişiklikleri
- UiApplier'dan ViewGroups desteği kaldırıldı. Desteği sonlandırılmış emitView composable'ları kaldırıldı. (Ifb214)
- CompositionReference, CompositionContext (I53fcb) olarak yeniden adlandırıldı
- ComponentActivity.setContent, şuraya taşındı: androidx.activity.compose.setContent androidx.activity:activity-compose modülü. (Icf416)
- Snapshot API daha tutarlı olacak şekilde güncellendi. API kılavuzu ve dahili uygulama sınıflarını gizleme herkese açık API'den yararlanın. (Id9e32)
- Ambiyanslar, Ambiyans ile eşleşecek şekilde yeniden adlandırıldı -> CompositionLocal yeniden adlandırıldı. Ambiyanslar eskiden AmbientFoo olarak adlandırılıyorken CompositionLocals artık LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient, sırasıyla CompositionLocal ve ambientOf / staticAmbientOf olarak besteLocalOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacının daha açık hale gelmesine yardımcı oluyor: bir bestenin yerel değerlerini sağlayan / almaya yönelik bir mekanizma. CompositionLocal örneklerinin başında
Local
öneki bulunmalıdır (ör. val LocalFoo = connectorLocalOf { Foo() }). (Ia55b6) - TakeMutableSnapshot ve takeSnapshot Genel Görünüm'ün tamamlayıcı yöntemlerine taşındı. (I91f19)
@ComposableContract
desteği sonlandırılarak üç ek ek açıklama daha kullanıma sunuldu.@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 olumlu bir etkisi veya değeri olmadığı için kullanımdan kaldırılmıştır (I0484d)
snapshotFlow
vewithMutableSnapshot
artık değil deneysel (I6a45f)Recomposer'lar artık kapatılabilir. Kapatılan derleyiciler: beste alt eş yordamları tamamlanana kadar yeniden düzenleme işlemine devam edin. Recomposer.shutDown, kapatmayla kontrast olarak iptal edilecek şekilde yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatch
yapısının desteği sonlandırıldı. MonotonicFrameClock, artık generate:runtime ve AndroidUiDispatcher komutu düzenleyicinin içinde bulunabilir:ui. (Ib5c36)Compose derleyici eklentisinin hedeflediği API yerine bir arayüz kullanmak üzere yeniden düzenlendi: beton sınıfı. Ayrıca arayüz artık bir tür parametresidir.
Bu, kaynağı etkilememesi gereken dahili bir değişikliktir kod uyumluluğu sağlar ancak ikili programları bozan 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]Şimdi görüntüle tarafından yönlendirilen, gecikmeli olarak oluşturulmuş, pencere kapsamlı Yeniden derleyicilere Pencerede ViewTreeLifecycleOwner'ı seçin. Yeniden düzenleme ve withFrameNanos tabanlı animasyon çizgileri, ana makine Yaşam Döngüsü sırasında duraklatılır durdurulur. (I38e11)
Recomposer.RunRecomposers, artık global bir StateFlow sunuyor devam eden beste durumunu gözlemlemek için salt okunur RecomposerInfo daha fazla bilgi edineceksiniz. Şu anda ayarlı olan Recomposer.current() için bu API'yi tercih edin. desteği sonlandırıldı. (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 kaydetmeleri içerir.
API Değişiklikleri
- SideEffect ve DisposableEffect API'leri (If760e) yerini alarak onCommit, onDispose ve onActive desteği sonlandırılmıştır.
- emit() API'si ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler tamamen aynıdır, yalnızca Compose'un (I4137b) adlandırma kurallarına uygun olarak farklı bir ada sahiptir
- in Verify ve bestReference() yöntemi desteği sonlandırılarak, sırasıyla currentRecomposeScope ve chooseCompositionReference yerine kullanılmaya başlandı. (I583a8)
AllowObserver, CompositionLifecycleObserver'ın yerini aldı ve CompositionLifecycleObserver desteği sonlandırıldı.
RememberObserver
, şunun yerine geçer: Değiştirilmiş anlamlara sahipCompositionLifecycleObserver
yeniden adlandırıldı. Yeni API'ye geçiş mekanik olarak yapılabilir hatırlanan ve unutulan bu nesneler için olması önerilir. Ancak bir referans bir bestede birden çok kez hatırlananonRemembered
değerineonEnter
değerinin yalnızca bir kez çağrıldığı her referans için.onEnter
nesne alt bileşimlerde kullanılmışsa birden çok kez çağrılır, Örneğin,WithConstraints
veScaffold
single'ı yapıyoronEnter
arama garantisi güvenilir değil ve şu nedenle kaldırıldı:RememberObserver
.RememberObserver
,onAbandoned
Geçilen geri çağırmadanRememberObserver
örnek döndürüldüremember
olarak kaydedildi ancak beste durumunda hatırlanmadı ve dolayısıylaonRemembered
hiçbir zaman çağrılmaz. Bu bir istisna besteyi tamamlanmadan veya tamamlamadan feshederse eyalet üretim aşamasındaki için bestenin güncel olmaması veya artık güncel olmaması gerekir. Single'ın ardındanRememberObserver
örneği yukarıdaki referans öneri, harici bir kaynağın izlenmesidir hemonForgotten
hem deonAbandoned
, gerekli değildir. Nesne işi izliyorsaonRemembered
,onAbandoned
içinde başlatılan kaynaklaronRemembered
ise çağrılmayacağından yoksayılabilir çağrıldı. (I02c36)collectAsState()
işlevlerini satır içi olarak işaretleme (Ia73e4)
Hata Düzeltmeleri
- WithConstraints BoxWithConstraints olarak yeniden düzenlendi ve Foundation.layout öğesine 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ı. 1.0.0-alpha10 sürümü bu kaydetmeleri içerir.
Çarpıcı Değişim
Dahili derleyicinin yeniden yapılandırılması API, oluşturulan düğümlerde değişikliklerin toplu olarak yapılmasını sağlar "değişiklikleri uygulama" sürecinin bir sonucu olarak tüm
@Composable
işlevlerinden sonra bestenin aşaması tamamlandı.Bu durum bir davranış bozucudur uygulama kodunu etkileyebilecek artık dahili kaynaklardan alınamayacak değişiklik yapılana kadar deneme amaçlı API'ler geçerlidir. Bu sorunun çözümü genellikle ve bir programlama dilinde
SideEffect
, yürütülmesini ertelemek için composable'a kalan kod, düğümler oluşturulana kadar başlatıldı. (I018da)
API Değişiklikleri
- Anahtar kelimelerin depolayıcı, değişiklikleri uyguladı. (I1b3e2)
Geri dönüşüme olanak tanımak için [Abstract]ComposeView API'lerini genişletin Bestelerini yeniden oluşturmak üzere elden çıkararak kompozisyona dayalı görünümler daha sonra. Pencere kapsamlı Recomposer'ları yüklemek ve keşfetmek için API'ler ekleyin besteler oluşturmak için CompositionReferences
Besteleme işlemini yapılandırmak için ViewCompositionPolicy'yi ekleyin [Abstract]ComposeViews stratejisi; varsayılan davranış şudur: pencere ayrılabilir. (I860ab)
Hata Düzeltmeleri
- Yeniden oluşturucu artık bir Akışın mevcut durumunu gösterir. Böylece, etkinliği ve ilişkili etkilerinin aktivitesini izleme. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent (I87c57, b/173086397) üzerinden erişilebilir.
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
yayınlandı. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.
API Değişiklikleri
SlotTable, SlotReader ve kaldırıldı Genel API'den SlotWriter. Bunlar şu şekilde işaretlendi: InternalComposeAPI'yi kullanmıştım. Artık bunlar şirket içi modülüne geçelim.
CompositionData ve CompositionGroup ayıklamak için kullanılacak ui-tooling API'sinin yerine beste bilgisidir. Bunlar herkese açıktır ancak herkese açık değildir. sağladığı için ui-tooling API'sinin dışında kullanılmak üzere tasarlanmıştır. ui-tooling API'nin yorumladığı ham bilgiler (I31a9c)
Uygulayıcı sınıfı artık (Id85b0) olarak kabul edilmemektedir
Applier
arayüzü basitleştirilecek şekilde değiştirildi yukarıdan aşağıya değil, aşağıdan yukarıya doğru inşa edebilirsiniz.insert()
yöntemiinsertTopDown()
olarak yeniden adlandırıldı.Yeni bir yöntem (
insertBottomUp()
) eklendi.Bir uygulayıcı, düzenlediği ağaca düğüm ekler bağlı olarak
insertTopDown()
veyainsertBottomUp()
kullanılıyor ve daha iyi performans gösterdiğini göreceksiniz.LayoutNode
veView
gibi bazı ağaçlar çok daha fazladır yukarıdan aşağıya doğru oluşturmak yerine aşağıdan yukarıya doğru oluşturmak daha etkilidir. Bu değişiklikten önce aşağıdan yukarıya uygulamak için bir dizi ekleme gerekiyordu. her uygulayıcıya kopyalanması gerekti. her şeyi öğreteceğim. Bu değişiklikle birlikte birApplier
aşağıdan yukarıya ağaç oluşturmak içininsertBottomUp()
değerini geçersiz kılar ve Ağacı yukarıdan aşağıya inşa etmek içininsertTopDown()
. (Icbdc2)Compose, composable çağrılar yapabilen özellik alıcılarını destekler. Bunun için sunulan destek kaldırılmayacak ancak bir özellik alıcısını @Composable olarak tanımlamak için kullanılan söz dizimi değişiyor.
Bunu yapmak için artık kullanımdan kaldırılan söz dizimi, mülkün kendisine ek açıklama eklemekti:
@Composable val someProperty: Int get() = ...
Bunu yapmak için şu anda doğru olan söz dizimi, mülkü alan kişiye açıklama eklemektir:
val someProperty: Int @Composable get() = ...
Her iki söz dizimi de bir süre boyunca çalışacaktır ancak kullanımdan kaldırılan eski söz dizimi, sonunda derleme hatasına dönüşecektir. (Id9197)
Hata Düzeltmeleri
- Dahili Android Sahibi (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) dahili olarak yapıldı (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 kaydetmeleri içerir.
API Değişiklikleri
- Oluşturma yönergeleriyle tutarlılığı kontrol etmek üzere composable lambda parametresi adı ve konumu için lint denetimi eklendi.
Ayrıca, lint kontrolü ve rehberlik doğrultusunda, sondaki lambdaların adı olarak
children
kullanılan bazı API'ler decontent
ortamına taşındı. (Iec48e) - Recomposer artık EmbeddingContext kabul etmiyor; zorunlu çizelgeleme bağımlılıkları EffectsCoroutineContext'ten alınır. FrameManager kullanımdan kaldırıldı; ilk kullanıma hazırlaması gereken anlık görüntü işleme sistemi geliştirilebilir. (I02369)
- RestorableStateHolder.withRestorableState işlevi RestorableStateProvider (I66640) olarak yeniden adlandırıldı.
Hata Düzeltmeleri
- Sonek olarak
Ambient
adını taşıyan ve desteği sonlandırılmış Ambiyanslar, diğer Ambients and Compose API kurallarına uyarak Ambient ön ekini taşıyan yeni özellikler eklendi. (I33440) - Eski kullanıcı arayüzü testi modülünü ve uçlarını kaldırın (I3a7cb)
Sürüm 1.0.0-alpha07
11 Kasım 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07
yayınlandı. 1.0.0-alpha07 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
API Değişiklikleri
@UnionType
ek açıklaması kullanımdan kaldırıldı (I57cde)- Ambiyans sağlamak için alternatif olarak OfferDefault eklenmiştir ve yalnızca ambiyans değeri sağlanmadığında ayarlanacak ortam değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
- LaunchedTask, tutarlılık için LaunchedEffect olarak yeniden adlandırıldı SideEffect ve DisposableEffect API'lerini kullanabilirsiniz. LaunchedEffect dosyası kapalı en iyi uygulamaları teşvik etmek için konu parametrelerine izin verilmez. (Ifd3d4)
- Applier artık Ağaçta değişiklik uygulaması başladığında/tamamlandığında bir Composer çağrılır. Bunlar, gerekirse kaynak yönetimini toplu işlem için kullanılabilir. (Icf476)
- Recomposer artık yapım sırasında bir CoroutineContext gerektiriyor (Ic4610)
- Dahili SlotTable uygulamasında gerçekleştirilen herkese açık API'yi etkilememelidir. (If9828)
- İlk değeri almayan, desteği sonlandırılmış rxjava2 bağdaştırıcıları kaldırıldı (Idb72f)
Hata Düzeltmeleri
- Foundation.Text desteği sonlandırılmış ve asset.Text ile değiştirildi. Temadan değer kullanmayan temel ve işlemsiz metin API'leri için androidx.compose.foundation.BasicText adresini ziyaret edin. (If64cb)
- BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField alanını kullanın. (I896eb)
- Düzenle ilgili çeşitli semboller androidx.compose.ui'den androidx.compose.layout.ui'ye taşındı. (I0fa98, b/170475424)
Harici Katkı
- Oluşturma için
runtime-rxjava3
modülü eklendi.runtime-rxjava2
ile benzer (I02cbf)
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 kaydetmeleri içerir.
API Değişiklikleri
- Recomposer artık bir CompositionReference ve geçerli bir bileşim üst öğesidir. Açık Recomposer artık daha az yerde gerekiyor. (I4036f)
- SideEffect'e DisposableEffect eşdeğer API'si eklendi,
onCommit-with-params rolünü oynadık, ancak onDispose'u zorunlu tuttu.
- Yeniden düzenlemeden devam eden veya uzun ömürlü süreçlere (disposableEffects) veya LaunchedTasks.
- (Id50b9)
- MutableVector artık RandomAccess'i uyguluyor (I85d73, b/170461551)
- bileşim tarafından yönetilen nesnelere dönüştürülür. YanEfekt (yeni): onCommit composable'ın yerini alması amaçlanmıştır. (Ia77c2)
- Yeni deneysel API RestorableStateHolder. Alt ağacı, geri yüklenen durumla bir dahaki sefere oluşturabilmeniz için ortadan kaldırmadan önce [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumun kaydedilmesine olanak tanır. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştir; seçeneği kaldır ComposeTestRule'da yanıp sönen imleci etkinleştirin. (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 kaydetmeleri içerir.
API Değişiklikleri
- Deneysel Modifier.pointerInput, giriş değiştiriciyi askıya alıyor (Ia77d2)
- LazyColumn/Row'un kaydırma performansı, her kaydırmada alt yapı üzerinde daha az iş yapılarak iyileştirildi. Beste sınıfı için yeni hasGeçersizations() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi has Invalidations() olarak yeniden adlandırıldı (Ib2f32, b/168293643, b/167972292, b/165028371)
- Kompozisyondan eş yordamlar başlatmak için generateState API'yi ekleyin
zaman içinde tek bir
State<T>
değerini güncelleyen (Id4a57) - LaunchInComposition, Compose ile eşleşecek şekilde LaunchedTask olarak yeniden adlandırıldı API yönergeleri (I99a8e)
- Özel Layout'lardaki Place() çağrılarının sırası artık alt öğeler için çizim sırasını (Ibc9f6) tanımlar.
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 kaydetmeleri içerir.
API Değişiklikleri
- Şunların toplanmasına izin vermek için OwnerScope eklendi: çerçeve veya çizimle ilgili görevlerin artık geçerli değil. (Ic4cf8)
- Diğer durum nesnelerini okuyabilen (ve türetebilen) bir hesaplamaya dayalı durum nesneleri oluşturmak için türetilmişStateOf API eklendi (If758b)
- SnapshotStateObserver için TestOnly API'si eklendi (I6e2a9)
Hata Düzeltmeleri
- Foundation.Box desteği sonlandırıldı. Lütfen bunun yerine Foundation.layout.Box'ı kullanın. (Ie5950, b/167680279)
Sürüm 1.0.0-alpha03
16 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03
yayınlandı. 1.0.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
CompositionCoroutineScope
artık uygulamıyorMonotonicFrameClock
.withFrameNanos
uygulamasını arayanlar üst düzeyi içe aktarmalıdır işlevini kullanmanız gerekir. (Icb642, b/166778123)
Hata Düzeltmeleri
onNode
veyawaitForIdle
gibi genel test işlevleri artık desteği sonlandırıldı, lütfen aşağıda tanımlanan yeni benzerlerine geçin ComposeTestRule (I7f45a)launchInComposition
artık gönderilmemiş eş yordamları başlatmıyor (Ief6af, b/166486000)
Sürüm 1.0.0-alpha02
2 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Tüketim için
snapshotFlow
vewithMutableSnapshot
API'leri ekleyin ve Anlık görüntü verileri değişiklikleri oluşturmaktır. (I3e722) Birleştirilebilir fonksiyonlar için çağrı kuralında değiştirildi. Bu, ikili zarar veren bir değişikliktir. Tüm kitaplıklar olmalıdır derleyici eklentisinin bu sürümüyle çalışmak üzere yeniden derlenmiştir.
Bu değişiklik, sadece değişen API'ler, etkinleştirin. (I7afd2, b/158123185)
EmbeddingContext'ten (I7b9be) planlama yöntemleri kaldırıldı
onPreCommit kullanımdan kaldırıldı; onCommit'te artık onPreCommit gösterir.
onCommit ve onActive artık sizinle aynı koreograf karesinde çalışıyor. yalnızca ilk başta değil, yapılan değişiklikler kareograf karesinin çekimi yapılır. (I70403)
Sürüm 1.0.0-alpha01
26 Ağustos 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
yayınlandı. 1.0.0-alpha01 sürümü bu kaydetmeleri 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 kaydetmeleri içerir.
API Değişiklikleri
- Özel emisyonlara artık bir veya daha fazla atlanıp yeniden düzenlenebilir. (Ibbd13)
Desteği sonlandırılan FrameManager çağrıları kaldırıldı.
Dahili yazma API'leri, arama sonuçlarında görünen
mutableStateof()
(I80ba6) gibi durum nesnelerini izlemek için ek yükstate { ... }
composable artık kullanımdan kaldırıldı ve daha net bir şekilderemember { mutableStateOf(...) }
için yapılan uygunsuz çağrılar. Bu, genel API yüzeyini ve durum ile ilgili kavramların sayısını azaltır yönetimi ve sınıf içinby mutableStateOf()
kalıbıyla eşleşir izin verebilirsiniz. (Ia5727)Flow.collectAsState artık varsayılan olarak Dispatchers.Main değerine ayarlanmaz. (I9c1d9)
For döngüsü içinde kullanılan durumu kaydeden bir şey düzeltildiğinde kilitlenme. Artık savedInstanceState() işlevinde aynı anahtara izin verilir. UiSavedStateRegistry API'si artık bu yeni gereksinime (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561) göre ayarlanmıştır
Hata Düzeltmeleri
emitView
desteği sonlandırıldı. Compose içinde Görünümler yayınlamak için mümkünseAndroidView
kullanın. Bu işlemlerin AndroidView kullanılarak yapılabildiği durumlarda, beste ağacında bırakılmadığı sürece Görünümler ve ViewGroups oluşturma işlemlerinin doğrudan 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 kaydetmeleri içerir.
API Değişiklikleri
Varsayılan mutasyon politikası olan
mutableStateOf()
ambientOf()
vesavedInstanceStateOf()
şu şekilde değiştirildi:referentialEqualityPolicy()
yerinestructuralEqualityPolicy()
.Yeni bir değerin
mutableStateOf()
örneğinin varsayılan değeri===
yerine==
kullanılıyor.https://kotlinlang.org/docs/reference/equality.html adresini ziyaret edin
ambientOf()
vesavedInstanceStateOf()
,mutableStateOf()
kullanıyor sağlayacak şekilde değiştirildi. Bu sayedemutableStateOf()
.Yapısal eşitliğin kullanılması geliştiriciyle daha yakından eşleşir emin olmanız gerekir.
Örneğin,
val state = mutableStateOf(1f)
ardından,
state.value = 1f
bundan böyle
state
için yapılan bir değişiklik olarak değerlendirilmeyecek ve Beste sırasındastate
öğesinin artık yeniden düzenlenmesi gerekmeyecek.Bu zarar veren bir değişiklik olsa da çoğu durumda (örneğin,
equals()
geçersiz kılınmayan sınıflar) içeriyorsa, fark edilebilir bir etkiye sahip olabilir.equals()
politikasını geçersiz kılan sınıflar (ör.data
sınıf),equals()
yöntemlerinden dolayı performansta düşüş artık birmutableStateOf()
öğesine atandığında varsayılan olarak çağrılıyor.Önceki davranış, politika eklenerek geri yüklenebilir
policy = referentialEqualityPolicy()
parametresindenmutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
. (Ic21a7)Row
veColumn
artık önemli ölçüde satır içi işlevi görüyor ve kullanımın ek yükünü azaltır. (I75c10)
Hata Düzeltmeleri
- setViewContent'in desteği sonlandırıldı. bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
MonotonicFrameAnimationClock eklentisine sahip olan MonotonicFrameAnimationClock Boşluğu doldurmak için bir AnimationClockObservable olarak MonotonicFrameClock yeni eş yordamlara dayalı saatler ile hâlâ eskiyi kullanan API'ler arasında saatlere dayanıyor.
ManualAnimationClock'ın MonotonicFrameClock eşdeğeri artık ManualFrameClock'ı seçin. (I111c7, b/161247083)
Değiştirici.stateDraggable tamamen yeniden işlendi ve yeniden adlandırıldı Değiştirici.sDELETEable olarak değiştirin. Yeni bir ScrollableState sınıfı kullanıma sunuldu ve DrawerState ve BottomDrawerState öğeleri buradan devralınacak şekilde yeniden düzenlendi. [Modal/Bottom]DrawerLayout artık onStateChange parametresi almamaktadır. (I72332, b/148023068)
Değiştirici.plus desteği sonlandırıldı. Bunun yerine Değiştirici.then'i kullanın. "O zaman" daha güçlü bir sipariş sinyaline sahiptir ancak
Modifier.padding().background() + anotherModifier
yazılmasını yasaklayarak zinciri bozar ve okunması daha zor olur (Iedd58, b/161529964)SubcomposeLayout eklendi. Bu, ancak daha sonra alt ağaç bileşimi ölçümü sırasında kullanılabilir olan bazı değerleri kullanmak istersek, ölçüm sırasında alt öğelerin oluşturulmasına olanak tanıyan alt düzey bir temel öğedir. Örneğin, WithConstraints SubcomposeLayout kullanılarak uygulanmaz. (I25cc8)
Material FilledTextField, TextField olarak yeniden adlandırıldı ve temel TextField, istenen en basit API'nin kolayca keşfedilmesi ve kullanılması için BaseTextField olarak yeniden adlandırıldı (Ia6242, b/155482676)
Değiştirici.drawbackground, Değiştirici.background (I13677) olarak yeniden adlandırıldı
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 kaydetmeleri içerir.
Bağımlılık Güncellemesi
- Compose'un
0.1.0-dev15
sürümünü kullanmak için bağımlılıklarınızı güncellemeniz gerekir. yukarıdaki Bağımlılıkları bildirme bölümünde gösterilen yeni kod snippet'lerine göre.
API Değişiklikleri
@Model
ek açıklaması artık kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf kullanın. Bu kullanımdan kaldırma kararı, titizlikle konuştuktan sonra alındı.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 (Swift UI, React, Flutter) daha uyumlu
- Geri alınabilir karar.
@Model
adlı kullanıcıyı daha sonra istediğiniz zaman geri getirebiliriz. - Köşede kullanım kullanımını ve
@Model
hizmetini yürütmemiz gereken şeyler olarak yapılandırmayla ilgili cevaplanması zor soruları ortadan kaldırır @Model
veri sınıfı, eşittir, karma kodu vb.- Bazı özelliklerim nasıl "gözlemlenir", bazıları ise nasıl görünmez?
- Gözlemde kullanılacak yapısal ve referans eşitliği nasıl belirtebilirim?
- Sistemdeki "sihri" azaltır. Birinin, sistemin olduğundan daha akıllı olduğunu varsayma (yani listeyi nasıl farklılaştıracağını bildiği) düşünme olasılığını azaltır
- Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
- Değişkenden yeniden yapılandırılabilirliği iyileştirir -> sınıftaki mülk
- Duruma özel manuel optimizasyonlar yapma potansiyeli
- Ekosistemin geri kalanıyla daha iyi uyum sağlar ve değişmez veya "değişebilir durumu benimsememiz" konusundaki belirsizliği azaltır
Taşıma Notları
@Model
ürününün mevcut kullanımlarının neredeyse tamamı, iki yöntemden biriyle oldukça sıra dışı bir şekilde dönüştürülür. Aşağıdaki örnekte, yalnızca örnek vermek amacıyla iki özellik içeren bir@Model
sınıfı yer almaktadır. Bu sınıf, bir composable'da kullanılıyordur.@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>
uygulamasını kullanarak kopya oluşturun.Bu yaklaşım, Kotlin'in veri sınıfları ile kolaylaştırıldı. Esasen, önceki tüm
var
mülklerini bir veri sınıfınınval
mülkleri haline getirin, ardındanremember
yerinestate
kullanın vecopy(...)
veri sınıfı kolaylık yöntemini kullanarak orijinal öğenin klonlanmış kopyalarına durum değerini atayın.Bu yaklaşımın yalnızca söz konusu sınıfta yapılan tek mutasyonlar
State
örneğinin oluşturulduğu kapsamda yapıldığında işe yarayacağını unutmayın. Sınıf, kendi içinde kullanım kapsamı dışında değişiyorsa ve bunun gözlemlenmesine güveniyorsanız kullanmak isteyeceğiniz bir sonraki yaklaşım olacaktır.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Alternatif 2: mutableStateOf ve mülk yetkilerini kullanın
Bu yaklaşım, Kotlin'in mülk için yetki verilmiş kullanıcı özellikleri ve bileşim dışında MutableState örnekleri oluşturmanıza olanak tanıyan
mutableStateOf
API'si ile kolaylaştırılmıştır. Esasen, orijinal sınıfın tümvar
özelliklerinivar
mülkleriyle değiştirin ve mülk temsilcisi olarakmutableStateOf
kullanın. Bu, sınıfın kullanımında herhangi bir değişikliğe yol açmayacak, yalnızca dahili olarak uygulanması avantajına sahiptir. Ancak davranış orijinal örnekle tamamen aynı değildir. Çünkü artık her bir mülk ayrı ayrı gözlemlenebilir/abonedir. Bu nedenle, bu yeniden düzenlemeden sonra göreceğiniz yeniden besteler daha dar olabilir (bu iyi bir şeydir).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/164}9243
Compose'un derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, oluşturma derleyicisi çağrıları composable işlevlere dönüştürüyordu. Bu değişiklikle birlikte, composable işlevin gövdesini değiştiriyor ve çağrı sitesini (çoğunlukla) değiştirmeden bırakıyoruz.
Bu, oluşturma çalışma zamanıyla iletişim kuran mantığı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 kullanımı için kaynakla uyumlu bir değişiklik olmalıdır. Oluşturmayı kullanan çoğu kullanıcı, bu değişikliğin sonucunda herhangi bir kodu güncellemek zorunda kalmaz.
Bu çalışmayı desteklemek için tüm composable işlevlerin JVM imzası değişti. Tek bir parametreyi kabul eden Oluşturulabilir işlev, 3 parametreyi kabul eden bir işleve dönüştürülür. Ek parametreler, bir "anahtar" tam sayısı olan Composer'dır. Çağrılar aracılığıyla meta verileri yaymak için kullanılan bir bit maskesi tam sayısı.
Compose, artık varsayılan bağımsız değişkenleri de composable işleve dönüştürüyor. Bunu, işlevin kendisine varsayılan olarak fazladan bir yapay varsayılan aşırı yükleme getirmeden gerçekleştirir. Dolayısıyla bu değişiklik, daha az işlevin tanımlanmasına neden olur.
Bu durumdan kaynaklanan bilinen, kasıtlı davranış değişiklikleri:
- Bazı görüşmelerde daha önce olmayacak şekilde atlanır
- Varsayılan bağımsız değişken ifadelerindeki oluşturulabilir ifadelere artık doğru şekilde abone olunuyor ve işleniyor
Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği üzerinden diğer composable işlevlere yayılır. Bu durum, çalışma zamanında daha az karşılaştırma, alan tablosu boyutunu küçültür ve daha önce atlanmayan composable işlevlerin daha fazla atlanmasına neden olur 2. Derleme zamanında "statik" olduğu belirlenen parametreler artık karşılaştırılmaz veya çalışma zamanında depolanmaz. Bu, karşılaştırma sayısını azaltır ve alan tablosu boyutunu küçültür. 3. İşlevlerin gövdesinin kontrol akışı yapısı, oluşturulan grupların sayısını en aza indirmek için kullanılır. Bu, slot tablosu boyutunu küçültür ve çalışma zamanında daha az iş yapılmasını sağlar 5. İşlevlere yönelik kullanılmayan dağıtım ve alıcı parametreleri, işlevin gövdesinde kullanılmıyorsa işlevin atlanabilirliğinin belirlenmesine dahil edilmez.
Zarar veren değişikliklerin çoğu, derleyicinin doğrudan hedeflediği API'lere yönelikti ve normal 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ı 5.
key
öğesinin vararg 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ı. Alternatif olarakkey
kullanın. 6. ScopeUpdateScope::updateScope, Function1 yerine Function3 işlevi beklenecek şekilde değiştirildi 7. restartableFunction ve restartableFunctionN, ek derleme süresi parametreleri içerecek şekilde güncellendi. (I60756, b/143464846)MutableVector'a (Icccf7) SortWith ve removeRange özellikleri eklendi
Şunun için varsayılan yöntem uygulamaları eklendi: CompositionLifecycleObserver (I24289)
Applier, artık atmak için clear() yöntemi gerektiriyor besteler (Ibe697)
İzin vermek için MutableVector'a asMutableList() eklendi gerek kalmadan herkese açık API'ye liste'ye dokunun. (I298df)
Yönetilen Etkinliklere göre iş başlatmak için kompozisyonda eş yordam. (I0e264)
MutableVector, resimlerden herhangi birini standart Koleksiyon arayüzünün herhangi birini uygulayabilirsiniz. Bu diğer şartlardan çok daha fazla hız sunuyor ve yalnızca dahili uygulamalarda kullanılması amaçlanmıştır. (I8ebd6)
StableMutableList
veStableMutableMap
geçici olarak kaldırıldı Kotlin oluşturma sürümünde bir sorun oluşmasını önlemek için gereklidir. Bu Oluşturma sürümü bir sürüme güncellendiğinde arayüzler yeniden tanıtılacak Kotlin'i arayın.SnapshotStateList
veSnapshotStateMap
artık herkese açık ancakStableMutableList
veStableMutableMap
geri yüklendikten sonra desteği sonlandırıldı. (Ia7769)animasyon zamanlaması için üst düzey withFrameNanos işlevi ekleyin (Ie34c5)
@Untracked ek açıklaması kullanımdan kaldırıldı. @ComposableContract(tracked=false) (Id211e) ile değiştirin
Yeniden başlatılabilir işlev ve ilişkili API'ler ComposableLambda vb. olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiği için kaynak düzeyi uyumluluğu normal şekilde etkilemeyecektir. Yeniden adlandırma işlemi esasen, yığın izlemelerde (I7eb25) gösterilen sınıfın hangi yönlerinin daha iyi olduğunu bildirmek için yapıldı
@Composable ek açıklaması artık sınıflarda geçerli değil (Ia5f02)
Ambient<T>
, artık @Immutable (I0b4bb) yerine @StableBu değişiklikten önce, oluşturma derleyici eklentisi, @Composable işlevinin içinde bir (I5205a, b/158123804) bulunan kuruculara yapılan çağrılara sıra dışı bir şekilde müdahale ediyordu.
Recompose compose, artık kullanışlı bir soyutlama değil. Çoğu yeniden oluşturma işlemi, MutableState atamalarının sonucu olarak gerçekleşir. Bunun dışındaki her şey için geçerli kapsamın yeniden oluşturulmasını tetiklemek üzere
invalidate
işlevini kullanmanız önerilir. (Ifc992)Gözlem artık kullanışlı bir soyutlama değil. Kodu çoğaltmanız gerekiyorsa composable lambda parametresi yürüten bir composable işlev oluşturarak işlevi çoğaltabilirsiniz. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct, @ComposableContract(restartable=false) yerine kullanımdan kaldırıldı (If4708)
Kısa süre önce kullanıma sunulan StateFlow için bir bağdaştırıcı eklendi. Bu adaptör, döndürülen Durum'un null olmaması için başlangıç değerinin önceden doldurulmasını sağlar (I61dd8, b/156233789)
Akış için bir adaptör eklendi. Kullanım örneği: Flow.collectAsState() yöntemi ile val değeri (If2198, b/153375923)
[Mutable]Eyalet mülk yetkisi operatörleri uzantılara taşındı . Arayanlar eklemelidir içe aktarmaları için
by state { ... }
veyaby mutableStateOf(...)
kullanmaya devam edebilirsiniz. (I5312c)androidx.compose.ViewComposer, androidx.ui.node.UiComposer klasörüne taşındı androidx.compose.Emittable kaldırıldı. ComponentNode ile gereksizdi. androidx.compose.ViewAdapters kaldırıldı. Bunlar artık desteklenen bir kullanım alanı değildir. Compose.composeInto desteği sonlandı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 adresine taşındı ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı. ComponentNode#emitRemoveAt, ComponentNode#removeAt olarak yeniden adlandırıldı. ComponentNode#emitMode, ComponentNode#move (Idef00) olarak yeniden adlandırıldıComposeFlags.COMPOSER_PARAM
işaretitrue
olarak güncellendi. Bu işlem, oluşturma eklentisinin kod oluşturma stratejisini değiştirecek. Genel olarak bu, @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametreler, çalışma zamanının yürütmeyi düzgün şekilde yönetmesi için sonraki @Composable çağrılarına iletilir. Bu, ikili programları bozan önemli bir değişikliktir ancak tüm yaptırım uygulanan oluşturma kullanımlarında kaynak düzeyinde uyumluluğun korunması gerekir. (I7971c)Ambiyans API'sinde büyük değişiklikler yapılıyor. Ayrıntılar için günlüğe ve
Ambient<T>
dokümanlarına bakın (I4c7ee, b/143769776)LiveData adaptörüne sahip yeni bir yapı olan ui-livedata eklendi. Kullanım örneği: LiveData.observeAsState() tarafından sunulan val değeri (Ie9e8c, b/150465596)
Açık bir başlangıç değeri olmayan Rx bağdaştırıcıları kullanımdan kaldırılmıştır. Null'u kullanmak her zaman en iyi varsayılan yöntem değildir. Örneğin, bir Listeniz olduğunda boşList() veya makul başka bir varsayılan (I00025, b/161348384) ile başlamak daha iyidir.
ui-rxjava2 - RxJava2 bağdaştırıcılarına sahip yeni yapı eklendi. Kullanım örneği: observable.subscribeAsState() ile val değeri (Ifab4b, b/153369097)
savedInstanceState()
artık boş değer atanabilen türlerle (I6847f, b/153532190) kullanılabilirÖzel Tasarruf nesnelerini yazmayı kolaylaştıran yeni listSaver() vemapSaver() (I8cf68, b/152331508)
Yeni işlevler: savedInstanceState() ve remindersSavedInstanceState(). Bunlar, state() ve refund() işlevine benzerdir ancak yerleşik bir örnek durumu desteği içerir (If1987, b/152025209)
Hata Düzeltmeleri
runOnIdleCompose
,runOnIdle
(I83607) olarak yeniden adlandırıldı- Made LayoutNode deneysel API'sı (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Metin Alanı bu tür için de destek sonlandırılmıştır. Lütfen şunu kullanın: Bunun yerine androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Desteği sonlandırılan DrawBackground kaldırıldı Drawbackground uzantısının tercih edildiği API Değiştirici'deki API'ler. Yeniden düzenlendi renk, fırça ve boyama Arka planı kod yollarını da azaltmaya yönelik uygulamaları Değiştirici'nin oluşturulması için kaldırma şartı olarak bir parçası olarak bulunuyor. (I0343a)
- Daha üst düzey güncellendi oluşturma API'lerini kullanarak bir Tuval'in CanvasScope'u açın. Bu işlem, koruma ve yönetim ihtiyaçlarının Paint nesnelerini ekleyebilirsiniz. Şu özelliklere sahip tüketiciler için: bir Canvas'a erişim gerektirmesi çizim Tuvali uzantısını kullanabilir Bu yöntem, soruna geri çağırma temel çizgisini gösteren çizim komutlarını Kanvas. (I80afd)
- WithConstraints takip eden lambda API değiştirildi. Artık iki parametre yerine, sınırlamalara ve layoutDirection'a ek olarak, Dp'de (I91b9a, b/149979702) minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlayan
- Simetrik dolgu değiştirici eklendi. (I39840)
- WrapContentWidth ve WrapContentHeight, herhangi bir Hizalama yerine dikey veya yatay Hizalama beklenecek şekilde güncellendi. Yer çekimi değiştiricisi, dikey veya yatay Hizalamayı kabul edecek şekilde güncellendi. Satır, Sütun ve Yığın, özel sürekli Hizalamaları destekleyecek şekilde güncellendi. (Ib0728)
- ui-text modülü, ui-text-core (I57dec) olarak yeniden adlandırıldı
- DrawModifier API'sini iyileştirin:
- Paint() ContentDrawScope için alıcı kapsamı oluşturuldu
- Çizimler() işlevindeki tüm parametreler kaldırıldı
- DrawScope, eski CanvasScope ile aynı arayüze sahiptir
- ContentDrawScopedrawContent() yöntemini içerir (Ibaced, b/152919067)
- ColoredRect desteği sonlandırıldı. Bunun yerine
Box(Modifier.preferredSize(width, height).drawBackground(color))
politikasını kullanın. (I499fa, b/152753731) - Değiştirici artı operatörü, fabrika genişletme işlevleriyle değiştirildi (I225e4)
- RowScope ve ColumnScope üyelerine artık Satır ve Sütun dışından erişilebilir. (I3a641)
- LayoutEsnek, LayoutAğırlık 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 arka planın varsayılan olarak hafızaya alınması olacak şekilde ayarlandı (Ia0bd3)
- ButtonStyle, farklı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenmiş örneklere göz atın. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
verunOnUiThread
artık genel işlevler oldu ComposeTestRule'daki yöntemlerdir. (Icbe8f)
Harici Katkı
- Compose Çalışma Zamanı bağlantı noktası katmanından Döngü ve İşleyici gibi gereksiz API'leri kaldırın (I6847d)
- Başlangıç değeri olmadan
Flow<T>.collectAsState()
öğesini kullanımdan kaldırın. Bunun yerineStateFlow<T>
kullanın veya kesin bir başlangıç değeri iletin. (I63f98, b/157674865)