Compose Çalışma Zamanı
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(Tüm compose paketleri için API referans dokümanlarına bakın)
Son Güncelleme | Kararlı Sürüm | Sürüm Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
13 Kasım 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
Yapı
Oluşturma, androidx
içindeki 7 Maven grup kimliğinin birleşimidir. Her grup, kendi sürüm notlarına sahip hedeflenen bir işlev alt kümesi içerir.
Bu tabloda, gruplar ve her sürüm notları grubunun bağlantıları açıklanmaktadır.
Grup | Açıklama |
---|---|
compose.animation | Kullanıcı deneyimini zenginleştirmek için Jetpack Compose uygulamalarında animasyon oluşturabilirler. |
compose.compiler | @Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisi ile optimizasyonları etkinleştirin. |
compose.foundation | Kullanıma hazır yapı taşlarıyla Jetpack Compose uygulamaları yazın ve kendi tasarım sistemi parçalarınızı oluşturmak için temeli genişletin. |
compose.material | Kullanıma hazır Materyal Tasarım bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, www.material.io'da açıklananlarla eşleşen bileşenler sağlamak için tasarlanmış Compose'un üst düzey giriş noktasıdır. |
compose.material3 | Materyal Tasarım'ın bir sonraki aşaması olan Materyal Tasarım 3 bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Material 3, güncellenmiş temalar ve bileşenler ile dinamik renk gibi Material You kişiselleştirme özelliklerini içerir ve yeni Android 12 görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlanmıştır. |
compose.runtime | Compose'un programlama modelinin ve durum yönetiminin temel yapı taşları ve Compose Derleyici Eklentisi'nin hedeflemesi gereken temel çalışma zamanı. |
compose.ui | Düzen, çizim ve giriş dahil olmak üzere cihazla etkileşimde bulunmak için gereken oluşturma kullanıcı arayüzünün temel bileşenleri. |
Bağımlılıkları beyan etme
Compose'a bağımlı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.
Uygulamanızın veya modülünüzün build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.7.5" implementation "androidx.compose.runtime:runtime-livedata:1.7.5" implementation "androidx.compose.runtime:runtime-rxjava2:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.7.5") implementation("androidx.compose.runtime:runtime-livedata:1.7.5") implementation("androidx.compose.runtime:runtime-rxjava2:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerine bakın.
Çalışma Zamanı İzleme 1.7 sürümü
Sürüm 1.7.0-rc01
18 Eylül 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01
yayınlanır. 1.7.0-rc01 sürümü bu taahhütleri içerir.
Çalışma Zamanı İzleme 1.0 sürümü
Sürüm 1.0.0-beta01
29 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01
yayınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.
Sürüm 1.0.0-alpha05
15 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.compose-runtime ve tracing-perfetto) sabitlendi. Bu sayede, compose-runtime-tracing'in uygulamaya compose-runtime'un daha yeni bir sürümünü getirmesine neden olan sorun düzeltildi.
Sürüm 1.0.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Karşılaştırma ve Tracing Perfetto'nun en son sürümleriyle uyumludur. Örneğin, AndroidX Karşılaştırma ve Android Studio'da (Hedgehog Beta 2'den itibaren) uygulama başlatılırken (soğuk başlatma) Kompozisyon İzleme desteğini etkinleştirir.
API Değişiklikleri
androidx.tracing.perfetto.Trace
,androidx.tracing.perfetto.PerfettoSdkTrace
olarak yeniden adlandırıldı. (I44af8)- Perfetto SDK API'lerinin izlemesini
android.os.Trace
ile tutarlı hale getirme. (I73ba0, b/282199917) - Uygulamanın başlatılmasında izleme için ön koşullar. (Iad890)
- Deneysel ve herkese açık API dosyalarının birleştirilmesi (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
yayınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- İşlevsel bir değişiklik yoktur. Aşağı akış bağımlılıkları
androidx.tracing:tracing-perfetto*
'nda birden fazla performans optimizasyonu.
Sürüm 1.0.0-alpha01
7 Eylül 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing
, destekleyen araçları (yakında kullanıma sunulacak) kullanıldığında Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. Bu ilk sürüm 1.0.0-alpha01 sürümüdür.
1.8 sürümü
Sürüm 1.8.0-alpha06
13 Kasım 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06
yayınlanır. 1.8.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
PausableComposition
API'de yapılan değişiklikler. Bu önemli değişiklikler, 1.8.0-alpha'nın önceki sürümlerine (1.8.0-alpha02'den beri) göre yapılmıştır ancak bunlar 1.8.0'daki yeni API'ler olduğundan, API'ler hâlâ alfa sürümünde olduğu için geriye dönük uyumluluk korunmaz. (I39819)- Yeni kompozisyonların Recomposer'da oluşturulmasını gözlemlemek için araç API'leri ekler (Iaeb7e)
Long
türündekisnapshotId
,Snapshot
'ye eklendi veid
'ın desteği sonlandırıldı. Çok yüksek kare hızlarına ve uzun süreli animasyonlara sahip sistemlerde anlık görüntü kimliğinin taşmasını önlemek için anlık görüntü kimliğiInt
yerineLong
olarak değiştirildi. Tür, doğalLong
türü olmayan platformlarda bu türünInt
veya başka bir tür olmasını sağlamak için beklenen/gerçek olarak ayarlanmıştır. JavaScript gibi doğal birLong
'si olmayan platformlar, yaklaşık 24 günde birInt
için taşmaya neden olan yüksek kare hızlarından (1.000 FPS'den fazla) kaçınmalıdır. (I38ac3, b/374821679)
Hata Düzeltmeleri
- Tek bir
provides
içinprovidesDefault
düzeltildi. (aosp/3318540 b/374263387) ChangeList
dosyasını optimize edin. (3318538)
Sürüm 1.8.0-alpha05
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05
yayınlanır. 1.8.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Int.MAX_VALUE
değeriniSnapshotIdSet
değerine ekleyerek yığın taşmasını düzeltin. (b/370536104, Ic4179f6)- Çalışma zamanı mikro optimizasyonları (I50c60)
- R8'in hata ayıklama runtimeCheck çağrılarını kaldırmasına izin verme (I8c44)
compoundKeyOf
işlevini iteratif yerine yinelemeli yapın (I5817f)
Harici Katkı
- Koleksiyon listeleriyle grupları uygulama (I7d47c)
Sürüm 1.8.0-alpha04
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04
yayınlanır. 1.8.0-alpha04 sürümü bu taahhütleri içerir.
Performans İyileştirmeleri
- Oluşturucuda durum kayıtları için anlık görüntü kimliği sağlayın (85c00f)
- Sınıf doğrulama hatalarını önlemek için
SnapshotState***
'ü yeniden yapılandırın (6ee4a6) - R8 kurallarını, throw satır içi yerleştirmesini önlemek için düzeltin (5beb92)
- İşlemleri mikro optimize etme (d73c5c)
- JVM'de
SynchronizedObject
tahsislerini optimize etme (2b043f)
Sürüm 1.8.0-alpha03
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03
yayınlanır. 1.8.0-alpha03 sürümü bu taahhütleri içerir.
Performans İyileştirmeleri
rememberCoroutineScope
(f61464) için çocuk bağlamı yavaşça oluşturmarememberCoroutineScope
, genellikle derleme sonrası gerçekleşen etkinliklere yanıt olarak coroutine'leri başlatmak için kullanılır. Bazı durumlarda bu etkinlikler hiç gerçekleşmeyebilir. Bu da herhangi bir avantajı olmayan iş oluşturma ve iptal etme maliyetlerinin artmasına neden olur.rememberCoroutineScope
tarafından döndürülen kapsamın, erişildiğindecoroutineContext
'unu yavaşça oluşturmasını sağlayın. Böylece, kapsam hiç kullanılmazsa iş oluşturma ve iptal etme işlemlerinin tamamı önlenir.
Sürüm 1.8.0-alpha02
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02
yayınlanır. 1.8.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Oluşturma sırasında duraklatılabilen ve bileşime eşzamansız olarak uygulanabilen bir alt bileşim oluşturmaya olanak tanıyan
PausableComposition
eklendi. Duraklatma için derleyici desteği gerekir. Bu özellik şu anda geliştirilmektedir. (I3394b)
Sürüm 1.8.0-alpha01
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01
yayınlanır. 1.8.0-alpha01 sürümü bu taahhütleri içerir.
1.7 sürümü
Sürüm 1.7.5
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.5
yayınlanır. 1.7.5 sürümü bu taahhütleri içerir.
Sürüm 1.7.4
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.4
yayınlanır. 1.7.4 sürümü bu taahhütleri içerir.
Sürüm 1.7.3
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.3
yayınlanır. 1.7.3 sürümü bu taahhütleri içerir.
1.7.2 sürümü
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.2
yayınlanır. 1.7.2 sürümü bu taahhütleri içerir.
1.7.1 sürümü
10 Eylül 2024
- Android yapılarında değişiklik yapılmamıştır.
-desktop
yapı kaldırıldı ve-jvmStubs
ile-linuxx64Stubs
yapıları eklendi. Bu hedeflerin hiçbiri kullanılmak için tasarlanmamıştır. Bunlar, Jetbrains Compose çalışmalarına yardımcı olan yer tutuculardır.
1.7.0 sürümü
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.0
yayınlanır. 1.7.0 sürümü bu taahhütleri içerir.
1.6.0 sürümünden bu yana yapılan önemli değişiklikler
- Varsayılan olarak
compositionLocalWithComputedDefault()
kullanılarak veyaprovides
yerineprovidesComputed
kullanılarak değeri hesaplamak için kullanılacak bir lambda sağlayarak diğer kompozisyon yerellerinin değerlerine göre hesaplanan bir kompozisyon yereli sağlama özelliği eklendi. - Yerel bir bileşimin değeri, değeri hesaplayan lambda içinden erişilebilen yerel bileşimin
currentValue
özelliği kullanılarak elde edilebilir. Yalnızca@Composable
işlevlerinde erişilebilencurrent
yerine kullanılır. (Iadbc0) - Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü dahil diğer anlık görüntülerden hemen erişilebilir. Nesnenin oluşturulduğu anlık görüntü uygulanana kadar sonraki tüm değişiklikler görünmez.
mutableStateOf()
'ün ilk durumu ve ilkel sürümleri,mutableStateOf()
'e parametre olarak iletilen değerdir.mutableStateListOf()
vemutableStateMapOf()
'un başlangıç durumu boştur.- Bir durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilmesini 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ı izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
- Kitaplık oluşturmak için
nonSkippingGroupOptimization
'ü etkinleştirin. Bu, androidx'deki yeniden başlatılamayan tüm derlenebilir 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) - Aynı karedeki alt kompozisyonlardaki birleştirilebilir lambdaları geçersiz kılar. (98301c)
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)- Güçlü atlama modunu etkinleştirme (ed1766)
currentCompoundHashKey
değerini daha fazla durumda benzersiz hale getirme (d4a872)
Sürüm 1.7.0-rc01
21 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01
yayınlanır. 1.7.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta07
7 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
yayınlanır. 1.7.0-beta07 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta06
24 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06
yayınlanır. 1.7.0-beta06 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta05
10 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05
yayınlanır. 1.7.0-beta05 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta04
26 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04
yayınlanır. 1.7.0-beta04 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta03
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03
yayınlanır. 1.7.0-beta03 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta02
29 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02
yayınlanır. 1.7.0-beta02 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-beta01
14 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01
yayınlanır. 1.7.0-beta01 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-alpha08
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08
yayınlanır. 1.7.0-alpha08 sürümü bu taahhütleri içerir.
Sürüm 1.7.0-alpha07
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07
yayınlanır. 1.7.0-alpha07 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Varsayılan olarak
compositionLocalWithComputedDefault()
kullanılarak veyaprovides
yerineprovidesComputed
kullanılarak değeri hesaplamak için kullanılacak bir lambda sağlayarak diğer kompozisyon yerellerinin değerlerine göre hesaplanan bir kompozisyon yereli sağlama özelliği eklendi. - Yerel bir bileşimin değeri, değeri hesaplayan lambda içinden erişilebilen yerel bileşimin
currentValue
özelliği kullanılarak elde edilebilir. Yalnızca@Composable
işlevlerinde erişilebilencurrent
yerine kullanılır. (Iadbc0)
API Değişiklikleri
- Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü dahil diğer anlık görüntülerden hemen erişilebilir. Nesnenin oluşturulduğu anlık görüntü uygulanana kadar sonraki tüm değişiklikler görünmez.
mutableStateOf()
'ün ilk durumu ve ilkel sürümleri,mutableStateOf()
'e parametre olarak iletilen değerdir.mutableStateListOf()
vemutableStateMapOf()
'un başlangıç durumu boştur.- Bir durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilmesini 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ı izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
Hata Düzeltmeleri
- İç içe yerleştirilmiş anlık görüntülerde
readObserver
'ün birleştirilmesi düzeltildi. Bu durum, iç içe yerleştirilmiş türetilmiş durumlarınsnapshotFlow
içinde kullanıldığında yeterince geçersiz kılınmasına neden oldu. (Idf138)
Sürüm 1.7.0-alpha06
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06
yayınlanır. 1.7.0-alpha06 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
providesDefault
(538f45) ile ilgili tek değer sağlama sorunu düzeltildi- Yeniden derleyicinin kare saatine erişirken kilitlenmeyi önleme (07e5c6)
Sürüm 1.7.0-alpha05
20 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
yayınlanır. 1.7.0-alpha05 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Devre dışı bırakılan bestedeki geç değişiklikleri temizleme (5950bc)
Sürüm 1.7.0-alpha04
6 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
yayınlanır. 1.7.0-alpha04 sürümü bu taahhütleri içerir.
Performans İyileştirmeleri
- Türetilmiş durum değerlendirmesi başına bir kez
Snapshot.current
çağrısı (ee7daf) - Bileşimde her gözlem için bir kez
currentRecord
'ü okuma (b882b2) snapshotFlow
(231e56) dosyasında yanlışlıkla iteratör ayırma işlemini kaldırma- Kitaplık oluşturmak için
nonSkippingGroupOptimization
'ü etkinleştirin. Bu, androidx'deki yeniden başlatılamayan tüm derlenebilir 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ınlanır. 1.7.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Değişiklikleri algılamayı iyileştirmek için grupları değiştirme özelliğini kullanıma sunma (0941b5)
Performans İyileştirmeleri
- Değişiklikleri algılarken bellek tahsisini iyileştirme (53e7fd)
- Oluşturucudaki bellek sızıntısı düzeltildi (0e097d)
- Yeniden derleme sırasında geçersiz kılma işlemlerini iletmek için
ScopeMap
kullanın (e19a7e) - Yalnızca türetilmiş durumları tutacak şekilde geçersiz kılma haritasını optimize edin (f11c44)
IdentityArraySet
kullanımlarınıScatterSet
ile değiştirme (db572e)ScopeMap
'daremoveScope
'ü optimize edin (bb0530)
Sürüm 1.7.0-alpha02
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
yayınlanır. 1.7.0-alpha02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Aynı karedeki alt kompozisyonlardaki birleştirilebilir lambdaları geçersiz kılar. (98301c)
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)snapshotFlow
'te gözlemlenmeyen, değiştirilmiş durumları filtreleyin. (796b80)
Performans İyileştirmeleri
- Halihazırda şeffafken anlık görüntü gözlemcisini yerinde değiştirme. (f60f30)
SnapshotIdSet.lowest()
dosyasını optimize edin. (7ae149)SnapshotIdSet
uygulamasında, tahsissiz birfold()
kullanın. (532b7d)- Döngüleyici ayırma işlemini kaldırın (83f96b)
Sürüm 1.7.0-alpha01
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
yayınlanır. 1.7.0-alpha01 sürümü bu taahhütleri içerir.
Performans Optimizasyonları
- Bir alt grup eklendikten sonra slot 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
- Doğal hatırlama özelliğinde varsayılan parametre meta verilerini hesaba katın (096665)
currentCompoundHashKey
değerini daha fazla durumda benzersiz hale getirme (d4a872)- Satır içi işlev çağrısından çıkarken grupları gerçekleştirme (2a90fc)
1.6 sürümü
1.6.8 sürümü
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.6.8
yayınlanır. 1.6.8 sürümü bu taahhütleri içerir.
1.6.7 sürümü
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.6.7
yayınlanır. 1.6.7 sürümü bu taahhütleri içerir.
1.6.6 sürümü
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.6
yayınlanır. Son sürümden bu yana değişiklik yok.
1.6.5 sürümü
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.5
yayınlanır. 1.6.5 sürümü bu taahhütleri içerir.
1.6.4 sürümü
20 Mart 2024
androidx.compose.runtime:runtime-*:1.6.4
yayınlanır. 1.6.4 sürümü bu taahhütleri içerir.
Sürüm 1.6.3
6 Mart 2024
androidx.compose.runtime:runtime-*:1.6.3
yayınlanır. 1.6.3 sürümü bu taahhütleri içerir.
Sürüm 1.6.2
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.2
yayınlanır. 1.6.2 sürümü bu taahhütleri içerir.
1.6.1 sürümü
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.1
yayınlanır. 1.6.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)snapshotFlow
'te gözlemlenmeyen, değiştirilmiş durumları filtreleyin. (796b80)
1.6.0 sürümü
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0
yayınlanır. 1.6.0 sürümü bu taahhütleri içerir.
1.5.0 sürümünden beri yapılan önemli değişiklikler
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında atlanan istisnaları yeniden atma (4dff9a)
Performans Optimizasyonları
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
rememberSaveable
'ü optimize edin (f01d79)- Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)
- Kompozisyon yerel değerlerini sağlama özelliğini iyileştirme (a337ea)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
- Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
RememberObserver
yaşam döngülerini yalnızca hatırlama hesaplamasında depolandığında tetikleyin. (f6b4dc)$dirty
yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)- Bazen yanlış yerel kompozisyon alan hareketli içeriği düzeltme (035cd6)
Sürüm 1.6.0-rc01
10 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
yayınlanır. 1.6.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 1.6.0-beta03
13 Aralık 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
yayınlanır. 1.6.0-beta03 sürümü bu taahhütleri içerir.
Sürüm 1.6.0-beta02
29 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
yayınlanır. 1.6.0-beta02 sürümü bu taahhütleri içerir.
Sürüm 1.6.0-beta01
15 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01
yayınlanır. 1.6.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Ek açıklamada belirli kararlılık değerlerini iletin. (274a4c)
Hata Düzeltmeleri
- Bağlamda kompozisyon yerel kapsam durumu için referans politikası kullanın. (83361c)
- $dirty yakalamasını satır içi lambda'larla kısıtlayın. (acfca0)
- Bazen yanlış yerel kompozisyon alan hareketli içeriği düzeltme (035cd6)
RecomposeScopeImpl
'te daha hızlı, yer ayırmayan karma haritalar kullanın. (d79494)DerivedState
uygulamasındaObjectIntMap
hesabını kullanın. (21862e)DerivedState
uygulamasında intSnapshotThreadLocal
içinIntRef
kullanın. (04eaf4)
Sürüm 1.6.0-alpha08
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08
yayınlanır. 1.6.0-alpha08 sürümü bu taahhütleri 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 atamaların iyileştirilmesi. (954d63)
SnapshotStateObserver
içinde yeni, alan ataması yapmayan haritalar kullanın. (4303ce)- Beste devre dışı bırakıldığında geçersiz kılma işlemlerini temizleyin. (e001be)
Sürüm 1.6.0-alpha07
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
yayınlanır. 1.6.0-alpha07 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Liste yardımcılarının doğrudan dizine ekleme sürümünün kullanılabilmesi için
SnapshotStateList
artıkRandomAccess
olarak işaretlenmiştir. (I5210c, b/219554654)
Sürüm 1.6.0-alpha06
20 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
yayınlanır. 1.6.0-alpha06 sürümü bu taahhütleri içerir.
Sürüm 1.6.0-alpha05
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
yayınlanır. 1.6.0-alpha05 sürümü bu taahhütleri içerir.
Sürüm 1.6.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
yayınlanır. 1.6.0-alpha04 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında atlanan istisnaları yeniden atma (4dff9a)
API Değişiklikleri
ReusableComposition
'ü devre dışı bırakmak için gözlemleri kaldıran ancak düğümleri yerinde tutan bir yöntem eklendi. Devre dışı bırakılan kompozisyon,setContent
numarası aranarak tekrar etkinleştirilebilir. (Ib7f31)- Alt kompozisyonların 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ınlanır. 1.6.0-alpha03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Yeni
CompositionLocalProvider
optimizasyonunu düzeltme (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ınlanır. 1.6.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler ve Performans İyileştirmeleri
rememberSaveable
'ü optimize edin (f01d79)- Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)
- Kompozisyon yerel değerlerini sağlama özelliğini iyileştirme (a337ea)
- Grup oluşturulmaması için
SideEffect
,@ExplicitGroupsComposable
olarak işaretlenir. (I74815) - Yeniden kullanımda kompozisyon yerel haritalarını karşılaştırmaktan kaçının (782071)
API Değişiklikleri
CompositionLocalProviders
için birden fazla değeri daha hızlı sağlamak için kullanılan ancak tek bir değer sağlarken ek yük oluşturan yükü önleyen özel bir durum aşırı yüklemesi eklendi. (I6d640, b/288169379)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
stateSaver
null döndürdüğünderememberSaveable
değerini geri yükleme yöntemini düzeltme (90748c)
Sürüm 1.6.0-alpha01
21 Haziran 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01
yayınlanır. 1.6.0-alpha01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
- Anlık görüntüler uygulanırken azaltılmış tahsisler. (I65c09)
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
değerini hesaplamaktan 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ınlanır. 1.5.4 sürümü bu taahhütleri içerir.
Sürüm 1.5.3
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.3
yayınlanır. 1.5.3 sürümü bu taahhütleri içerir.
Sürüm 1.5.2
27 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.2
yayınlanır. 1.5.2 sürümü bu taahhütleri içerir.
Sürüm 1.5.1
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.1
yayınlanır. 1.5.1 sürümü bu taahhütleri içerir.
1.5.0 sürümü
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.5.0
yayınlanır. 1.5.0 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
'teki ayırmalar kaldırıldı. (Ib2bfa) - Durum oluşturan ve
remember
çağrısına sarmalanması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklama eklendi. (I64550) - Durum ve
MutableState
'ün ilkel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPending
(I672a5) eklendiState
API'nin ilkel sürümleri eklendi. Bu sürümler, Int, Long, Float ve Double değerlerinin otomatik kutuya yerleştirme cezaları almadanState
nesnelerinde izlenmesine olanak tanır. Bunları kullanmak için yeni fabrika yöntemlerini (mutableIntState(Int)
,mutableFloatStateOf(Float)
vb.) kullanın. (I48e43)
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
ComposerImpl
'te anlık görüntü referansını saklama (0206f7)- Bileşimi iki kez uygulamayın (f5791b)
- İlkleştirilmemiş türetilmiş durum değerlerinin geçersiz kılındığından emin olun (aa2a92)
- Bestenin kullanımdan kaldırılması sırasında
onEndChanges
çağrısı. (62cc8c) - İçerikleri alt kompozisyona taşıma sorunu düzeltildi (4beb41)
- Olası kilitlenme sorunlarını düzeltme (c1a425 ve 8edce0)
- Android penceresi için oluşturulan yeniden derleyici, ON_STOP bildirimi aldığında artık tüm derleme yerine yalnızca
withFrameNanos
adresine yapılan çağrıları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği ancak animasyonlar veyawithFrameNanos
'yi çağıran diğer tüm öğelerin engelleneceği anlamına gelir. (Id9e7f, b/240975572) - Etkileri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütme 3784073 - Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme ea81df9
- Düğüm içeren Composable için canlı düzenleme gerileme sorununu düzeltme 73fd4d8
- ON_STOP, ae276f1 kompozisyonu yerine çerçeve saati yayınlarını duraklatmalıdır
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserver
kapsamlarını geçersiz kıl 84d9b1c - Kompozisyonları bertaraf ederken olası kilitlenme sorununu düzeltme 28761fc
- İçeriklerin alt kompozisyona taşınması sorununu düzeltme 92d4156
- Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme (8a03e9)
- Etkileri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırma işlevlerini yürütme (8b0fa4) - Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltme (d71d980) - Devre dışı bırakma işlemini kontrol etmek için mevcut
SlotWriter
grubunu kullanın (a0b518b) SlotTable.moveSlotGapTo()
içindekifill
'ü kaldırın ve kapat'a taşıyın (81f9935)- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik olması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içerikler için anında geçersiz kılma işlemlerini düzeltme (8676618)
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
değerini hesaplamaktan kaçının. (307102) - Azaltılmış tahsisler (I65c09, d7ea77, 727974 ve 445808)
CoroutineScopes
oluşturma işleminin hızlı iptali (a55362 ve bd382f)- Durum nesnelerinin kayıtlarının erişilemeyen durum kayıtlarıyla üzerine yazma (c986960)
- Grupları oluştururken doğru kapsamda bir derleyici kullanın (9a5e5b6)
- Anlık görüntü geçersiz kılma işlemlerini depolamak için
IdentityArraySet
kullanın (7f60cca) - Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
yayınlanır. 1.5.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)
mutableStateOf()
çağrılarının, ilkellere karşılık gelen özel türlerine taşınmasını önermek için isteğe bağlı bir denetim mevcuttur. Dil bilgisi denetimi kimliğiAutoboxingStateCreation
. Daha önce bu inceleme tüm projeler için varsayılan olarak etkinleştiriliyordu. Bu uyarıyı Android Studio'nun düzenleyicide ve projenizin lint çıkışlarında görmek için önem derecesini bilgilendirme olarak ayarlayarak uyarı (veya daha yüksek) olarak değiştirin. Bunun için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında gösterildiği gibiwarning "AutoboxingStateCreation"
değerini belirtin (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Sürüm 1.5.0-beta03
28 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03
yayınlanır. 1.5.0-beta03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
Sürüm 1.5.0-beta02
7 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
yayınlanır. 1.5.0-beta02 sürümü bu taahhütleri içerir.
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
DerivedState
içindereadableHash
değerini 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ınlanır. 1.5.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonlarında ve
AndroidComposeView
(Ib2bfa) öğesinde ayrıştırmalar kaldırıldı - Durum oluşturan ve
remember
çağrısına sarmalanması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklama eklendi. (I64550) - Durum ve
MutableState
'ün ilkel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPending
(I672a5) eklendi
Hata Düzeltmeleri
- Azaltılmış tahsisler (I65c09, d7ea77, 727974 ve 445808)
ComposerImpl
'te anlık görüntü referansını saklama (0206f7)CoroutineScopes
oluşturma işleminin hızlı iptali (a55362 ve bd382f)- Bileşimi iki kez uygulamayın (f5791b)
- İlkleştirilmemiş türetilmiş durum değerlerinin geçersiz kılındığından emin olun (aa2a92)
- Bestenin kullanımdan kaldırılması sırasında
onEndChanges
çağrısı. (62cc8c) - İçerikleri alt kompozisyona taşıma sorunu düzeltildi (4beb41)
- Olası kilitlenme sorunlarını düzeltme (c1a425
- ON_STOP, kompozisyon yerine kare saati yayınlarını duraklatmalıdır (f4a2d1)
- Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme (8a03e9)
- Etkileri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırma işlevlerini yürütme (8b0fa4)
Harici Katkı
Snapshot.isApplyObserverNotificationPending
(I672a5) eklendi
Sürüm 1.5.0-alpha04
10 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
yayınlanır. 1.5.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
State
API'nin ilkel sürümleri eklendi. Bu sürümler, Int, Long, Float ve Double değerlerinin otomatik kutuya yerleştirme cezaları almadanState
nesnelerinde izlenmesine olanak tanır. Bunları kullanmak için yeni fabrika yöntemlerini (mutableIntState(Int)
,mutableFloatStateOf(Float)
vb.) kullanın. (I48e43)
Hata Düzeltmeleri
Bestenin kullanımdan kaldırılması sırasında
onEndChanges
çağrısı.Composition.dispose
sırasında kaldırılan odak düğümleri, odağı sıfırlamak içinonEndChanges
'a abone oluyor.(03d4a47)Başlatılmamış türetilmiş durum değerlerinin geçersiz kılındığından emin olun. Her türetilmiş durum,
SnapshotStateObserver
içindeki bağımlılıklarının listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilmiş durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, anlık görüntü ilerleme sırasında kaydedilir. Bu durum, türetilmiş durum okunduktan sonra (Snapshot.notifyObjectsInitialized()
çağrısı nedeniyle) gerçekleşebilir.SnapshotStateObserver
'teki önceki türetilmiş durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değeri okuyordu. Bu durum, bağımlılık geçersizliğinin kaydedilmediği temizlenmiş bir durumda geçersizleştirmenin gerçekleştiği bir yarış durumuna neden oldu.Bu değişiklik, türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralar. Böylece, geçersiz kılma işleminin her zaman geçerli bir durumda gerçekleşmesi sağlanır. (c472be6)
Sürüm 1.5.0-alpha03
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
yayınlanır. 1.5.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Android penceresi için oluşturulan yeniden derleyici, ON_STOP bildirimi aldığında artık tüm derleme yerine yalnızca
withFrameNanos
adresine yapılan çağrıları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği ancak animasyonlar veyawithFrameNanos
'yi çağıran diğer tüm öğelerin engelleneceği anlamına gelir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 5c1a425
- Etkileri kaldırmadan önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütme 3784073 - Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme ea81df9
- Düğüm içeren Composable için canlı düzenleme gerileme sorununu düzeltme 73fd4d8
- ON_STOP, ae276f1 kompozisyonu yerine çerçeve saati yayınlarını duraklatmalıdır
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserver
kapsamlarını geçersiz kıl 84d9b1c - Kompozisyonları bertaraf ederken olası kilitlenme sorununu düzeltme 28761fc
- İçeriklerin alt kompozisyona taşınması sorununu düzeltme 92d4156
Sürüm 1.5.0-alpha02
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02
yayınlanır. 1.5.0-alpha02 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Kotlin'in
getValue
operatörü artık birleştirilebilir (f174f6e)
Hata Düzeltmeleri, Performans İyileştirmeleri
- Durum nesnelerinin kayıtlarının erişilemeyen durum kayıtlarıyla üzerine yazma (c986960)
- Grupları oluştururken doğru kapsamda bir derleyici kullanın (9a5e5b6)
- Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltme (d71d980) - Devre dışı bırakma işlemini kontrol etmek için mevcut
SlotWriter
grubunu kullanın (a0b518b) - Anlık görüntü geçersiz kılma işlemlerini depolamak için
IdentityArraySet
kullanın (7f60cca) SlotTable.moveSlotGapTo()
içindekifill
'ü kaldırın ve kapat'a taşıyın (81f9935)- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik olması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içerikler için anında geçersiz kılma işlemlerini düzeltme (8676618)
- Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
yayınlanır. 1.5.0-alpha01 sürümü bu taahhütleri içerir.
Yeni Özellikler
Modifier.Nodes
'un iş parçacığı başlatmasına izin vermek içinModifier.Node#coroutineScope
ekler (I76ef9)CompositionLocalConsumerModifierNode
arayüzünü uygulayarakModifier.Nodes
'ü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
, herhangi bir değişiklik yapılmadan yayınlanır.
1.4.2 sürümü
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.2
yayınlanır. 1.4.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 2eb6570
Değişiklik, durum kaydına doğrudan yazma işlemiyle eşzamanlıysa
SnapshotStateList
veyaSnapshotStateMap
'e içerik eklerken kilitlenmeyle karşılaşabilirsiniz. Bu sorun, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma işlemlerini kullanan 93fcae828b tarafından sunulan değişikliklerle karşılaşma olasılığını önemli ölçüde artırdı.Kilitler artık bir harita veya liste kilidi uygulanırken hiçbir zaman anlık görüntü kilidi almaya çalışmayacak şekilde düzenlenmiştir.
Sürüm 1.4.1
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.1
yayınlanır. 1.4.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Düğüm gruplarını sonlandırırken
endToMarker()
sorununu düzeltme. d71d980
1.4.0 sürümü
22 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0
yayınlanır. 1.4.0 sürümü bu taahhütleri içerir.
1.3.0 sürümünden bu yana yapılan önemli değişiklikler
- İlk kompozisyon için
LiveData
öğesindeki başlatılmış değeri kullanın 3680e25 - Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallback
ekleyin. 8b6a258 parameterTypes
mülkünüComposableMethod
'e ekleme 7b6c7ad
Hata Düzeltmeleri ve Performans İyileştirmeleri
SnapshotStateObserver
29f4a3e içindeki her iki kapsam diznini de temizleyin- Atlanabilir olmayan lambdaların gövdesine gereken grupları ekleyin 7d06752
- Anlık görüntü durumunun 93fcae8 bellek referans özelliklerini iyileştirme
- Kompozisyon yerel aramalarında kutuyu kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın 6388d8d
SnapshotStateObserver
değerini yinelenen ve eşzamanlı geçerliliklerden koruma 98cb6baIdentityArraySet
"get" yöntemine bir check-index-bounds kontrolü eklendi 35a77d3- Oluşturma modülünü
ViewTreeLifecycleOwner
uzantılarını kullanacak şekilde güncelleme 21c2122 - Yeniden oluşturucu kareyi tamamladıktan sonra uygulama bildirimlerini gönderin. 98f2641
- Yeniden derleyiciyi iptal ederken dizin dışı kilitlenme sorununu düzeltme 8f8656f
- Kompozisyonun üst sağlayıcıları değiştiyse her zaman yeniden oluşturmayı zorunlu kıl 9526fcc
- İptal edilen işler için yeniden derleyici toleransı a55f7ed
- Çok sayıda besteci için geçersiz kılma işlemlerini iyileştirme 9b7ed67
- Yerel olmayan iadeler için kapanış grupları oluşturma sorununu düzeltme b6f590c
Sürüm 1.4.0-rc01
8 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01
yayınlanır. 1.4.0-rc01 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Sürüm 1.4.0-beta02
22 Şubat 2023
androidx.compose.runtime:runtime:1.4.0-beta02
ve androidx.compose.runtime:runtime-saveable:1.4.0-beta02
yayınlandı. 1.4.0-beta02 sürümü bu taahhütleri içerir.
Sürüm 1.4.0-beta01
8 Şubat 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01
yayınlanır. 1.4.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
ComposeNodeLifecycleCallback
eklendi. Bu özellik, Compose düğümlerinin yaşam döngüsünü gözlemlemenize olanak tanır (I3731b).- Bu işlevin yalnızca testte çağrılması güvenli olduğundan
@TestOnly
,Composer.disableSourceInformation()
alanına eklendi. (I896c8)
Hata Düzeltmeleri
- Kompozisyon yerel aramalarında kutuyu kaldırma (62f66a)
- Anlık görüntü durumunun bellek referans özelliklerini iyileştirme (dfb451)
Sürüm 1.4.0-alpha05
25 Ocak 2023
androidx.compose.runtime:runtime:1.4.0-alpha05
ve androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
yayınlandı. 1.4.0-alpha05 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Satır içi/desteği sonlandırılmış ve gizli işlevlerin daha fazla türü/boşluk kabul edebileceği durumlar (I24f91)
Sürüm 1.4.0-alpha04
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
yayınlanır. 1.4.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
TestMonotonicFrameClock
artık doğru deneysel notu kullanıyor. (I95c9e)
Hata Düzeltmeleri
SnapshotStateObserver
değerini yinelenen ve eşzamanlı uygulamalardan koruma (d902fb)
Sürüm 1.4.0-alpha03
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
yayınlanır. 1.4.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
ComposableMethod
sınıfınajava.lang.reflect.Method#getParameterTypes()
'a benzer yeni bir herkese açık yöntem ekleme (Iab0c3)
Hata Düzeltmeleri
- Anlık görüntü uygulama bildirimleri artık
Recomposer
değişiklikleri uygulamayı bitirdikten 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ınlanır. 1.4.0-alpha02 sürümü bu taahhütleri içerir.
Sürüm 1.4.0-alpha01
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
yayınlanır. 1.4.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
SnapshotStateList
veSnapshotStateMap
artık sırasıylatoList()
vetoMap()
için açık bir uygulamaya sahip. Bu yöntemler, içeriklerini depolamak için kullanılan dahili değiştirilemez verileri döndürdüğü için kopya oluşturmadan mevcut içeriklerini döndürür. Bu değer, örneğin, verilerin kopyalanmasını gerektirmedensnapshotFlow
kullanarak bir değer akışı oluşturmak için kullanılabilir. (Ica2bd)
Sürüm 1.3
Sürüm 1.3.3
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.3.3
yayınlanır. 1.3.3 sürümü bu taahhütleri içerir.
- 1.3.2'den bu yana değişiklik yok
1.3.2 sürümü
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.3.2
yayınlanır. 1.3.2 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- androidx.compose.ui 1.3.2'yi desteklemek için güncellendi
1.3.1 sürümü
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.3.1
yayınlanır. 1.3.1 sürümü bu taahhütleri içerir.
1.3.0 sürümü
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0
yayınlanır. 1.3.0 sürümü bu taahhütleri içerir.
1.2.0 sürümünden bu yana yapılan önemli değişiklikler
İstisna İşleme / Canlı Düzenleme Desteği
- Canlı düzenlemeyi daha iyi desteklemek için, derleme sırasında istisnaların ele alınmasını sağlayan API'ler eklendi
- Hızlı yeniden yükleme için kompozisyon hatası işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını ele alma
Kompozisyon İzleme
- Yeni kompozisyon 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
Kompozit Yansıtma API'leri
- Derlenebilir API'lerin yansımaya dayalı daha güvenilir çağrılarına olanak tanımak için yeni bir
ComposableMethod
API eklendi. - invokeComposable'ı compose çalışma zamanına taşıma
- API'yi, birleştirilebilir yöntemi çağırmak için yeniden çalışma
Çalışma Zamanı Düzeltmeleri
- İşaretçi olup olmadığını kontrol eden slot tablosu için hatalı aralık testini düzeltme
- Taşınabilir içeriğin SubcomposeLayout içine ve dışına taşınmasına izin verme
- İçeriği alt bileşimin yeni içeriğine taşıma sorununu düzeltme
Anlık Görüntü Sistemi
- Anlık görüntü sistemi, bellek yönetimi, performans ve doğrulukla ilgili çeşitli iyileştirmeler aldı.
- SnapshotStateObserver'da kapsam kaldırma işlemini optimize etme
- Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri kaldırma
- Dünya geneli anlık görüntüden durum okunurken yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState desteği
- Diğer kapsamlarda okunduğunda türetilmiş durumun bileşimden kaldırılmasını önleme
- DerivedState içinde HashMap yerine IdentityArrayMap kullanma
- türetilmiş durum gözlemcilerini, değiştirilebilir vektörü kullanacak şekilde güncelleme
- SnapshotStateObserver durumunu temizleme güncellemesi
- SnapshotStateObserver.invalidated, ArraySet ile değiştirildi
- Dünya geneli anlık görüntüden durum okunurken yarış durumu düzeltildi
- DerivedState karma oluşturma hesaplamasında eski kaydın kullanılması sorununu düzeltme
- Global anlık görüntüyü ilerletirken yarış koşulunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerini temizlemeyi hızlandırma
Sürüm 1.3.0-rc01
5 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
yayınlanır. 1.3.0-rc01 sürümü bu taahhütleri 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ınlanır. 1.3.0-beta03 sürümü bu taahhütleri içerir.
Davranışta Değişiklik Yapan Değişiklik
remember
verememberCoroutineScope
olan parametrecrossinline
olarak değiştirildi. Bu durumda, erken iadeye izin vermek yerine erken iadeyle ilgili bir hata raporlanır. Bu da daha sonra dahili bir hatanın raporlanmasına neden olur.- Bu değişiklik, yerel olmayan dönüşlerin bu işlevlere iletilen lambda'lardan kaldırılmasını gerektiren yeni derleyici hatalarının bildirilmesine neden olabilir. (Ibea62)
Sürüm 1.3.0-beta02
7 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
yayınlanır. 1.3.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Güncellenen API (I64ca0)
Sürüm 1.3.0-beta01
24 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01
yayınlanır. 1.3.0-beta01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Bu API'yi kullanan geliştirici araçlarının, kimliğini kullanarak bir kompozisyon alt grubunu hızlıca bulmasına olanak tanımak için
CompositionData
yöntemiCompositionData
'e eklendi.find
(I5794f)
Sürüm 1.3.0-alpha03
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03
yayınlanır. 1.3.0-alpha03 sürümü bu taahhütleri içerir.
Sürüm 1.3.0-alpha02
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
yayınlanır. 1.3.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Geriye dönük uyumluluk için
ComposerKt.traceEventStart(Int, String)
yeniden eklendi (I6e6de)
Sürüm 1.3.0-alpha01
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
yayınlanır. 1.3.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Hizmet işlevlerinin çalışma zamanına taşınması (I4f729)
Sürüm 1.2
Sürüm 1.2.1
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.2.1
yayınlanır. 1.2.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Sabitlenmiş bellek sızıntısı: Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntülerin kaldırılması b/239603305
Sürüm 1.2.0
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.2.0
yayınlanır. 1.2.0 sürümü bu taahhütleri içerir.
1.1.0
tarihinden beri yapılan önemli değişiklikler
Compose Runtime, 1.2.0 sürümünde birçok kararlılaştırma amaçlı hata düzeltmesinin yanı sıra birkaç özellik de kullanıma sunuldu. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimlerini etkinleştirmek için kullanılabilen
movableContentOf
API'nin kullanıma sunulmasıydı.movableContentOf
API, birleştirilebilir bir lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni bir konuma taşıyan bir lambda'ya dönüştürür. Önceki çağrıdan sonra durum geçici olarak korunur. Lambda'ya yapılan yeni bir çağrı kompozisyona girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni bir çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirilmesi gerekir.Bir
movableContentOf
lambda aynı kompozisyonda birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar kompozisyondan ayrılıp yeni çağrılar girerken durum, çağrıldıkları sırayla ayrılan ilk çağrılardan giren çağrılara taşınır. Yeni aramalar tarafından hak talebinde bulunulmayan tüm eyaletler kalıcı olarak kaldırılır.Bu ve diğer birkaç yeni özelliğe ek olarak, çalışma zamanı ve anlık görüntü durumu sisteminin kararlı hale getirilmesi için çok zaman harcanmıştır. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özet listesini aşağıda bulabilirsiniz:
1.2
'teki Yeni Özellikler
- unsafeEnter/Leave deneysel anlık görüntüsünü ekleme
- Snapshot.asContextElement deneysel API'sini ekleme
- Snapshot.withoutReadObservation özelliğini kullanıma sunuyoruz
- Durumların bir kompozisyon içinde taşınmasına izin verme
- Oluşturma'da yeniden derlemelerin izlenmesi
1.2
'daki performans
- Kompozisyonun yerel performansını artırma
- Oluşturma için referans profiller, karşılaştırmalar kullanılarak türetilmelidir
1.2
sürümündeki hata düzeltmeleri
- Sürüm yeniden derleme kapsamlarından izleme bilgilerini kaldırma
- Diğer kapsamlarda okunduğunda türetilmiş durumun bileşimden kaldırılmasını önleme
- SnapshotStateObserver'da daha verimli removeScope() kullanma
- Bestedeki türetilmiş durum bağımlılıkları temizleme
- MevcutCompositeKeyHash'in, taşınabilir içerik içinde iç yeniden derleme işleminden sonra değişmesi sorunu düzeltildi
- Geçersiz hale gelen kompozisyonları kaldırma
- Yeniden oluşturma sırasında türetilmiş durumun okunması sorunu düzeltildi
- türetilmiş durum nesnelerini gözlemlerken bellek sızıntısını düzeltme
- movableContent karma anahtarı tutarlı olacak şekilde düzeltildi
- Komponörün kilitlendiği bir durumu düzeltme
- Bir grubun zorunlu olarak geçersiz kılınmasının yeniden oluşturmayı zorunlu kılmasını sağlama
- Giriş içeren rememberSaveable özelliği yanlış sırada geri yüklendiğinde oluşan hata düzeltildi
Sürüm 1.2.0-rc03
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
yayınlanır. 1.2.0-rc03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Türetilmiş durum gözlemleri daha önce koşulsuz olarak yeniden oluşturma kapsamından ve bileşimden birlikte kaldırılıyordu. Bu da, türetilmiş durumu hâlâ gözlemleyen diğer kapsamları bozuyordu. 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ınlanır. 1.2.0-rc02 sürümü bu taahhütleri içerir.
Sürüm 1.2.0-rc01
15 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01
yayınlanır. 1.2.0-rc01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Oluşturma kitaplarındaki arayüzler artık jdk8 varsayılan arayüz yöntemleri (I5bcf1) kullanılarak oluşturuluyor
Sürüm 1.2.0-beta03
1 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
yayınlanır. 1.2.0-beta03 sürümü bu taahhütleri içerir.
Sürüm 1.2.0-beta02
18 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02
yayınlanır. 1.2.0-beta02 sürümü bu taahhütleri içerir.
Sürüm 1.2.0-beta01
11 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01
yayınlanır. 1.2.0-beta01 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Bu, 1.2 sürümünün ilk beta sürümüdür.
API Değişiklikleri
- Deneysel
Snapshot.unsafeEnter/unsafeLeave
(I108f3) eklendi - Deneysel
Snapshot.asContextElement()
API (Iff072) eklendi @ComposableTarget
ek açıklaması ve@ComposableTargetMarker
ile işaretlenmiş ek açıklamalar artık@file
ön ekiyle dosya kapsamında kullanılabilir. Dosya kapsamında bir hedef ek açıklaması kullanmak, derleyicinin dosyada bulunan tüm birleştirilebilir işlevlerin ilişkili uygulayıcıyı hedeflemeyi amaçladığını varsaymasına neden olur. Örneğin,@file:UiComposable
kullanıldığında tüm@Composable
işlevlerinin Oluştur kullanıcı arayüzü uygulayıcısını hedeflediği belirtilir. Başka bir uygulayıcının hedeflenmesi 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ınlanır. 1.2.0-alpha08 sürümü bu taahhütleri içerir.
API Değişiklikleri
CompositionTracer
arayüzüneTracingInProgress
eklendi. (Ic6f12)- Composer'a
recomposeScopeIdentity
ekleme (I0c873) OptIn(InternalComposeTracingApi)
için izleme API'lerini (Composer.setTracer) kısıtladı. (I9187f)- Yeniden kullanılabilir içerikler için oluşturulan durumun ömrü üzerinde daha iyi kontrol sahibi olmanızı sağlayan
ResuableContentHost
özelliği eklendi. Örneğin, bir alt kompozisyon geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, kompozisyondaki tüm hatırlanan durum unutulur ve örneğin tüm tek kullanımlık efektler tetiklenir. (I2c0f2, b/220322704)
Sürüm 1.2.0-alpha07
6 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
yayınlanır. 1.2.0-alpha07 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Yeni
Snapshot.withoutReadObservation { ... }
işlevi eklendi. Kullanıcıların, bu blok sırasında okunan durum değerlerinin değişikliklerine abone olmadan iletilen lambda işlevini çalıştırmasına olanak tanır. Bu yöntem, anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak ancak gereksiz yeniden oluşturma veya yeniden ölçme işlemlerine neden olmadan değeri okumak istediğiniz kullanım alanlarında faydalı olabilir. (I9f365, b/214054486)
Sürüm 1.2.0-alpha06
23 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
yayınlanır. 1.2.0-alpha06 sürümü bu taahhütleri içerir.
Sürüm 1.2.0-alpha05
9 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
yayınlanır. 1.2.0-alpha05 sürümü bu taahhütleri içerir.
Harici Katkı
- Kotlinx coroutines 1.6.0 (I3366d) sürümünü kullanacak şekilde güncellendi
Sürüm 1.2.0-alpha04
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04
yayınlanır. 1.2.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
Bir birleştirilebilir işlevin, kullanılmak üzere tasarlanmadığı bir uygulayıcı hedeflendiğinde derleme zamanında raporlanmasına olanak tanıyan
ComposableTarget
,ComposableTargetMarker
veComposableOpenTarget
eklendi.Çoğu durumda ek açıklamaları, derleyici eklentisi tarafından çıkarılabilir. Bu nedenle, bu ek açıklamaları doğrudan kullanmak nadir bir durumdur. Özel bir uygulayıcı oluşturma ve kullanma, soyut birleştirilebilir işlevler (arayüz yöntemleri gibi), birleştirilebilir lambda olan alanlar veya global değişkenler (yerel değişkenler ve parametreler çıkarılır) veya
ComposeNode
ya da ilgili birleştirilebilir işlevler kullanıldığında çıkarım yapılamaz.Özel uygulayıcılar için
ComposeNode
veyaReusableComposeNode
'yi çağıran birleştirilebilir işlevlerin, işlev ve tüm birleştirilebilir lambda parametresi türleri için birCompoableTarget
ek açıklaması eklemesi gerekir. Bununla birlikte,ComposableTargetMarker
ile ek açıklama içeren bir ek açıklama oluşturmanız ve ardından doğrudanComposableTarget
yerine işaretlenmiş ek açıklamayı kullanmanız önerilir.ComposableTargetMarker
ile işaretlenmiş bir birleştirilebilir ek açıklama, uygulayıcı parametresi olarak özellik sınıfının tam nitelikli adının yer aldığı birComposbleTarget
ile eşdeğerdir.ComposableTargetMarker
kullanımıyla ilgili bir örnek içinanroidx.compose.ui.UiComposable
bölümüne bakın. (I38f11)
Sürüm 1.2.0-alpha03
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03
yayınlanır. 1.2.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
Bir birleştirilebilir lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştüren
movableContentOf
eklendi. Önceki çağrı kompozisyondan çıktığında durum geçici olarak korunur ve lambda için yeni bir çağrı kompozisyona girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni bir çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.Bir
movableContentOf
lambda aynı kompozisyonda birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur ve çağrılar kompozisyondan çıkarken ve yeni çağrılar girerken durum, çağrıldıkları sırayla ilk ayrılan çağrılardan giren çağrılara taşınır. Yeni aramalar tarafından hak talebinde bulunulmayan tüm eyaletler kalıcı olarak kaldırılır. (Ib4850)Araçların, birleştirilebilir işlevlerin daha ayrıntılı izlemesini sağlaması için kompozisyona bir izleme API'si eklendi. Derleyici artık kaynak bilgileri içeren izleme API'sine çağrılar oluşturur. (Ib0eb5)
Bu çağrıları ve ilişkili kaynak bilgilerini bir sürüm derlemesinden kaldırmak için aşağıdaki Proguard kuralını ekleyin:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
Araçlara yeniden derleme sırasında bir bileşeni tanımlama olanağı veren
InternalComposeScope
öğesini ekleyin. (I07a3f)
Sürüm 1.2.0-alpha02
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
yayınlanır. 1.2.0-alpha02 sürümü bu taahhütleri içerir.
Sürüm 1.2.0-alpha01
12 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01
yayınlanır. 1.2.0-alpha01 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Layout Inspector'da değişmeyen kimlikler oluşturmak için
CompositionData
alanınaidentity
alanı eklendi. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10
sürümüne bağlıdır.
Sürüm 1.1
1.1.1 sürümü
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.1
yayınlanır. 1.1.1 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
adresindekiNullPointerException
sorununu düzeltin (aosp/1947059, b/206677462)- Android'de panodan okunurken pano içeriğinden kaynaklanan kilitlenme düzeltildi. (I06020, b/197769306)
LazyVerticalGrid
'te RTL düzeltildi (aosp/1931080, b/207510535)
1.1.0 sürümü
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0
yayınlanır. 1.1.0 sürümü bu taahhütleri içerir.
1.0.0 sürümünden bu yana yapılan önemli değişiklikler
- Android 12 aşırı kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmasında iyileştirmeler
- Compose 1.0 ile ilgili olarak, Materyal bileşenlerinin dokunma hedefi boyutu için Materyal erişilebilirlik yönergelerini karşılamak üzere düzen alanlarını genişleteceğini unutmayın. Örneğin, düğmenin boyutunu daha küçük olarak ayarlasanız bile düğme dokunma hedefi
48x48dp
minimum boyutuna genişler. Bu sayede, Görünümler ve Oluşturma'yı birlikte kullandığınızda tutarlı bir davranış elde edersiniz. Bu değişiklik, kullanıcı arayüzünüzü Compose Material bileşenlerini kullanarak oluşturduğunuzda dokunma hedefi erişilebilirliğiyle ilgili minimum şartların karşılanmasını da sağlar. - Gezinme çubuğu için kararlı destek
- Daha önce deneysel olan bazı API'leri kararlı sürüme geçiriyor
- 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ınlanır. 1.1.0-rc03 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- İçerik Oluşturma'yı
1.1.0-rc03
desteklemek için güncellendi
Sürüm 1.1.0-rc01
15 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01
yayınlanır. 1.1.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-beta04
1 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
yayınlanır. 1.1.0-beta04 sürümü bu taahhütleri 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ınlanır. 1.1.0-beta03 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-beta02
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
yayınlanır. 1.1.0-beta02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Anlık görüntü kodu birden fazla dosyaya bölünmüş olsa da tüm kodlar aynı JVM sınıfında bulunur. (Ic6c98)
Sürüm 1.1.0-beta01
27 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
yayınlanır. 1.1.0-beta01 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-alpha06
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
yayınlanır. 1.1.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Modüller arası çağrılması gereken Composer yöntemlerinden
InternalCompilerApi
kaldırıldı (I1aa0b) Recomposer.state
desteği sonlandırıldı ve türü StateFlow olarak değiştirilmek üzereRecomposer.currentState
ile değiştirildi (Ic2ab3, b/197773820)
Sürüm 1.1.0-alpha05
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05
yayınlanır. 1.1.0-alpha05 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-alpha04
15 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
yayınlanır. 1.1.0-alpha04 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-alpha03
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
yayınlanır. 1.1.0-alpha03 sürümü bu taahhütleri içerir.
Yeni Özellikler
- Compose Derleyici artık Compose Çalışma Zamanı'nın eski sürümlerini (1.0) destekliyor. Bu değişiklikten önce Compose Derleyici yalnızca aynı sürümün veya sonraki sürümlerin Compose Çalışma Zamanı ile uyumluydu. Bu değişiklikten sonra Compose Derleyici, Compose Çalışma Zamanı'nın eski bir sürümüyle (1.0) uyumlu hale geldi. (aosp/1796968)
1.1.0-alpha03
derleyicisi, Kotlin1.5.30
'e bağlı olacak şekilde güncellendi. (I74545)
Sürüm 1.1.0-alpha02
18 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
yayınlanır. 1.1.0-alpha02 sürümü bu taahhütleri içerir.
Sürüm 1.1.0-alpha01
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01
yayınlanır. 1.1.0-alpha01 sürümü bu taahhütleri 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ınlanır. 1.0.5 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- derivedStateOf örneklerini izlemeyle ilgili bir kilitlenme düzeltildi. (aosp/1792247)
Sürüm 1.0.4
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.0.4
yayınlanır. 1.0.4 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.31
'e bağlı olacak şekilde güncellendi
Sürüm 1.0.3
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.3
yayınlanır. 1.0.3 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.30
'e bağlı olacak şekilde güncellendi
Sürüm 1.0.2
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.2
yayınlanır. 1.0.2 sürümü bu taahhütleri içerir.
Oluştur 1.0.2
sürümünü desteklemek için güncellendi. Compose 1.0.2
, Kotlin 1.5.21
ile uyumludur.
1.0.1 sürümü
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.0.1
yayınlanır. 1.0.1 sürümü bu taahhütleri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.21
'e bağlı olacak şekilde güncellendi.
Sürüm 1.0.0
28 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0
yayınlanır. 1.0.0 sürümü bu taahhütleri içerir.
1.0.0 sürümünün önemli ö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 aşağıdaki kilitlenmeyi görebilirsiniz:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Bu sorunu düzeltmek için
build.gradle
dosyanızdaki minSdkVersion değerini geçici olarak 24 veya daha yüksek bir değere ayarlayın. Bu sorun, Android Studio Bumblebee ve AGP'nin sonraki sürümünde7.1
düzeltilecektir. (b/194289155)
Sürüm 1.0.0-rc02
14 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
yayınlanır. 1.0.0-rc02 sürümü bu taahhütleri içerir.
- SnapshotStateObserver'da rastgele NullPointerExceptions'a neden olan yarış koşulları düzeltildi. (aosp/1763445, aosp/1758105, b/192677711)
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
kilitlenmelerine neden olan çalışma zamanı anlık görüntüleriyle ilgili sorunlar düzeltildi. (b/193006595, b/192570897)
Sürüm 1.0.0-rc01
1 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01
yayınlanır. 1.0.0-rc01 sürümü bu taahhütleri içerir.
Sürüm 1.0.0-beta09
16 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
yayınlanır. 1.0.0-beta09 sürümü bu taahhütleri içerir.
Profil Kuralları eklendi
Bu sürüm, aşağıdaki oluşturma modüllerine (I14ed6) profil kuralları ekler:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Profil kuralları nedir?
Bir kitaplığın profil kuralları,
src/main
veya eşdeğer dizinde bulunanbaseline-prof.txt
metin dosyasında belirtilir. Dosyada satır başına bir kural belirtilir. Bu durumda kural, kitaplıktaki yöntemler veya sınıflarla eşleştirme için kullanılan bir kalıptır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...
kullanılırken kullanılan, okunabilir ART profil biçiminin bir üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.Yöntem kuralları aşağıdaki kalıba sahiptir:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Sınıf kuralları ise aşağıdaki kalıba sahiptir:
<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 biri veya daha fazlasıdır.<CLASS_DESCRIPTOR>
, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Örneğin,androidx.compose.runtime.SlotTable
sınıfının tanımlayıcı değeriLandroidx/compose/runtime/SlotTable;
olur.<METHOD_SIGNATURE>
, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve döndürülen türlerini içerir. Örneğin,LayoutNode
üzerindekifun isPlaced(): Boolean
yönteminin imzasıisPlaced()Z
'dir.Tek bir kuralın birden fazla yöntemi veya sınıfı kapsayabilmesi için bu kalıplarda joker karakterler (
**
,*
ve?
) bulunabilir.
Kurallar ne işe yarar?
H
işareti bulunan bir yöntem, bu yöntemin "sıcak" bir yöntem olduğunu ve önceden derlenmesi gerektiğini gösterir.S
işareti bulunan bir yöntem, başlangıçta çağrılan bir yöntem olduğunu gösterir ve yöntemin başlangıçta derleme ve yorumlama maliyetini önlemek için önceden derlenmesi gerekir.P
işareti olan bir yöntem, başlangıçtan sonra çağrılan bir yöntem olduğunu gösterir.Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetini önlemek için yığınta önceden ayrılması gerektiğini gösterir.
Nasıl çalışır?
- Kitaplıklar, AAR yapılarına paketlenecek bu kuralları tanımlayabilir. Daha sonra bu yapıları içeren bir uygulama oluşturulduğunda bu kurallar birleştirilir ve birleştirilen kurallar, uygulamaya özgü kompakt bir ikili ART profili oluşturmak için kullanılır. Ardından ART, uygulamanın performansını (özellikle de ilk çalıştırmayı) iyileştirmek için uygulamanın belirli bir alt kümesini önceden derlemek amacıyla uygulama cihazlara yüklendiğinde bu profilden yararlanabilir. Bu durumun, hata ayıklama yapılabilir uygulamaları etkilemeyeceğini unutmayın.
Sürüm 1.0.0-beta08
2 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08
yayınlanır. 1.0.0-beta08 sürümü bu taahhütleri içerir.
API Değişiklikleri
State<T>
adlı bankanın yeni adıState<out T>
(I69049)ControlledComposition
Tek bir yeniden oluşturma geçişinde değişiklikleri yeniden oluşturmayı etkinleştirmek için API değişikliği. (Iaafd1, b/184173932)
Sürüm 1.0.0-beta07
18 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07
yayınlanır. 1.0.0-beta07 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Derleyici tarafından oluşturulan kaynak bilgilerinin kaynak küçültme işlemi sırasında kaldırılmasına olanak tanıyan yeni derleyici derleme API'leri eklendi. (Ia34e6)
Anahtar değiştirildiğinde düğümleri değiştirmek yerine içerikteki düğümleri yeniden kullanmaya çalışan
ReusableContent
özelliğini kullanıma sundu. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler dışında, içerik için slot tablosundaki önceki değerler yoksayılır.ComposeNode
için yapıldığı gibi, yayınlanan düğümü değiştirmek yerine yeniden kullanacakReusableComposeNode
özelliğini kullanıma sunar. (I1dd86)@ComposeCompilerApi
artık@RequiresOptIn
değil (Iab690)
Hata Düzeltmeleri
- LazyColumn/Row, artık daha önce görünür olan 2 öğeyi, kaydırıldığında bile etkin durumda tutar (yok edilmez). Bu sayede bileşen, kaydırma performansını artıran yeni bir öğe oluşturmamız gerektiğinde etkin alt kompozisyonları yeniden kullanabilir. (Ie5555)
Sürüm 1.0.0-beta06
5 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06
yayınlanır. 1.0.0-beta06 sürümü bu taahhütleri içerir.
API Değişiklikleri
@ComposeCompilerApi
artık@RequiresOptIn
değil (Iab690)
Sürüm 1.0.0-beta05
21 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05
yayınlanır. 1.0.0-beta05 sürümü bu taahhütleri 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'daki AndroidManifest dosyaları artık Android 12 ile uyumludur (I6f9de, b/184718994)
Sürüm 1.0.0-beta04
7 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
yayınlanır. 1.0.0-beta04 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
Bu değişiklikten önce, yerel birleştirilebilir işlevler parametrelerine göre atlanabilirdi. Bu değişiklikten sonra hiçbir yerel birleştirilebilir işlev atlanmayacaktır. Bu değişiklik, yerel işlevlerin üst öğeden parametre yakalamasının yaygın ve beklenen bir durum olması ve bu parametrelerin atlanması yaygın bir hata kaynağı olduğu için yapılır.
Özetlemek gerekirse aşağıdaki örneği inceleyin:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Bu değişiklikten önce,
ShowCount
birleştirilebilir işlevi,count
parametresi güncellendikten sonra bile her zaman atlanıyordu. Bu durum artık geçerli değil. (I5648a)Giriş parametreleriyle kullanıldığında
rememberSaveable()
eski değeri geri yüklerken yaşanan sorun düzeltildi (I1b110, b/182403380)
Sürüm 1.0.0-beta03
24 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
yayınlanır. 1.0.0-beta03 sürümü bu taahhütleri içerir.
API Değişiklikleri
DefaultMonotonicFrameClock
desteği sonlandırıldı.MonotonicFrameClock
olmadanwithFrameNanos
veyaRecomposer.runRecomposeAndApplyChanges
çağrısı yaptığınızda artıkIllegalStateException
hatası alırsınız. (I4eb0d)
Sürüm 1.0.0-beta02
10 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
yayınlanır. 1.0.0-beta02 sürümü bu taahhütleri içerir.
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılma (I6aa29, b/174531520)
- navigation-compose 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ınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.
Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.
API Değişiklikleri
- Geçersiz kılınan kompozisyonları ana çerçeve döngüsünden yeniden oluşturmak için
Recomposer.runRecomposeConcurrentlyAndApplyChanges
deneysel API'yi ekleyin. (I342d0) - @ReadOnlyComposable ile işaretlenen tüm derlenebilirler artık yalnızca diğer @ReadOnlyComposable'lara çağrı gönderdiklerinden emin olmak için derleme zamanında doğrulanmaktadır (I58961)
compositionLocalOf
vestaticCompositionLocalOf
içindefaultFactory
artık isteğe bağlı değil zorunludur.Bu değişiklik, varsayılan fabrika sağlanmayan, boş olmayan türler için olası bir tür hatasını ortadan kaldırır. Daha önce bu, boş olmayan bir tür için null referansı sağlıyordu.
Boş bırakılabilir türler için varsayılan fabrika olarak
{ null }
değerini sağlayabilirsiniz.Mantıklı bir varsayılan değer sağlanamazsa yerel değişkenleri, null olmayan türlerle kullanmanızı önermeyiz. Makul bir varsayılan değer yoksa
defaultFactory
lambda işlevi bir istisna atmalıdır. Ancak istisna atma, yerel kullanıcıların, tür sistemi tarafından zorunlu kılınmadığı sürece sağlanmasına dair gizli bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)Desteği sonlandırılan semboller, oluşturma çalışma zamanından kaldırıldı (I3252c)
Desteği sonlandırılan
emptyContent()
kaldırıldı. Bunun yerine{}
politikasını kullanın. (Idb33f, b/179432510)Providers, CompositionLocalProvider olarak yeniden adlandırıldı
- Composition kurucusu artık anahtar parametresi kabul etmiyor ve desteği sonlandırıldı.
- currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey bir özelliğe dönüştürülmüştür.
- CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, somut sınıf yerine bir arayüz haline getirildi ve artık tür parametreleri içermiyor.
- ComposableLambdaN, somut sınıf yerine bir arayüz haline getirildi ve artık tür parametreleri içermiyor.
- snapshotFlow işlevi, androidx.compose.runtime ad alanına taşındı
- SnapshotMutationPolicy'ın birleştirme yöntemi artık deneysel değil
- @TestOnly üst düzey clearRoots işlevi kaldırıldı. Artık gerekli değil.
- keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
- Composer.collectKeySourceInformation kaldırıldı. Artık gerekli değil.
- isJoinedKey, joinedKeyLeft ve joinedKeyRight yöntemleri kaldırıldı. Artık gerekli değildir.
- Çeşitli üst düzey API'ler taşındı ve farklı dosyalarda yeniden düzenlendi. Kotlin'in dosya sınıfı semantikleri nedeniyle bu durum ikili uyumluluğu bozar ancak kaynak uyumluluğunu bozmaz. Bu nedenle çoğu kullanıcı için sorun oluşturmaz.
- (I99b7d, b/177245490)
SnapshotStateObserver artık deneysel değil (Id2e6a)
Daha önce desteği sonlandırılan bazı API'ler silindi (Ice5da, b/178633932)
Aşağıdaki Material API değişiklikleri yapıldı:
- Varsayılan dolguyu özelleştirmeye izin vermek için Top/BottomAppBar'a contentPadding parametresi eklendi.
- Gerekli parametrelerin isteğe bağlı parametrelerden önce gelmesine ilişkin API yönergelerine uymak için BackdropScaffold'daki parametreler yeniden düzenlendi.
- BottomNavigationItem'deki
icon
parametresi,selected
veonClick
'den sonra olacak şekilde taşındı. - BottomNavigationItem'deki
alwaysShowLabels
parametresialwaysShowLabel
olarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContent
parametreleri yalnızcacontent
olarak yeniden adlandırıldı. ButtonDefaults.buttonColors()
parametreleri yeniden sıralandı. Parametrelerin türü değişmediğinden bu durumun kodunuzda hata oluşturmayacağı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 daha önce olduğu gibi çalışmaz.darkColors()
parametresidarkColors()
'e eklendi.secondaryVariant
Bu renk genellikle koyu temadakisecondary
ile aynıdır ancak tutarlılık ve daha fazla özelleştirme için eklenir.- Yaygın olarak kullanılmadıkları ve yararlı olmadıkları için ElevationDefaults ve animateElevation() herkese açık API yüzeyinden kaldırıldı.
Slider
içindekionValueChangeEnd
,onValueChangeFinished
olarak yeniden adlandırıldı ve null değerini kabul edecek şekilde değiştirildi.- Tutarlılık için
Snackbar
'dakitext
parametresicontent
olarak yeniden adlandırıldı. - Varsayılan dolguyu özelleştirmeye izin vermek için
DropdownMenuItem
parametresiDropdownMenuItem
'a eklendi vecontent
,RowScope
'ın bir uzantısı haline getirildi.contentPadding
ModalDrawerLayout
,ModalDrawer
olarak yeniden adlandırıldı.BottomDrawerLayout
,BottomDrawer
olarak yeniden adlandırıldı.- (I1cc66)
Sürüm 1.0.0-alpha12
10 Şubat 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12
yayınlanır. 1.0.0-alpha12 sürümü bu taahhütleri içerir.
API Değişiklikleri
- UiApplier'dan ViewGroups desteği kaldırıldı. Desteği sonlandırılan emitView bileşenleri kaldırıldı. (Ifb214)
- CompositionReference, CompositionContext olarak yeniden adlandırıldı (I53fcb)
- ComponentActivity.setContent, androidx.activity:activity-compose modülündeki androidx.activity.compose.setContent yöntemine taşındı. (Icf416)
- Snapshot API, API yönergesiyle daha tutarlı olacak ve dahili uygulama sınıflarını herkese açık API'den gizleyecek şekilde güncellendi. (Id9e32)
- Ambiyanslar, Ambiyans -> KompozisyonYerel yeniden adlandırma ile eşleşecek şekilde yeniden adlandırıldı. Ambients eskiden AmbientFoo olarak adlandırılıyordu. Artık CompositionLocals, LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient, sırasıyla CompositionLocal olarak, ambientOf / staticAmbientOf ise compositionLocalOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacının daha net anlaşılmasına yardımcı olur: bir kompozisyona yerel değerler sağlama / alma mekanizması. CompositionLocal örnekleri,
Local
ön ekiyle başlamalıdır (ör. val LocalFoo = compositionLocalOf { Foo() }). (Ia55b6) - takeMutableSnapshot ve takeSnapshot, Snapshot'ın tamamlayıcı yöntemleri olarak taşındı. (I91f19)
@ComposableContract
desteği sonlandırıldı ve daha ayrıntılı üç ek açıklama 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)Artık performans üzerinde olumlu bir etkisi veya değeri olmadığından emptyContent() ve (@Composable () -> Unit).orEmpty() yardımcı programlarının desteği sonlandırıldı (I0484d)
snapshotFlow
vewithMutableSnapshot
artık deneysel değil (I6a45f)Yeniden derleyiciler artık kapatılabilir. Kapalı yeniden derleyiciler, derleme alt coroutine'leri tamamlanana kadar yeniden derlemeye devam eder. Recomposer.shutDown, kapat ile kontrast oluşturmak için iptal olarak yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatch
yapının desteği sonlandırıldı. MonotonicFrameClock artık compose:runtime, AndroidUiDispatcher ise compose:ui altında bulunabilir. (Ib5c36)Compose derleyici eklentisinin hedeflediği API, somut sınıf yerine arayüz kullanacak şekilde yeniden yapılandırıldı. Arayüzde artık tür parametresi de kullanılmamaktadır.
Bu, kaynak kod uyumluluğunu etkilemeyecek ancak ikili programda uyumsuzluk oluşturan dahili bir değişikliktir. (I3b922, b/169406779)
SnapshotMutableState kullanıma sunuldu (Icfd03)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (Ica7c6)
Recomposer.current() kaldırıldı. [Soyut]ComposeView artık varsayılan olarak pencere için ViewTreeLifecycleOwner tarafından yönetilen, yavaşça oluşturulan, pencere kapsamlı Recomposer'ları kullanır. Ana makine yaşam döngüsü durdurulduğunda yeniden oluşturma ve withFrameNanos tabanlı animasyon tikleri duraklatılır. (I38e11)
Recomposer.runningRecomposers artık işlemdeki devam eden derleme durumunu gözlemlemek için salt okunur RecomposerInfo'dan oluşan bir global StateFlow sunuyor. Artık desteği sonlandırılmış olan Recomposer.current() yerine bu API'yi tercih edin. (If8ebe)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (I3ea68)
Sürüm 1.0.0-alpha11
28 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
yayınlanır. 1.0.0-alpha11 sürümü bu taahhütleri içerir.
API Değişiklikleri
- onCommit, onDispose ve onActive için desteği sonlandırıldı. Bunun yerine SideEffect ve DisposableEffect API'leri kullanılmalıdır (If760e)
- emit() API'si ve tüm aşırı yüklemeler desteği sonlandırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır, yalnızca Compose (I4137b) adlandırma kurallarına uymak için farklı bir ada sahiptir.
- invalidate ve compositionReference() işlevlerinin desteği sonlandırıldı. Bu işlevlerin yerine sırasıyla currentRecomposeScope ve rememberCompositionReference işlevleri kullanılmalıdır. (I583a8)
RememberObserver, CompositionLifecycleObserver'ın yerini aldı ve CompositionLifecycleObserver'ın desteği sonlandırıldı.
RememberObserver
, değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemlerleCompositionLifecycleObserver
'in yerini alır. Yalnızca bir kez hatırlanan nesneler için yeni API'ye geçiş mekanik olarak yapılabilir. Bu, önerilen uygulamadır ve olmaya devam edecektir. Ancak bir referans bir bileşimde birden fazla kez hatırlandıysaonEnter
yalnızca bir kez çağrılırken her referans içinonRemembered
çağrılır. NesneWithConstraints
veScaffold
gibi alt kompozisyonlarda kullanıldıysaonEnter
birden çok kez çağrıldı. Bu da tekonEnter
çağrı garantisini güvenilir olmaktan çıkardı veRememberObserver
için kaldırıldı.RememberObserver
,RememberObserver
örneğiremember
'ye iletilen geri çağırma işlevinden döndürülürse ancak derleme durumunda hatırlanmadıysa ve bu nedenle hiçbir zamanonRemembered
çağrılmamışsa çağrılanonAbandoned
'yi ekler. Bu durum, bir istisna, derlemeyi tamamlanmadan sonlandırırsa veya derleme, derleme oluşturulduğu durum artık geçerli olmadığı veya başka bir şekilde artık gerekli olmadığı için atlanırsa ortaya çıkabilir. Yukarıdaki tek referans önerisini izleyenRememberObserver
örneği harici bir kaynağı izliyorsa hemonForgotten
hem deonAbandoned
, kaynağın artık gerekli olmadığını gösterir. Nesne,onRemembered
içinde başlatılan işi veya ayrılan kaynakları izliyorsaonRemembered
çağrılırsaonAbandoned
çağrılmayacağındanonAbandoned
yoksayılabilir. (I02c36)collectAsState()
işlevlerini satır içi olarak işaretlemeyin (Ia73e4)
Hata Düzeltmeleri
- WithConstraints, BoxWithConstraints olarak yeniden tasarlandı ve foundation.layout alanına taşındı. (I9420b, b/173387208)
- Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)
Sürüm 1.0.0-alpha10
13 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
yayınlanır. 1.0.0-alpha10 sürümü bu taahhütleri içerir.
Zararlı Değişiklik
Dahili derleyici API'sinin yeniden yapılandırılması, tüm
@Composable
işlevleri tamamlandıktan sonra, derleme sonucunda oluşturulan düğümlerde yapılan değişikliklerin derlemenin "değişiklikleri uygula" aşamasında toplu olarak yapılmasına olanak tanır.Bu, davranışta önemli bir değişikliktir. Nod'lar artık değişiklikler uygulanana kadar dahili ve deneysel API'lerden kullanılamayacağından uygulama kodunu etkileyebilir. Bu sorun genellikle, kodu
SideEffect
bileşeninde bu tür bağımlılıklarla çevreleyerek kod yürütmeyi düğümler oluşturulup başlatılana kadar erteleyerek çözülebilir. (I018da)
API Değişiklikleri
- Yeniden derleyicinin değişiklikleri uygulayıp uygulamadığını izlemenin bir yolu eklendi. (I1b3e2)
[Abstract]ComposeView API'lerini, oluşturma tabanlı görünümlerin geri dönüştürülmesine izin verecek şekilde genişletin. Bu API'ler, daha sonra yeniden oluşturmak için kompozisyonlarını kaldırır. Alt kompozisyon oluşturmak için pencere kapsamlı Recomposer'ları ve CompositionReference'ları yükleyip keşfetmek üzere API'ler ekleyin.
[Abstract]ComposeViews bileşeninin bertaraf stratejisini yapılandırmak için ViewCompositionStrategy ekleyin. Varsayılan davranış, pencerenin ayrılması durumunda bertaraf etmektir. (I860ab)
Hata Düzeltmeleri
- Yeniden derleyici artık mevcut durumunun akışını gösterir. Bu sayede, etkinliğini ve ilişkili efektlerin etkinliğini izleyebilirsiniz. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent (I87c57, b/173086397) aracılığıyla erişilebilir.
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
yayınlanır. 1.0.0-alpha09 sürümü bu taahhütleri içerir.
API Değişiklikleri
SlotTable, SlotReader ve SlotWriter, herkese açık API'den kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretlenmişti. Artık bu özellikler, oluşturma modülüne dahil edildi.
CompositionData ve CompositionGroup, kompozisyon bilgilerini ayıklamak için kullanılacak ui-tooling API'nin yerine eklendi. Bunlar herkese açıktır ancak ui-tooling API'nin yorumladığı ham bilgileri sağladıkları için ui-tooling API dışında kullanılmak üzere tasarlanmamıştır (I31a9c)
Applier sınıfı artık (Id85b0) olarak kabul edilmez
Applier
arayüzü, ağaç oluşturmayı yukarıdan aşağıya yerine aşağıdan yukarıya doğru basitleştirmek için değiştirildi.insert()
yöntemiinsertTopDown()
olarak yeniden adlandırıldı.Yeni bir yöntem (
insertBottomUp()
) eklendi.Uygulayıcı, daha iyi performans gösterene bağlı olarak
insertTopDown()
veyainsertBottomUp()
kullanarak düzenlediği ağaca düğüm ekler.LayoutNode
veView
gibi bazı ağaçların alttan yukarıya doğru oluşturulması, yukarıdan aşağıya doğru oluşturulmasından çok daha verimlidir. Bu değişiklikten önce, aşağıdan yukarıya doğru uygulamak için bir dizi ekleme gerekliydi. Bu eklemelerin, performans için aşağıdan yukarıya doğru oluşturma işlemi gerektiren her uygulayıcıya kopyalanması gerekiyordu. Bu değişiklikle birlikte,Applier
, ağacı aşağıdan yukarı doğru oluşturmak içininsertBottomUp()
'ü, ağacı yukarıdan aşağı doğru oluşturmak için iseinsertTopDown()
'yi geçersiz kılar. (Icbdc2)Compose, birleştirilebilir çağrılar yapabilen mülk alıcıları destekler. Bu özellik için destek sonlandırılmıyor ancak mülk alıcısını @Composable olarak beyan etme söz dizimi değişiyor.
Bunu yapmak için artık desteklenmeyen söz dizimi, mülkün kendisini ek açıklamayla belirtmektir:
@Composable val someProperty: Int get() = ...
Bunu yapmak için artık doğru söz dizimi, mülkün alıcısını ek açıklamayla belirtmektir:
val someProperty: Int @Composable get() = ...
Her iki söz dizimi de bir süre boyunca çalışacak ancak kullanımdan kaldırılan eski söz dizimi sonunda derleme hatası oluşturacaktır. (Id9197)
Hata Düzeltmeleri
- AndroidOwner tarafından dahili hale getirildi (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) işlevi dahili hale getirildi (Id724a)
Sürüm 1.0.0-alpha08
2 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08
yayınlanır. 1.0.0-alpha08 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Compose yönergeleriyle tutarlılığı kontrol etmek için birleştirilebilir lambda parametre adlandırma ve konumu için lint denetimi eklendi.
Ayrıca, son lambda adları olarak
children
kullanan bazı API'ler, lint kontrolüne ve yönlendirmeye görecontent
olarak taşındı. (Iec48e) - Recomposer artık EmbeddingContext'i kabul etmez; gerekli planlama bağımlılıkları effectCoroutineContext'ten alınır. FrameManager desteği sonlandırıldı. Platform entegrasyonlarının kendi genel anlık görüntü işlemelerini başlatması gerekir. (I02369)
- RestorableStateHolder.withRestorableState işlevi RestorableStateProvider olarak yeniden adlandırıldı (I66640)
Hata Düzeltmeleri
- Son eklerinde
Ambient
bulunan Ambient'ler kullanımdan kaldırıldı ve diğer Ambient'ler ile Compose API yönergelerine uygun olarak Ambient ön ekiyle yeni mülklerle değiştirildi. (I33440) - Eski ui-test modülünü ve onun stub'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ınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.
Yeni Özellikler
API Değişiklikleri
@UnionType
ek açıklaması kullanımdan kaldırıldı (I57cde)- provideDefault, ambiyans sağlamak için provide değerine alternatif olarak eklenmiştir ve yalnızca önceden sağlanmış bir ambiyans değeri olmadığında ayarlanacak ambiyans değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
- SideEffect ve DisposableEffect API'leriyle tutarlılık sağlamak için LaunchedTask, LaunchedEffect olarak yeniden adlandırıldı. En iyi uygulamaları teşvik etmek amacıyla, konu parametresi olmayan LaunchedEffect'e izin verilmez. (Ifd3d4)
- Uygulayıcı, artık bir Oluşturucu ağaca değişiklik uygulamaya başladığında/bitirdiğinde çağrılan onBeginChanges/onEndChanges geri çağırma işlevlerine sahiptir. Gerekirse bu kaynaklar, kaynak yönetimi için toplu olarak kullanılabilir. (Icf476)
- Recomposer artık oluşturulurken CoroutineContext gerektiriyor (Ic4610)
- Herkese açık API'yi etkilemeyecek olan dahili SlotTable uygulamasında yapılan değişiklikler. (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ıldı ve material.Text ile değiştirildi. Bir temadan değer tüketmeyen temel, tarafsız bir metin API'si için androidx.compose.foundation.BasicText'e bakın. (If64cb)
- BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField'i kullanın. (I896eb)
- androidx.compose.ui altındaki birkaç düzen sembolü, androidx.compose.layout.ui altına taşındı. (I0fa98, b/170475424)
Harici Katkı
- Oluşturma için
runtime-rxjava3
modülü eklendi.runtime-rxjava2
'e benzer (I02cbf)
Sürüm 1.0.0-alpha06
28 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06
yayınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Recomposer artık bir CompositionReference ve geçerli bir kompozisyon üst öğesidir. Explicit Recomposer artık daha az yerde gerekli. (I4036f)
- SideEffect'e DisposableEffect karşı API'si eklendi. Bu API, onCommit-with-params rolünü zorunlu bir onDispose ile doldurur.
- Yeniden derlemedeki verileri DisposableEffects veya LaunchedTasks gibi devam eden ya da uzun ömürlü süreçlere yayınlamak için rememberUpdatedState API eklendi.
- (Id50b9)
- MutableVector artık RandomAccess'i (I85d73, b/170461551) uygular
- Bileşimin yan etkilerini, bileşim tarafından yönetilen nesnelere uygulamak için SideEffect kompozit bileşeni eklendi. SideEffect, onCommit bileşeninin yerini alacak şekilde tasarlanmıştır. (Ia77c2)
- Yeni deneysel RestorableStateHolder API'si. Bu yöntem, bir sonraki sefer geri yüklenen durumla yeniden derlemeyi mümkün kılmak için alt ağaç için [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumu, ağacı kaldırmadan önce kaydetmenize olanak tanır. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştirin; ComposeTestRule'dan yanıp sönen imleci etkinleştirme seçeneğini kaldırın. (If0de3)
Sürüm 1.0.0-alpha05
14 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05
yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Deneysel Modifier.pointerInput giriş değiştiriciyi askıya alma (Ia77d2)
- Her kaydırma işleminde alt kompozisyonda daha az işlem yapılarak LazyColumn/Row'un kaydırma performansı iyileştirildi. Composition sınıfı için yeni hasInvalidations() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi, hasInvalidations() olarak yeniden adlandırıldı (Ib2f32, b/168293643, b/167972292, b/165028371)
- Zaman içinde tek bir
State<T>
değerini güncelleyen kompozisyondan coroutine'leri başlatmak için produceState API'yi ekleyin (Id4a57) - launchInComposition, Compose API yönergeleriyle eşleşecek şekilde LaunchedTask olarak yeniden adlandırıldı (I99a8e)
- Özel düzenlerde place() çağrılarının sırası artık alt öğelerin çizim sırasını tanımlar (Ibc9f6)
Sürüm 1.0.0-alpha04
1 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04
yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Artık geçerli olmayan düzen ve çizim gözlem kapsamlarının toplanmasına izin vermek için OwnerScope eklendi. (Ic4cf8)
- Diğer durum nesnelerini okuyabilen (ve bunlardan türetebilen) bir hesaplamaya dayalı durum nesneleri oluşturmak için derivedStateOf API eklendi (If758b)
- SnapshotStateObserver için TestOnly API eklendi (I6e2a9)
Hata Düzeltmeleri
- foundation.Box desteği sonlandırıldı. Bunun yerine lütfen foundation.layout.Box öğesini 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ınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.
API Değişiklikleri
CompositionCoroutineScope
artıkMonotonicFrameClock
'i uygulamıyor.withFrameNanos
'yi çağıranlar, üst düzey işlevi açıkça içe aktarmalıdır. (Icb642, b/166778123)
Hata Düzeltmeleri
onNode
veyawaitForIdle
gibi genel test işlevleri artık desteklenmiyor. Lütfen ComposeTestRule (I7f45a) üzerinde tanımlanan yeni benzerlerine geçin.launchInComposition
artık eş yordamları dağıtılmadan 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ınlanır. 1.0.0-alpha02 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Snapshot veri değişikliklerini kullanmak ve oluşturmak için
snapshotFlow
vewithMutableSnapshot
API'lerini ekleyin. (I3e722) Birleştirilebilir işlevler için çağrı kuralı değişti. Bu, ikili kodda yapılan ve uyumsuzluk yaratan bir değişikliktir. Tüm kitaplıklar, derleyici derleyici eklentisinin bu sürümüyle çalışacak şekilde yeniden derlenmelidir.
Yalnızca açık bir şekilde etkinleştirilen derleyici API'leri değiştiği için bu değişiklik kaynak düzeyinde önemli bir değişiklik oluşturmaz. (I7afd2, b/158123185)
EmbeddingContext'tan (I7b9be) planlama yöntemleri kaldırıldı
onPreCommit işlevinin desteği sonlandırıldı. onCommit işlevi artık onPreCommit işlevinin davranışını sergiliyor.
onCommit ve onActive artık bir sonraki koreograf çerçevesinin başında değil, kompozisyon değişikliklerinin yapıldığı koreograf çerçevesinde çalışır. (I70403)
Sürüm 1.0.0-alpha01
26 Ağustos 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri 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ınlanır. 0.1.0-dev17 sürümü bu taahhütleri içerir.
API Değişiklikleri
- Özel yayınlar artık ayarlayıcılarından bir veya daha fazlasının atlanıp yayınlanmadan bağımsız olarak yeniden derlenebileceğini belirtebilir. (Ibbd13)
Desteği sonlandırılan FrameManager çağrıları kaldırıldı.
Dahili oluşturma API'leri,
mutableStateof()
gibi durum nesnelerini izlemek için ek maliyet miktarını azaltacak şekilde değiştirildi (I80ba6)state { ... }
bileşeni artık kullanımdan kaldırıldı. Bunun yerine, daha net bir şekilderemember { mutableStateOf(...) }
çağrıları yapılması önerilir. Bu, genel API yüzeyini ve durum yönetimiyle ilgili kavram sayısını azaltır ve sınıf mülkü yetkilendirmesi içinby mutableStateOf()
kalıbıyla eşleşir. (Ia5727)Flow.collectAsState artık varsayılan olarak Dispatchers.Main değerini kullanmak yerine varsayılan dağıtıcıyı bileşimin kendisinden belirler. (I9c1d9)
for döngüsü içinde durumu kaydeden bir şey kullanıldığında oluşan kilitlenme düzeltildi. Artık savedInstanceState() içinde aynı anahtara izin veriliyor. UiSavedStateRegistry'nin API'si bu yeni şarta göre ayarlandı (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Hata Düzeltmeleri
emitView
desteği sonlandırıldı. Oluştur içinde görüntü yayınlamak için mümkünse bunun yerineAndroidView
kullanın. Görünümler ve Görünüm Grupları doğrudan oluşturulduğunda, bu işlemler kompozisyon ağacında yapraklar olmadığı sürece gelecekte desteklenmeyecektir. Bu durumda, AndroidView kullanılarak bu işlem yapılabilir. (I29b1e, b/163871221)
Sürüm 0.1.0-dev16
5 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
yayınlanır. 0.1.0-dev16 sürümü bu taahhütleri içerir.
API Değişiklikleri
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
için varsayılan mutasyon politikasıreferentialEqualityPolicy()
yerinestructuralEqualityPolicy()
olarak değiştirildi.Bir
mutableStateOf()
örneğine atanan yeni değerin değişiklik olarak kabul edilip edilmeyeceğine karar verme işleminin varsayılan değeri artık===
yerine==
olarak değiştirildi.https://kotlinlang.org/docs/reference/equality.html adresine bakın.
ambientOf()
vesavedInstanceStateOf()
, uygulamalarındamutableStateOf()
kullandığındanmutableStateOf()
ile tutarlı olacak şekilde değiştirildi.Yapısal eşitlik kullanmak, geliştirici beklentilerine daha uygundur.
Örneğin,
val state = mutableStateOf(1f)
ardından,
state.value = 1f
artık
state
'te bir değişiklik olarak değerlendirilmeyecek ve beste sırasındastate
'ün kullanımlarının yeniden bestelenmesi gerekmeyecek.Bu, önemli bir değişikliktir ancak çoğu durumda (
equals()
'yi geçersiz kılmayan sınıflar kullanıldığında) uygulama üzerinde fark edilebilir bir etkisi olmaz.data
sınıfları gibiequals()
'ü geçersiz kılan sınıflarda,equals()
yöntemleri artık varsayılan olarak birmutableStateOf()
'ye atandığında çağrıldığı için performansta düşüş görülebilir.Önceki davranış,
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
çağrılarınapolicy = referentialEqualityPolicy()
politika parametresi ekleyerek geri yüklenebilir. (Ic21a7)Row
veColumn
artık satır içi işlev olduğundan bunların kullanılmasıyla ilgili ek maliyet önemli ölçüde azaltıldı. (I75c10)
Hata Düzeltmeleri
- setViewContent desteği sonlandırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
Yeni coroutine tabanlı saatler ile hâlâ eski geri çağırma tabanlı saatleri kullanan API'ler arasındaki boşluğu doldurmak için MonotonicFrameClock'u AnimationClockObservable olarak kullanmanıza olanak tanıyan MonotonicFrameAnimationClock eklendi.
ManualAnimationClock'ın MonotonicFrameClock eşdeğeri artık ManualFrameClock. (I111c7, b/161247083)
Modifier.stateDraggable tamamen yeniden çalışıldı ve Modifier.swipeable olarak yeniden adlandırıldı. Yeni bir SwipeableState sınıfı kullanıma sunuldu ve DrawerState ile BottomDrawerState, bu sınıftan devralınacak şekilde yeniden yapılandırıldı. [Modal/Bottom]DrawerLayout artık onStateChange parametresi almıyor. (I72332, b/148023068)
Modifier.plus desteği sonlandırıldı. Bunun yerine Modifier.then işlevini kullanın. "Sonra", sıralama konusunda daha güçlü bir sinyal verir. Ayrıca
Modifier.padding().background() + anotherModifier
yazmayı yasaklar. Bu da zinciri bozar ve metnin okunmasını zorlaştırır (Iedd58, b/161529964)SubcomposeLayout eklenir. Alt ağaç kompozisyonu için yalnızca daha sonra ölçüm sırasında kullanılabilen bazı değerleri kullanmak isterseniz ölçüm sırasında alt öğeleri derlemeye olanak tanıyan düşük düzey bir ilkeldir. Örneğin, WithConstraints, SubcomposeLayout kullanılarak uygulanmaz. (I25cc8)
Material FilledTextField, TextField olarak yeniden adlandırıldı ve temel TextField, BaseTextField olarak yeniden adlandırıldı. Böylece, istenen en basit API'nin keşfedilmesi ve kullanılması kolaylaştırıldı (Ia6242, b/155482676)
Modifier.drawBackground, Modifier.background olarak yeniden adlandırıldı (I13677)
Sürüm 0.1.0-dev15
22 Temmuz 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15
yayınlanır. 0.1.0-dev15 sürümü bu taahhütleri içerir.
Bağımlılıklar Güncellemesi
- Compose'un
0.1.0-dev15
sürümünü kullanmak için bağımlılıkları, yukarıdaki Bağımlılıkları beyan etme bölümünde gösterilen yeni kod snippet'lerine göre güncellemeniz gerekir.
API Değişiklikleri
@Model
ek açıklaması artık kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf'u kullanın. Bu desteği sonlandırma kararı, çok dikkatli bir tartışmanın ardından alınmıştır.Gerekçe
Gerekçe aşağıdakileri kapsar ancak bunlarla sınırlı değildir:
- API'nin kapsamını ve öğretmemiz gereken kavramları azaltır
- Diğer benzer araç setleriyle (Swift UI, React, Flutter) daha uyumlu
- Geri alınabilir karar.
@Model
'yi daha sonra dilediğiniz zaman tekrar etkinleştirebiliriz. @Model
'ü yapılandırmayla ilgili, ele almamız gereken özel durumları ve yanıtlanması zor soruları ortadan kaldırır@Model
veri sınıfları, eşittir, karma kodu vb.- Bazı mülkleri nasıl "gözlemledim" olarak işaretleyebilirim?
- Gözlemde kullanılacak yapısal ve referanssal eşitliği nasıl belirtirim?
- Sistemdeki "sihir"i azaltır. Kullanıcıların sistemin olduğundan daha akıllı olduğunu varsayması (ör. bir liste arasındaki farkları nasıl bulacağını bilmesi) olasılığını azaltır.
- Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
- Değişkenden sınıfta mülk olarak yeniden yapılandırılabilirliği iyileştirir
- Eyalete özel manuel optimizasyonlar yapma olanağı sunar.
- Ekosistemin geri kalanıyla daha uyumlu hale gelir ve "değişebilir durumu benimsediğimiz" veya "değişmez duruma bağlı olduğumuz" konusundaki belirsizliği azaltır.
Taşıma Notları
@Model
'ün mevcut kullanımlarının neredeyse tamamı, iki yöntemden biriyle oldukça basit bir şekilde dönüştürülebilir. Aşağıdaki örnekte, yalnızca örnek olması amacıyla iki özelliğe sahip bir@Model
sınıfı ve bu sınıfın bir bileşimde kullanıldığı gösterilmektedir.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
1. Alternatif:
State<OriginalClass>
simgesini kullanın ve kopyalar oluşturun.Bu yaklaşım, Kotlin'in veri sınıflarıyla kolaylaştırılır. Özetle, daha önce
var
olan tüm özellikleri bir veri sınıfınınval
özelliği haline getirin, ardındanremember
yerinestate
kullanın ve veri sınıfıcopy(...)
kolaylık yöntemini kullanarak durum değerini orijinalin kopyalarına atayın.Bu yaklaşımın yalnızca sınıftaki tek mutasyonlar
State
örneğinin oluşturulduğu kapsamda yapıldığında işe yaradığını unutmayın. Sınıf, kullanım kapsamının dışında kendi içinde mutasyon geçiriyorsa ve bu gözleme güveniyorsanız kullanmanız gereken yaklaşımı aşağıda bulabilirsiniz.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
2. Alternatif: mutableStateOf ve mülk temsilcilerini kullanma
Bu yaklaşım, Kotlin'in mülk temsilcileri ve kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanıyan
mutableStateOf
API ile kolaylaştırılır. Özetle, orijinal sınıfın tümvar
mülklerinin mülkü temsilcisi olarakmutableStateOf
içerenvar
mülkleriyle değiştirilmesi gerekir. Bu yöntemin avantajı, sınıfın kullanımının hiç değişmemesi, yalnızca dahili uygulamanın değişmesidir. Ancak her mülk artık ayrı ayrı gözlemlendiği/abone edildiği için davranış, orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenlemeden sonra gördüğünüz yeniden oluşturma işlemleri daha dar olabilir (iyi bir şey).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce derleyici, çağrıları birleştirilebilir işlevlere dönüştürüyordu. Bu değişiklikle birlikte, artık bir derlenebilir işlevin gövdesini dönüştürüyor ve çağrı yerini (çoğunlukla) değiştirmeden bırakıyoruz.
Bu, derleme çalışma zamanı ile iletişim kuran mantığın çoğunun çağrı yerinde değil, işlev gövdesinin başında gerçekleştiği anlamına gelir.
Bu, oluşturma işlevinin tüm kullanımları için kaynak uyumlu bir değişikliktir. Oluşturma özelliğini kullanan çoğu kullanıcının bu değişiklik nedeniyle herhangi bir kod güncellemesi yapması gerekmez.
Bu çalışmayı desteklemek için tüm birleştirilebilir işlevlerin JVM imzası değiştirildi. Tek bir parametre kabul eden bir Composable işlevi, 3 parametre kabul eden bir işleve dönüştürülür. Ek parametreler, Composer, "anahtar" tam sayı ve meta verileri çağrılar aracılığıyla yaymak için kullanılan bit maskesi tam sayısıdır.
Oluşturma işlevi artık varsayılan bağımsız değişkenleri de birleştirilebilir bir işleve dönüştürüyor. Bu işlemi, işlevin ek bir sentetik varsayılan aşırı yüklemesi sunmadan yapar. Bu nedenle, bu değişiklik daha az işlevin tanımlanmasına neden olur.
Bu durumdan kaynaklanan bilinen bilinçli davranış değişiklikleri:
- Bazı aramalar, daha önce atlanmadıkları halde atlanır.
- Varsayılan bağımsız değişken ifadelerindeki birleştirilebilir ifadeler artık doğru şekilde abone edilir ve işlenir.
Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer birleştirilebilir işlevlere iletilir. Bu, çalışma zamanında daha az karşılaştırma yapılmasına, yuva tablosu boyutunun küçültülmesine ve daha önce atlanmayan birleştirilebilir işlevlerin daha fazla atlanmasına yol açar2. Derleme zamanında "statik" olarak belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Bu, karşılaştırma sayısını ve slot tablosu boyutunu azaltır. 3. Oluşturulan grup sayısını en aza indirmek için işlev gövdesinin kontrol akışı yapısı kullanılır. Bu, slot tablosu boyutunu azaltır ve çalışma zamanında daha az çalışma yapılmasına neden olur4. İşlevlere yönelik kullanılmayan dağıtım ve alıcı parametreleri, işlevin gövdesinde kullanılmadıkları takdirde işlevin atlanabilirliğini belirlemeye dahil edilmez.
Çoğu önemli değişiklik, derleyicinin doğrudan hedeflediği API'ler içindi ve compose'in normal kullanımı bundan etkilenmeyecektir: 1. Composer::startExpr kaldırıldı. Composer::endExpr kaldırıldı. Composer::call işlevinin desteği sonlandırıldı.
key
işlevinin varargs olmayan aşırı yüklemeleri kaldırıldı. Bundan sonravararg
sürümünü kullanın. 5. Pivot ek açıklaması kullanımdan kaldırıldı. Bunun yerinekey
kullanın. 6. ScopeUpdateScope::updateScope, Function1 yerine Function3 bekleyecek şekilde değiştirildi 7. restartableFunction ve restartableFunctionN, ek derleme zamanı parametreleri içerecek şekilde güncellendi (I60756, b/143464846)MutableVector'a sortWith ve removeRange eklendi (Icccf7)
CompositionLifecycleObserver için varsayılan yöntem uygulamaları eklendi (I24289)
Uygulayıcı artık kompozisyonları kaldırmak için clear() yöntemini gerektiriyor (Ibe697)
Listenin tamamını kopyalamak zorunda kalmadan herkese açık API'ye iletilmesine olanak tanımak için MutableVector'a asMutableList() eklendi. (I298df)
Etkinliklere yanıt olarak iş başlatmak için bileşimde yönetilen bir CoroutineScope elde etmek üzere rememberCoroutineScope() eklendi. (I0e264)
MutableVector, standart Collection arayüzünden hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde hız sunar ve yalnızca şirket içi uygulamalarda kullanılması amaçlanmıştır. (I8ebd6)
Kotlin Compose'un gerektirdiği sürümdeki bir sorunu önlemek için
StableMutableList
veStableMutableMap
geçici olarak kaldırıldı. Bu arayüzler, Compose bu sorunun olmadığı bir Kotlin sürümüne güncellendikten sonra yeniden kullanıma sunulacaktır.SnapshotStateList
veSnapshotStateMap
artık herkese açıktır ancakStableMutableList
veStableMutableMap
geri yüklendikten sonra desteği sonlandırılacaktır. (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) ile değiştirin (Id211e)
RestartableFunction ve ilişkili API'ler ComposableLambda vb. olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiğinden bu durum normalde kaynak düzeyi uyumluluğu etkilemez. Yeniden adlandırma işlemi, öncelikle yığın izlemelerinde (I7eb25) gösterildiğinde bu sınıfın ne yönden daha iyi olduğunu belirtmek için yapıldı.
@Composable ek açıklamaları artık sınıflarda geçerli değil (Ia5f02)
Ambient<T>
artık @Immutable yerine @Stable olarak ayarlandı (I0b4bb)Bu değişiklikten önce, derleyici derleyici eklentisi, bir @Composable işlevi içinde yapıcı çağrıları (I5205a, b/158123804) varsa basit bir şekilde durduruyordu.
Recompose bileşeni artık yararlı bir soyutlama değildir. Yeniden derleme işlemlerinin çoğu, MutableState atamalarının sonucu olarak gerçekleşir. Bunun dışındaki her şey için mevcut kapsamın yeniden derlenmesini tetiklemek üzere
invalidate
işlevini kullanmanız önerilir. (Ifc992)Observe artık yararlı bir soyutlama değildir. Bu işlevi kopyalamanız gerekiyorsa uygulamasını, yalnızca birleştirilebilir bir lambda parametresi yürüten birleştirilebilir bir işlev oluşturarak kopyalayabilirsiniz. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct için destek sonlandırıldı ve @ComposableContract(restartable=false) tercih edildi (If4708)
Kısa süre önce kullanıma sunulan StateFlow için, döndürülen durum null olmayan bir değer olacak şekilde ilk değeri önceden doldurmamıza olanak tanıyan bir bağdaştırıcı eklendi (I61dd8, b/156233789)
Flow için bir adaptör eklendi. Kullanım örneği: flow.collectAsState() tarafından val değeri (If2198, b/153375923)
[Değişken]Durum mülkü temsilcisi operatörleri, Kotlin 1.4 mülk temsilcisi optimizasyonlarını desteklemek için uzantılara taşındı. Arama yapanların
by state { ... }
veyaby mutableStateOf(...)
'u kullanmaya devam etmek için içe aktarma eklemesi gerekir. (I5312c)androidx.compose.ViewComposer, androidx.ui.node.UiComposer'a taşındı androidx.compose.Emittable kaldırıldı. ComponentNode ile ek bir işlevi yoktu. androidx.compose.ViewAdapters kaldırıldı. Bu kullanım alanı artık desteklenmiyor. Compose.composeInto işlevinin desteği sonlandırıldı. Bunun yerine
setContent
veyasetViewContent
kullanın. Compose.disposeComposition desteği sonlandırıldı. Bunun yerinesetContent
tarafından döndürülenComposition
üzerindedispose
yöntemini kullanın. androidx.compose.Compose.subcomposeInto, androidx.ui.core.subcomposeInto'ya taşındı ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı ComponentNode#emitRemoveAt, ComponentNode#removeAt olarak yeniden adlandırıldı ComponentNode#emitMode, ComponentNode#move olarak yeniden adlandırıldı (Idef00)ComposeFlags.COMPOSER_PARAM
işaretitrue
olarak güncellendi. Bu, oluşturma eklentisinin kod oluşturma stratejisini değiştirecek. Bu durum, yüksek düzeyde @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametre, çalışma zamanının yürütmeyi düzgün şekilde yönetmesi için sonraki @Composable çağrılarına iletilir. Bu, ikili kodda önemli bir değişikliktir ancak compose'in izin verilen tüm kullanımlarında kaynak düzeyinde uyumluluğu korumalıdır. (I7971c)Ambiyans API'de önemli değişiklikler. Ayrıntılar için günlüğe ve
Ambient<T>
belgelerine bakın (I4c7ee, b/143769776)LiveData için adaptör içeren yeni yapı olan ui-livedata eklendi. Kullanım örneği: liveData.observeAsState() tarafından val değeri (Ie9e8c, b/150465596)
Belirli bir başlangıç değeri olmayan Rx bağdaştırıcıların desteği sonlandırıldı. null kullanmak her zaman en iyi varsayılan değer değildir. Örneğin, bir listeniz varsa emptyList() veya başka bir makul varsayılan değerle (I00025, b/161348384) başlamak daha iyidir.
RxJava2 için adaptörler içeren yeni yapı olan ui-rxjava2 eklendi. Kullanım örneği: observable.subscribeAsState() tarafından val değeri (Ifab4b, b/153369097)
savedInstanceState()
artık boş değer atanabilir türlerle (I6847f, b/153532190) kullanılabilirÖzel Saver nesnelerini yazmayı kolaylaştırmak için yeni listSaver() ve mapSaver() (I8cf68, b/152331508)
Yeni işlevler: savedInstanceState() ve rememberSavedInstanceState(). Bunlar state() ve remember() işlevlerine benzer ancak yerleşik bir kayıtlı örnek durumu desteğine sahiptir (If1987, b/152025209)
Hata Düzeltmeleri
runOnIdleCompose
,runOnIdle
olarak yeniden adlandırıldı (I83607)- LayoutNode'u deneysel API yaptı (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Bu türü kullanan TextField, FilledTextField ve CoreTextField bileşenlerinin desteği de sonlandırılmıştır. Bunun yerine lütfen androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005)
- Desteği sonlandırılan DrawBackground API'si, Değiştirici'deki drawBackground uzantı API'leri için kaldırıldı. Kod yollarını azaltmak ve Modifier'ın kompozisyonun bir parçası olarak oluşturulması şartını kaldırmak için renk, fırça ve boya drawBackground uygulamalarını yeniden yapılandırdık. (I0343a)
- Bir Canvas'ı gösteren daha yüksek düzeydeki compose API'leri, bunun yerine CanvasScope'u göstermek için güncellendi. Bu sayede tüketicilerin kendi Paint nesnelerini yönetmesi gerekmez. Yine de bir tuvale erişmesi gereken tüketiciler, temel tuvalde çizim komutları göndermek için geri çağırma sağlayan drawCanvas uzantı yöntemini kullanabilir. (I80afd)
- WithConstraints sona eklenen lambda API'si değiştirildi. Artık iki parametre yerine, constraints ve layoutDirection'e ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlayan bir alıcı kapsamı var (I91b9a, b/149979702)
- Simetrik dolgu değiştirici eklendi. (I39840)
- wrapContentWidth ve wrapContentHeight, herhangi bir Hizalama yerine dikey veya yatay Hizalama bekleyeceği şekilde güncellendi. Yerçekimi değiştirici, dikey veya yatay hizalamayı kabul edecek şekilde güncellendi. Satır, sütun ve grup, özel sürekli Hizalamaları desteklemek için güncellendi. (Ib0728)
- ui-text modülü, ui-text-core olarak yeniden adlandırıldı (I57ara)
- DrawModifier API'yi iyileştirme:
- draw() için alıcı kapsamını ContentDrawScope yaptı
- draw() işlevindeki tüm parametreler kaldırıldı
- DrawScope, eski CanvasScope ile aynı arayüze sahiptir.
- ContentDrawScope'ta drawContent() yöntemi var (Ibaced, b/152919067)
- ColoredRect kullanımdan kaldırıldı. Bunun yerine
Box(Modifier.preferredSize(width, height).drawBackground(color))
politikasını kullanın. (I499fa, b/152753731) - Değiştirici artı operatör, fabrika uzantı işlevleriyle değiştirildi (I225e4)
- RowScope ve ColumnScope üyelerine artık Row ve Column dışından erişilebilir. (I3a641)
- LayoutFlexible, LayoutWeight olarak yeniden adlandırıldı. Doldurulacak sıkı parametre yeniden adlandırıldı. (If4738)
- WithConstraints, LayoutDirection parametresini aldı (I6d6f7)
- Arka planı DrawBackground olarak yeniden adlandırıp varsayılan olarak ezberlenmesini sağlayın (Ia0bd3)
- ButtonStyle, farklı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenmiş örneklere bakın. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
verunOnUiThread
artık ComposeTestRule'daki yöntemler yerine genel işlevlerdir. (Icbe8f)
Harici Katkı
- Looper ve Handler gibi gereksiz API'leri Compose Runtime taşıma katmanından kaldırma (I6847d)
- Başlangıç değeri olmayan
Flow<T>.collectAsState()
için desteği sonlandırın.StateFlow<T>
kullanın veya bunun yerine açık bir başlangıç değeri iletin. (I63f98, b/157674865)