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ü |
---|---|---|---|---|
2 Temmuz 2025 | 1.8.3 | - | 1.9.0-beta02 | - |
Yapı
Compose, androidx
içindeki 7 Maven Group kimliğinin birleşimidir. Her grup, kendi sürüm notları kümesine sahip, hedeflenmiş bir işlevsellik alt kümesi içerir.
Bu tabloda gruplar açıklanmakta ve her bir sürüm notu grubuna bağlantı verilmektedir.
Grup | Açıklama |
---|---|
compose.animation | Kullanıcı deneyimini zenginleştirmek için Jetpack Compose uygulamalarında animasyonlar oluşturun. |
compose.compiler | @Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin. |
compose.foundation | Kullanıma hazır yapı taşlarıyla Jetpack Compose uygulamaları yazın ve kendi tasarım sistemi parçalarınızı oluşturmak için temeli genişletin. |
compose.material | Kullanıma hazır Materyal Tasarım bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, www.material.io adresinde açıklanan bileşenleri sağlamak üzere tasarlanmış, Compose'un daha üst düzey giriş noktasıdır. |
compose.material3 | Materyal Tasarım'ın bir sonraki evrimi olan Materyal Tasarım 3 Bileşenleri ile 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. Ayrıca yeni Android 12 görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlanmıştır. |
compose.runtime | Compose'un programlama modeli ve durum yönetiminin temel yapı taşları ve Compose Compiler Plugin'in hedefleyeceği temel çalışma zamanı. |
compose.ui | Düzen, çizim ve giriş dahil olmak üzere cihazla etkileşim kurmak için gereken Compose kullanıcı arayüzünün temel bileşenleri. |
Bağımlılıkları bildirme
Compose'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Eski
dependencies { implementation "androidx.compose.runtime:runtime:1.8.3" implementation "androidx.compose.runtime:runtime-livedata:1.8.3" implementation "androidx.compose.runtime:runtime-rxjava2:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.8.3") implementation("androidx.compose.runtime:runtime-livedata:1.8.3") implementation("androidx.compose.runtime:runtime-rxjava2:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Çalışma Zamanı İzleme Sürümü 1.7
Sürüm 1.7.0-rc01
18 Eylül 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01
iptal edilir. 1.7.0-rc01 sürümü bu commit'leri içerir.
Çalışma Zamanı İzleme Sürümü 1.0
Sürüm 1.0.0-beta01
29 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01
iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Sürüm 1.0.0-alpha05
15 Kasım 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.compose-runtime ve tracing-perfetto) sabitlendi. Böylece, compose-runtime-tracing'in uygulamaya daha yeni bir compose-runtime sürümü getirmesine neden olan sorun düzeltildi.
Sürüm 1.0.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Benchmark ve Tracing Perfetto'nun en yeni sürümleriyle uyumludur. Bu sayede, uygulama başlatılırken (soğuk başlatma) AndroidX Benchmark ve Android Studio'da (Hedgehog Beta 2'den itibaren) Composition Tracing desteği sağlanır.
API Değişiklikleri
androidx.tracing.perfetto.Trace
,androidx.tracing.perfetto.PerfettoSdkTrace
olarak yeniden adlandırıldı. (I44af8)- Tracing Perfetto SDK API'lerinin
android.os.Trace
ile tutarlı hale getirilmesi. (I73ba0, b/282199917) - Uygulama başlatılırken izleme için ön koşullar. (Iad890)
- Deneysel ve herkese açık API dosyaları birleştirildi (I0f2e1, b/278769092)
Sürüm 1.0.0-alpha02
8 Şubat 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
- İşlevsel değişiklik yok. Aşağı akış bağımlılıklarında birden fazla performans optimizasyonu
androidx.tracing:tracing-perfetto*
.
Sürüm 1.0.0-alpha01
7 Eylül 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
androidx.compose.runtime:runtime-tracing
, destekleyen araçlar (çok yakında) kullanıldığında Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. Bu ilk sürüm 1.0.0-alpha01'dir.
Sürüm 1.9
Sürüm 1.9.0-beta02
2 Temmuz 2025
androidx.compose.runtime:runtime-*:1.9.0-beta02
iptal edilir. 1.9.0-beta02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yuva tablosundaki değerlerin kompozisyonlar arasındaki referans ömrü azaltıldı. Bir yuva tablosundaki referansın gerekenden bir kare daha uzun sürdüğü durumlar olabilir. (I49e74, b/418516940)
- Anında yeniden yükleme yöntemleri için Kotlin ad değişikliğini kaldırın. (Ic56a3, b/426871325)
Sürüm 1.9.0-beta01
18 Haziran 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01
iptal edilir. 1.9.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
- Compose derleyicisi tarafından eklenen kaynak bilgilerini ayrıştırmak için bir araç API'si eklendi. (Iceaf9, b/408492167)
SnapshotStateSet
artık Android'deParcelable
'yi uyguluyor. Bu nedenle,rememberSaveable { ... }
'nin bir parçası olarak kullanılması destekleniyor. (I755dd, b/378623803)SnapshotStateList
artık Android'deParcelable
'yi uyguluyor. Bu nedenle,rememberSaveable { ... }
'nin bir parçası olarak kullanılması destekleniyor. (Id18be, b/378623803)movableContentOf()
artık@RememberInComposition
ek açıklamasıyla işaretleniyor. Bu sayede lint, yanlış kullanımları (I2738d) yakalayabiliyor.- Deneysel bileşim gözlemcileri API'si, yeniden bileşim nedenlerinin daha kapsamlı bir şekilde gözlemlenmesine olanak tanıyacak şekilde güncellendi (I32b6a).
- Bu özelliğin gelecekteki gelişimini hesaba katmak için
setDiagnosticStackTraceEnabled
değerini deneysel olarak değiştirin. (I11db3) currentCompositeKeyHash
artık kullanımdan kaldırıldı. Bunun yerinecurrentCompositeKeyHashCode
politikasını kullanın. Yeni API, aynı karmayı daha fazla bit ile kodlar. Bu da, kompozisyon hiyerarşisindeki iki rastgele ve alakasız grubun aynı karma anahtarına sahip olma olasılığını katlanarak azaltır. (I4cb6a, b/177562901)- Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
@Stable
,@Immutable
ve@StableMarker
, çalışma zamanı ek açıklamasına (uyumlu bir şekilde) taşındı. Artık Compose'a bağlı olmayan kitaplıklardaki bu ek açıklamaları kullanmak istiyorsanız çalışma zamanı ek açıklamalarını kullanabilirsiniz. (I23a16)rememberSaveable
aşırı yüklemesinin,KSerializer
kabul eden sürümünün adınırememberSerializable
olarak değiştirdi. Bu değişiklik,kotlinx.serialization
ile kullanım amacını netleştirir. Genelkotlinx.Serializable
sınıflarının doğrudanrememberSaveable
içinde desteklenmesi içinreified
türünde bir parametre gerekir. Bu da tüm çağrı sitelerinin derleme sırasında somutlaştırılmış tür bilgileri sağlamasını gerektirerek kaynak uyumluluğunu bozar. (Idb875, I38627, b/376028110)
Hata Düzeltmeleri
- Durdurulabilir içeriklerle oluşturulan ve iptal edilen kompozisyonlar kaldırılmalıdır. Bu durum artık beste tarafından kontrol ediliyor ve yeniden kullanılması durumunda hata veriliyor. (I2daa5, b/406792785)
- Durdurulabilir bileşimin, durdurulabilir bileşim kaldırıldığında gözlemcilere hatırlatma için artık sahte bir
onForgotten
göndermemesi sağlandı. İptal edilmiş, duraklatılabilir bir beste içindekiRememberObservers
öğesine yalnızca onAbandoned gönderilmelidir. (I26f54) - İşleme sürecinin son aşamalarında gelen geçersiz kılmaların besteciye eklendiği ancak içerik taşındığında bu geçersiz kılmaların güncellenmediği ve içeriğin yanlış yerde yeniden oluşturulmasına neden olduğu taşınabilir içerik sorunu düzeltildi. (Icd2fa, b/409439507)
- Taşınabilir içerik oluşturulduktan sonra ancak taşınmadan önce geçersiz hale geldiğinde yaşanan sorun düzeltildi. (I99eac, b/229001114)
previous()
çağrıldıktan sonraSnapshotStateList
tarafından oluşturulan bir liste yineleyicisininremove()
çağrılması, listeden yanlış öğenin kaldırılmasına neden olabiliyor ve aynı çağrı dizisi içinArrayList
'ün yaptığı işlemle eşleşmiyordu. (I05ab7, b/417493222)onForgotton
öğelerinin gönderilmesiyle ilgili bir sıralama sorunu düzeltildi. Bu sorun, örneğin tek kullanımlık efektlerinonDispose
öğesinin yanlış sırada yürütülmesine neden olabiliyordu. (Ic1c91, b/417450712)- Duraklatılabilir kompozisyonda durum işleme özelliğinin yeniden kullanılmasını sağlayan düzeltme (Ife96e, b/404058957)
- Bir beste duraklatılıp yeniden başlatıldığında yeniden kullanma durumu düzeltildi. Beste duraklatılmışken okuduğu bazı durumlar değiştiğinden daha önce duraklatılmış bazı durumların yeniden oluşturulması gerekiyordu. (I441d1, b/416209738)
- b/404058957 numaralı sorun için önceki düzeltme eksik olduğundan, duraklatılabilir beste hatırlatma gönderme düzeltmesi tamamlandı. (I1afd4, b/404058957)
OffsetApplier
artık duraklatılabilir kompozisyonla kullanıma sunulanapply()
öğesini doğru şekilde geçersiz kılıyor. Bu özelliğin olmaması, duraklatılabilir bileşim sanal düğümleri güncellerken istisna oluşturmasına neden olabilir. (Idbf31, b/409291131)- Bir çerçeve gönderilirken
FrameClock.withFrameNanos
'ya yapılan askıya alınmış bir çağrı iptal edildiğinde Molecule kullanıcılarını etkileyebilecek kilitlenme sorunu düzeltildi. (I89cab, b/407027032) - Yeniden Oluşturucu, taşınabilir içeriklerle boşta kalabiliyor (Ie5416, b/409267170)
onReuse
veonDeactivate
, duraklatılabilir beste sırasında tersine çevrilebilir. Bu etkinliklerin artıkonDeactivate
/onReuse
sırasıyla gerçekleşeceği garanti edilmektedir. (I996e4, b/404058957)- Pausable composition'da remember gözlemcilerinin gönderilmesini düzelterek aynı uygulama içinde hatırlanan/unutulanların gönderilmesini önleme (I570b2, b/404645679, b/407931790)
LifecycleRegistry
kontrollerini devre dışı bırakmak ve iş parçacığı sorunlarını düzeltmek için Compose Multiplatform'daLifecycleRegistry
güvenli olmayan moda geçildi.MainThread
Ayrıntılar için CMP-8227'ye bakın. (Icee87)
Harici Katkı (External Contribution)
- Molecule kullanıcılarını etkileyen ve
RecompositionMode.Immediate
kullanımının yeniden oluşturma işlemlerinin atlanmasına neden olabilen hata düzeltildi. (I9f3a9, b/419527812) PausableComposition
durumunun kontrol edilmesine olanak tanıyanPausableComposition
isApplied
veisCancelled
alıcıları kullanıma sunuldu. (I994aa)AnnotationTarget.FUNCTION
,FunctionKeyMeta
ek açıklamasına eklendi. (I08021)
Sürüm 1.9.0-alpha04
4 Haziran 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha04
iptal edilir. 1.9.0-alpha04 sürümü bu commit'leri içerir.
API Değişiklikleri
SnapshotStateSet
artık Android'de Parcelable'ı uyguluyor. Bu nedenle,rememberSaveable { ... }
'ın bir parçası olarak kullanılması destekleniyor. (I755dd, b/378623803)SnapshotStateList
artık Android'de Parcelable'ı uyguluyor. Bu nedenle,rememberSaveable { ... }
'ın bir parçası olarak kullanılması destekleniyor. (Id18be, b/378623803)movableContentOf()
artık@RememberInComposition
ek açıklamasıyla işaretleniyor. Bu sayede lint, yanlış kullanımları (I2738d) yakalayabiliyor.- Deneysel bileşim gözlemcileri API'si, yeniden bileşim nedenlerinin daha kapsamlı bir şekilde gözlemlenmesine olanak tanıyacak şekilde güncellendi (I32b6a).
Hata Düzeltmeleri
onForgotton
öğelerinin gönderilmesiyle ilgili bir sıralama sorunu düzeltildi. Bu sorun, örneğin tek kullanımlık efektlerinonDispose
öğesinin yanlış sırada yürütülmesine neden olabiliyordu. (Ic1c91, b/417450712)- Duraklatılabilir kompozisyonda durum işleme özelliğinin yeniden kullanılmasını sağlayan düzeltme (Ife96e, b/404058957)
- Değişebilir koleksiyon algılamanın hem K1 hem de K2 ile uyumlu olması için küçük bir hata düzeltildi (Ie4878).
- K1 ve K2'de (I9900d) geçersiz kılınan özellik erişimcilerinde ek açıklama aramasını uyumlu hale getirmek için küçük bir hata düzeltildi.
Harici Katkı (External Contribution)
- Molecule kullanıcılarını etkileyen ve
RecompositionMode.Immediate
kullanımının yeniden oluşturma işlemlerinin atlanmasına neden olabilen hata düzeltildi. (I9f3a9, b/419527812) PausableComposition
durumunun kontrol edilmesine olanak tanıyanPausableComposition
isApplied veisCancelled
alıcıları kullanıma sunuldu. (I994aa)
Sürüm 1.9.0-alpha03
20 Mayıs 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha03
iptal edilir. 1.9.0-alpha03 sürümü bu commit'leri içerir.
API Değişiklikleri
- Bu özelliğin gelecekteki gelişimini hesaba katmak için
setDiagnosticStackTraceEnabled
değerini deneysel olarak değiştirin. (I11db3)
Hata Düzeltmeleri
- Bir beste duraklatılıp yeniden başlatıldığında yeniden kullanma durumu düzeltildi. Beste duraklatılmışken okuduğu bazı durumlar değiştiğinden daha önce duraklatılmış bazı durumların yeniden oluşturulması gerekiyordu. (I441d1, b/416209738)
- b/404058957 numaralı sorunun önceki düzeltmesi eksik olduğundan, duraklatılabilir beste hatırlatma gönderme düzeltmesi tamamlandı. (I1afd4, b/404058957)
SaveableStateHolder.SaveableStateProvider
artık kompozisyon aracılığıyla içeriğineLocalSavedStateRegistryOwner
sağlıyor. (Ia2761, b/413108878)androidx.compose.runtime.saveable
artıkandroidx.lifecycle.runtime.compose
SDK'sına bağlıdır. (I53228, b/413108878)
Sürüm 1.9.0-alpha02
7 Mayıs 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha02
iptal edilir. 1.9.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
- Özel "anahtar" ile
rememberSaveable
kullanımdan kaldırıldı. Konumsal kapsamı atlayarak durum hatalarına ve tutarsız davranışlara (ör. istenmeden durum paylaşımı veya kaybı, iç içe yerleştirilmişLazyLayouts
'daki sorunlar) yol açar. Tutarlı ve yerel olarak kapsamlı durum için lütfen "key" parametresini kaldırın. Daha fazla bilgi için tam commit mesajına bakın. (I5e6ff, b/357685851)
Hata Düzeltmeleri
OffsetApplier
artık duraklatılabilir kompozisyonla kullanıma sunulanapply()
öğesini doğru şekilde geçersiz kılıyor. Bu özelliğin olmaması, duraklatılabilir beste sanal düğümleri güncellerken istisna oluşturmasına neden olabilir. (Idbf31, b/409291131)- Bir çerçeve gönderilirken
FrameClock.withFrameNanos
'ya yapılan askıya alınmış bir çağrı iptal edildiğinde Molecule kullanıcılarını etkileyebilecek kilitlenme sorunu düzeltildi. (I89cab, b/407027032) - Yeniden oluşturucu, taşınabilir içerik durumu hala silinmeyi beklerken boşta kalabilir. Bu durum normalde oluşmaz, çünkü taşınabilir içerik durumu Recomposer'ın ana döngüsünde atılır. Ancak bu durum,
resume()
sırasında taşınabilir içerik atıldığında duraklatılabilir kompozisyonda ortaya çıkabilir(Ie5416, b/409267170). onReuse
veonDeactivate
, duraklatılabilir beste sırasında tersine çevrilebilir. ArtıkonDeactivate/onReuse
sırasıyla gerçekleşmeleri garanti edilir. (I996e4, b/404058957)
Sürüm 1.9.0-alpha01
23 Nisan 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha01
iptal edilir. 1.9.0-alpha01 sürümü bu commit'leri içerir.
Davranış Değişiklikleri
- Compose ile birlikte gelen Lint kontrolleri artık minimum AGP sürümü olarak 8.8.2'yi gerektiriyor. AGP'yi yükseltemiyorsanız bunun yerine
android.experimental.lint.version=8.8.2
(veya daha yeni bir sürüm) kullanarakgradle.properties
dosyanızda Lint'i tek başına yükseltebilirsiniz. Compose lint kontrollerini IDE'de çalıştırmak için Android Studio Ladybug veya daha yeni bir sürüm gerekir.
API Değişiklikleri
currentCompositeKeyHash
artık kullanımdan kaldırıldı. Bunun yerinecurrentCompositeKeyHashCode
politikasını kullanın. Yeni API, aynı karmayı daha fazla bit ile kodlar. Bu da, kompozisyon hiyerarşisindeki iki rastgele ve alakasız grubun aynı karma anahtarına sahip olma olasılığını katlanarak azaltır. (I4cb6a, b/177562901)- Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir (Idb6b5).
@Stable
,@Immutable
ve@StableMarker
, çalışma zamanı ek açıklamasına (uyumlu bir şekilde) taşındı. Artık Compose'a bağlı olmayan kitaplıklardaki bu ek açıklamaları kullanmak istiyorsanız çalışma zamanı ek açıklamalarını kullanabilirsiniz. (I23a16)onCreating
veonDisposing
, kullanımdan kaldırılıponPreCreate
veonPreDispose
olarak yeniden adlandırıldığından kaldırıldı. Bu değişiklik, yeniden adlandırma işlemini tamamlar. (I97461)- Kompozisyondaki bir Compose düğümünün konumuna göre Compose yığın izinin eklenmesine olanak tanıyan bir kompozisyon yerelini kullanıma sunar. (Ie0bda, b/354163858)
- Kompozisyonda depolanan kaynak bilgilerine göre teşhis amaçlı Compose yığın izlemeleri sunun. (I3db9f, b/354163858)
runWithTimingDisabled
yerinerunWithMeasurementDisabled
kullanın. Bu durum, davranışı daha net bir şekilde tanımlar: Tüm metrikler duraklatılır. Ayrıca,runWithMeasurementDisabled
işlevi satır içi olduğundan erişimi açmak için yeniden tanımlamak mümkün olmadığındanMicrobenchmarkScope
üst sınıfını kullanıma sunun. (I9e23b, b/389149423, b/149979716)@FrequentlyChangingValue
eklenir: İşlevlerin ve özellik alıcılarının, sık sık yeniden oluşturmaya neden olabileceği için kompozisyon içinde doğrudan çağrılmaması gerektiğini belirtmek üzere işaretlenebileceği bir ek açıklama. Örneğin, kaydırma konumu değerlerini ve animasyon değerlerini işaretlemek için. Uyarılar, ilgili lint kontrolü tarafından sağlanır. (I83630, b/234042500)@RememberInComposition
ekler: Oluşturucuları, işlevleri ve özellik alıcılarını işaretleyebilen bir ek açıklama. Bu ek açıklama, bunların hatırlanmadan doğrudan kompozisyon içinde çağrılmaması gerektiğini belirtir. Hatalar, ilgili lint kontrolü tarafından oluşturulur. Bu ek açıklama, durum bilgisi olan / değiştirilebilir nesneler, kimliğinin kompozisyonlar arasında korunmasının önemli olduğu nesneler veya oluşturulması maliyetli olan ve kompozisyonlar arasında önbelleğe alınması gereken nesneleri döndüren bildirimleri işaretlemek için kullanılabilir. (Ie7db0)- KotlinX Serialization kullanarak tür güvenli durum kalıcılığı için
KSerializer
'ı destekleyen yeni birrememberSaveable
aşırı yüklemesi eklendi. MevcutSaver
tabanlı API desteklenmeye devam edecektir. (Iea4ab, b/376028110)
Hata Düzeltmeleri
- Pausable composition'da remember gözlemcilerinin gönderilmesini düzelterek aynı uygulama içinde hatırlanan/unutulanların gönderilmesini önleme (I570b2, b/404645679, b/407931790)
- API kurallarına uymak için Creating sınıfındaki
SnapshotObserver
yöntemlerinin adıonPreCreate
olarak,onDisposing
yöntemlerinin adı iseonPreDispose
olarak değiştirildi. Önceki yöntemler kullanımdan kaldırıldı ve yeni yöntemler varsayılan olarak eskileri çağırıyor. Bu nedenle, yöntemler kaldırılana kadar bu arayüzün mevcut uygulamaları çalışmaya devam edecek. Bu yöntemler, bu CL'yi kısa süre içinde takip edecek bir CL'de 1.9.0 alfa sürümünde kaldırılacak. Bu özellikler, 1.8 kararlı sürümünden önce 1.8 beta sürümünden kaldırılacak. (I6d753) - Taşınabilir bir grubun ardından görünen, kısaltılmış bir grup yeniden oluşturulurken hatırlanan değerlerin yanlışlıkla unutulup yeniden hesaplanmasına neden olan sorun düzeltildi (I62cab, b/383769314).
LaunchedEffect
verememberCoroutineScope
'de yığın izlemeleri oluşturma desteği eklendi (I705c0, b/354163858).- Compose lint kontrolleri artık komut satırından minimum AGP sürümü 8.8.2 ve IDE desteği için en az Android Studio Ladybug gerektiriyor. AGP'nin eski bir sürümünü kullanıyorsanız Lint sürümünü AGP'yi etkilemeden yükseltmek için gradle.properties dosyasında
android.experimental.lint.version=8.8.2
değerini ayarlayabilirsiniz. (I6f2a8)
Harici Katkı (External Contribution)
AnnotationTarget.FUNCTION
,FunctionKeyMeta
ek açıklamasına eklendi. (I08021)
Sürüm 1.8
Sürüm 1.8.3
18 Haziran 2025
androidx.compose.runtime:runtime-*:1.8.3
iptal edilir. 1.8.3 sürümü bu commit'leri içerir.
Sürüm 1.8.2
20 Mayıs 2025
androidx.compose.runtime:runtime-*:1.8.2
iptal edilir. 1.8.2 sürümü bu commit'leri içerir.
Sürüm 1.8.1
7 Mayıs 2025
androidx.compose.runtime:runtime-*:1.8.1
iptal edilir. 1.8.1 sürümü bu commit'leri içerir.
Sürüm 1.8.0
23 Nisan 2025
androidx.compose.runtime:runtime-*:1.8.0
iptal edilir. 1.8.0 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc03
9 Nisan 2025
androidx.compose.runtime:runtime-*:1.8.0-rc03
iptal edilir. 1.8.0-rc03 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc02
26 Mart 2025
androidx.compose.runtime:runtime-*:1.8.0-rc02
iptal edilir. 1.8.0-rc02 sürümü bu commit'leri içerir.
Sürüm 1.8.0-rc01
12 Mart 2025
androidx.compose.runtime:runtime-*:1.8.0-rc01
iptal edilir. 1.8.0-rc01 sürümü bu commit'leri içerir.
API Değişiklikleri
- API kurallarına uymak için Creating sınıfındaki
SnapshotObserver
yöntemlerinin adıonPreCreate
olarak,onDisposing
yöntemlerinin adı iseonPreDispose
olarak değiştirildi. Önceki yöntemler kullanımdan kaldırıldı ve yeni yöntemler varsayılan olarak eskileri çağırıyor. Bu nedenle, yöntemler kaldırılana kadar bu arayüzün mevcut uygulamaları çalışmaya devam edecek. Bu yöntemler, bu CL'yi kısa süre içinde takip edecek bir CL'de 1.9.0 alfa sürümünde kaldırılacak. Bu özellikler, 1.8 kararlı sürümünden önce 1.8 beta sürümünden kaldırılacak. (I6d753)
Sürüm 1.8.0-beta03
26 Şubat 2025
androidx.compose.runtime:runtime-*:1.8.0-beta03
iptal edilir. 1.8.0-beta03 sürümü bu commit'leri içerir.
Sürüm 1.8.0-beta02
12 Şubat 2025
androidx.compose.runtime:runtime-*:1.8.0-beta02
iptal edilir. 1.8.0-beta02 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Yakalanan istisnayı duraklatılabilir beste içinde yeniden oluşturun .(384486d)
Sürüm 1.8.0-beta01
29 Ocak 2025
androidx.compose.runtime:runtime-*:1.8.0-beta01
iptal edilir. 1.8.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
- Derleme sırasında Exception'dan türemeyen bir Throwable'ın oluşturulmasının "Pending composition has not been applied" (Bekleyen derleme uygulanmadı) hatasına yol açabildiği sorun düzeltildi. (I356be, b/382094412)
Sürüm 1.8.0-alpha08
15 Ocak 2025
androidx.compose.runtime:runtime-*:1.8.0-alpha08
iptal edilir. 1.8.0-alpha08 sürümü bu commit'leri içerir.
Sürüm 1.8.0-alpha07
11 Aralık 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha07
iptal edilir. 1.8.0-alpha07 sürümü bu commit'leri içerir.
API Değişiklikleri
- Bir düğüm, kompozisyonları birbirine bağlamak için kullanılmadığında düzen inceleyicinin alt kompozisyonları üst kompozisyonla ilişkilendirmesine yardımcı olan bir araç API'si eklendi. (I4ce3d)
SnapshotId
için aritmetik ve özel sabitler herkese açık yerine kuruluş içinde kullanılabilir hale getirildi. GerekirseSnasphotId
üzerinde aritmetik işlemler yapılabilir. Bunun için sırasıylatoInt()
veyatoLong()
kullanılarakInt
ya daLong
'ye dönüştürülmelidir. (Ic3a57)
Harici Katkı (External Contribution)
- Depolamayı
movableContentOf
parametreleri için optimize edin. (ed87177)
Sürüm 1.8.0-alpha06
13 Kasım 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06
iptal edilir. 1.8.0-alpha06 sürümü bu commit'leri içerir.
API Değişiklikleri
PausableComposition
API'de yapılan değişiklikler. Bu değişiklikler, 1.8.0-alpha'nın önceki sürümlerine (1.8.0-alpha02'den beri) göre uyumluluğu bozmaktadır. Ancak bunlar 1.8.0'daki yeni API'ler olduğundan API'ler hâlâ alfa sürümünde olduğundan geriye dönük uyumluluk korunmaz. (I39819)- Bir Recomposer'da yeni kompozisyonların oluşturulmasını gözlemlemek için araç API'leri ekler (Iaeb7e).
Snapshot
'yeLong
türündesnapshotId
eklendi veid
desteği sonlandırıldı. Anlık görüntü kimliğinin, çok yüksek kare hızlarına ve uzun süren animasyonlara sahip sistemlerde taşmasını önlemek için anlık görüntü kimliğiInt
olarak değiştirildi.Long
Bu türün, yerelLong
türü olmayan platformlardaInt
veya başka bir tür olmasına izin vermek için türün beklenmesi/gerçekleşmesi sağlandı. JavaScript gibi yerelLong
'si olmayan platformlar, yaklaşık 24 günde birInt
taşmasına neden olacak yüksek kare hızlarından (1.000 FPS'nin üzerinde) kaçınmalıdır. (I38ac3, b/374821679)
Hata Düzeltmeleri
- Tek bir
provides
için sabitprovidesDefault
. (aosp/3318540 b/374263387) ChangeList
optimize edin. (3318538)
Sürüm 1.8.0-alpha05
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05
iptal edilir. 1.8.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
Int.MAX_VALUE
öğesiniSnapshotIdSet
öğesine ekleyerek yığın taşmasını düzeltin. (b/370536104, Ic4179f6)- Çalışma zamanı mikro optimizasyonları (I50c60)
- R8'in hata ayıklama sırasında çalışma zamanı kontrolü çağrılarını kaldırmasına izin verin (I8c44)
compoundKeyOf
yinelemeli yerine yinelemeli hale getirin (I5817f)
Harici Katkı (External Contribution)
- Koleksiyon listeleriyle grupları uygulama (I7d47c)
Sürüm 1.8.0-alpha04
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04
iptal edilir. 1.8.0-alpha04 sürümü bu commit'leri içerir.
Performans İyileştirmeleri
- Oluşturucuda durum kayıtları için anlık görüntü kimliği sağlama (85c00f)
- Sınıf doğrulama hatalarını önlemek için
SnapshotState***
öğesini yeniden düzenleyin (6ee4a6) - Throw inlining'i önlemek için R8 kurallarını düzeltin (5beb92)
- İşlemleri mikro düzeyde optimize etme (d73c5c)
- JVM'de
SynchronizedObject
ayırmalarını optimize etme (2b043f)
Sürüm 1.8.0-alpha03
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03
iptal edilir. 1.8.0-alpha03 sürümü bu commit'leri içerir.
Performans İyileştirmeleri
rememberCoroutineScope
için alt bağlamı geç oluşturma (f61464)rememberCoroutineScope
genellikle kompozisyon sonrası gerçekleşen etkinliklere yanıt olarak eşzamanlı rutinleri başlatmak için kullanılır. Bazı senaryolarda bu etkinlikler hiç gerçekleşmeyebilir ve bu da herhangi bir fayda sağlamadan iş oluşturma ve iptal etme işlemlerinin ek maliyetlere yol açmasına neden olur.rememberCoroutineScope
tarafından döndürülen kapsamın, erişildiğindecoroutineContext
öğesini geç oluşturmasını sağlayın. Kapsam hiç kullanılmazsa iş oluşturma ve iptal etme işlemlerini tamamen önleyin.
Sürüm 1.8.0-alpha02
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02
iptal edilir. 1.8.0-alpha02 sürümü bu commit'leri içerir.
Yeni Özellikler
- Bileşim sırasında duraklatılabilen ve bileşime eşzamansız olarak uygulanabilen bir alt bileşim oluşturmaya olanak tanıyan
PausableComposition
eklendi. Şu anda geliştirme aşamasında olan duraklatma özelliği için derleyici desteği gereklidir. (I3394b)
Sürüm 1.8.0-alpha01
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01
iptal edilir. 1.8.0-alpha01 sürümü bu commit'leri içerir.
Sürüm 1.7
Sürüm 1.7.8
12 Şubat 2025
androidx.compose.runtime:runtime-*:1.7.8
iptal edilir. 1.7.8 sürümü bu commit'leri içerir.
Sürüm 1.7.7
29 Ocak 2025
androidx.compose.runtime:runtime-*:1.7.7
iptal edilir. 1.7.6 sürümünden itibaren değişiklik yok.
androidx.compose.runtime:runtime-*:1.7.6
iptal edilir. 1.7.6 sürümü bu commit'leri içerir.
Sürüm 1.7.5
30 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.5
iptal edilir. 1.7.5 sürümü bu commit'leri içerir.
Sürüm 1.7.4
16 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.4
iptal edilir. 1.7.4 sürümü bu commit'leri içerir.
Sürüm 1.7.3
2 Ekim 2024
androidx.compose.runtime:runtime-*:1.7.3
iptal edilir. 1.7.3 sürümü bu commit'leri içerir.
Sürüm 1.7.2
18 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.2
iptal edilir. 1.7.2 sürümü bu commit'leri içerir.
Sürüm 1.7.1
10 Eylül 2024
- Android yapıları değiştirilmez.
-desktop
yapı kaldırıldı,-jvmStubs
ve-linuxx64Stubs
yapıları eklendi. Bu hedeflerden hiçbiri kullanılmak üzere tasarlanmamıştır. Jetbrains Compose çalışmalarına yardımcı olmak için yer tutucu olarak kullanılırlar.
Sürüm 1.7.0
4 Eylül 2024
androidx.compose.runtime:runtime-*:1.7.0
iptal edilir. 1.7.0 sürümü bu commit'leri içerir.
1.6.0 sürümünden beri yapılan önemli değişiklikler
- Diğer beste yerellerinin değerlerine göre hesaplanan bir beste yereli sağlamak için varsayılan olarak
compositionLocalWithComputedDefault()
kullanma veyaprovides
yerineprovidesComputed
kullanarak değeri hesaplamak için kullanılacak bir lambda sağlama özelliği eklendi. - Bir kompozisyon yerelinin değeri, değeri hesaplayan lambda'dan erişilebilen kompozisyon yerelinin
currentValue
özelliği kullanılarak elde edilebilir. Bu, yalnızca@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ü de dahil olmak üzere diğer anlık görüntülerden hemen erişilebilir. Sonraki değişiklikler, nesnenin oluşturulduğu anlık görüntü uygulanana kadar görünmez.
mutableStateOf()
'nın ilk durumu ve temel sürümleri,mutableStateOf()
'ya parametre olarak iletilen değerdir.mutableStateListOf()
vemutableStateMapOf()
başlangıçta boştur.- Durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilir olmasını sağlamak için kullanılan
Snapshot.isInSnapshot
veSnapshot.PreexistingSnapshotId
eklendi. - Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin düzenini izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
- Oluşturma kitaplıkları için
nonSkippingGroupOptimization
'ı etkinleştirin. Bu, androidx'teki yeniden başlatılamayan tüm composable işlevler için oluşturulan kodun daha verimli olmasını sağlar. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08) - Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)- Güçlü atlama modunu etkinleştirme (ed1766)
currentCompoundHashKey
cihazını daha fazla durumda benzersiz hale getirme (d4a872)
Sürüm 1.7.0-rc01
21 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01
iptal edilir. 1.7.0-rc01 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta07
7 Ağustos 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
iptal edilir. 1.7.0-beta07 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta06
24 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06
iptal edilir. 1.7.0-beta06 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta05
10 Temmuz 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05
iptal edilir. 1.7.0-beta05 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta04
26 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04
iptal edilir. 1.7.0-beta04 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta03
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03
iptal edilir. 1.7.0-beta03 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta02
29 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02
iptal edilir. 1.7.0-beta02 sürümü bu commit'leri içerir.
Sürüm 1.7.0-beta01
14 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01
iptal edilir. 1.7.0-beta01 sürümü bu commit'leri içerir.
Sürüm 1.7.0-alpha08
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08
iptal edilir. 1.7.0-alpha08 sürümü bu commit'leri içerir.
Sürüm 1.7.0-alpha07
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07
iptal edilir. 1.7.0-alpha07 sürümü bu commit'leri içerir.
Yeni Özellikler
- Diğer beste yerellerinin değerlerine göre hesaplanan bir beste yereli sağlamak için varsayılan olarak
compositionLocalWithComputedDefault()
kullanma veyaprovides
yerineprovidesComputed
kullanarak değeri hesaplamak için kullanılacak bir lambda sağlama özelliği eklendi. - Bir kompozisyon yerelinin değeri, değeri hesaplayan lambda'dan erişilebilen kompozisyon yerelinin
currentValue
özelliği kullanılarak elde edilebilir. Bu, yalnızca@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ü de dahil olmak üzere diğer anlık görüntülerden hemen erişilebilir. Sonraki değişiklikler, nesnenin oluşturulduğu anlık görüntü uygulanana kadar görünmez.
mutableStateOf()
'nın ilk durumu ve temel sürümleri,mutableStateOf()
'ya parametre olarak iletilen değerdir.mutableStateListOf()
vemutableStateMapOf()
başlangıçta boştur.- Durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilir olmasını sağlamak için kullanılan
Snapshot.isInSnapshot
veSnapshot.PreexistingSnapshotId
eklendi. - Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin düzenini izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
Hata Düzeltmeleri
- İç içe yerleştirilmiş anlık görüntülerde
readObserver
birleştirme sorunu düzeltildi. Bu durum, iç içe yerleştirilmiş türetilmiş durumlarınsnapshotFlow
içinde kullanıldığında geçersiz kılınmamasına neden oluyordu. (Idf138)
Sürüm 1.7.0-alpha06
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06
iptal edilir. 1.7.0-alpha06 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Tek değer sağlama işleme sorununu düzeltme
providesDefault
(538f45) - Recomposer'ın kare saatine erişirken kilitlenmeyi önleme (07e5c6)
Sürüm 1.7.0-alpha05
20 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05
iptal edilir. 1.7.0-alpha05 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
- Devre dışı bırakılan beste üzerindeki geç değişiklikleri temizleme (5950bc)
Sürüm 1.7.0-alpha04
6 Mart 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04
iptal edilir. 1.7.0-alpha04 sürümü bu commit'leri içerir.
Performans İyileştirmeleri
- Türetilmiş durum değerlendirmesi başına bir kez
Snapshot.current
çağrısı yapın (ee7daf). - Bileşimdeki her gözlem için
currentRecord
bir kez okunur (b882b2). snapshotFlow
içinde yanlışlıkla yapılan yineleyici ayırmayı kaldırma (231e56)- Oluşturma kitaplıkları için
nonSkippingGroupOptimization
'ı etkinleştirin. Bu, androidx'teki yeniden başlatılamayan tüm composable işlevler için oluşturulan kodun daha verimli olmasını sağlar. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08)
Sürüm 1.7.0-alpha03
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03
iptal edilir. 1.7.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
- Değişiklik algılamayı iyileştirmek için grupları değiştirme özelliğini kullanıma sunma (0941b5)
Performans İyileştirmeleri
- Değişiklikleri algılarken bellek tahsisini iyileştirme (53e7fd)
- Yazma aracındaki bellek sızıntısı düzeltildi (0e097d).
- Yeniden oluşturma sırasında geçersiz kılmaları iletmek için
ScopeMap
kullanın (e19a7e) - İptal haritasını yalnızca türetilmiş durumları koruyacak şekilde optimize edin (f11c44)
IdentityArraySet
kullanımlarınıScatterSet
ile değiştirme (db572e)ScopeMap
içinde OptimizeremoveScope
(bb0530)
Sürüm 1.7.0-alpha02
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02
iptal edilir. 1.7.0-alpha02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)snapshotFlow
'da gözlemlenmeyen filtre değiştirme durumları. (796b80)
Performans İyileştirmeleri
- Anlık görüntü gözlemcisini, şeffaf olduğunda yerinde değiştirme. (f60f30)
SnapshotIdSet.lowest()
optimize edin. (7ae149)SnapshotIdSet
uygulamasında tahsis içermeyen birfold()
kullanın. (532b7d)- Yineleyici ayırmayı kaldırma (83f96b)
Sürüm 1.7.0-alpha01
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01
iptal edilir. 1.7.0-alpha01 sürümü şu commit'leri içerir.
Performans optimizasyonları
- Alt grup eklendikten sonra yer oluşturma özelliği eklendi (b5960c)
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
- Güçlü atlama modunu etkinleştirme (ed1766)
Hata Düzeltmeleri
- İçsel hatırlamada varsayılan parametre meta verileri için hesap (096665)
currentCompoundHashKey
cihazını daha fazla durumda benzersiz hale getirme (d4a872)- Satır içi işlev çağrısından çıkarken grupları gerçekleştirme (2a90fc)
Sürüm 1.6
Sürüm 1.6.8
12 Haziran 2024
androidx.compose.runtime:runtime-*:1.6.8
iptal edilir. 1.6.8 sürümü bu commit'leri içerir.
Sürüm 1.6.7
1 Mayıs 2024
androidx.compose.runtime:runtime-*:1.6.7
iptal edilir. 1.6.7 sürümü bu commit'leri içerir.
Sürüm 1.6.6
17 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.6
iptal edilir. Son sürümden bu yana değişiklik yapılmadı.
Sürüm 1.6.5
3 Nisan 2024
androidx.compose.runtime:runtime-*:1.6.5
iptal edilir. 1.6.5 sürümü bu commit'leri içerir.
Sürüm 1.6.4
20 Mart 2024
androidx.compose.runtime:runtime-*:1.6.4
iptal edilir. 1.6.4 sürümü bu commit'leri içerir.
Sürüm 1.6.3
6 Mart 2024
androidx.compose.runtime:runtime-*:1.6.3
iptal edilir. 1.6.3 sürümü bu commit'leri içerir.
Sürüm 1.6.2
21 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.2
iptal edilir. 1.6.2 sürümü şu commit'leri içerir.
Sürüm 1.6.1
7 Şubat 2024
androidx.compose.runtime:runtime-*:1.6.1
iptal edilir. 1.6.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
onRelease
geri arama işlevinionForgotten
ile aynı sırada çağırın. (2cd790)snapshotFlow
'da gözlemlenmeyen filtre değiştirme durumları. (796b80)
Sürüm 1.6.0
24 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0
iptal edilir. 1.6.0 sürümü şu commit'leri içerir.
1.5.0 sürümünden beri yapılan önemli değişiklikler
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden oluşturma (4dff9a)
Performans optimizasyonları
- Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
rememberSaveable
optimize edin (f01d79)- Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
- Yerel değerlerin sağlanmasıyla ilgili kompozisyonu iyileştirme (a337ea)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısı düzeltildi (73fcfe)
- Kaldırılacak alt bileşenlerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
- Yalnızca hatırlama hesaplamasında depolandığında
RememberObserver
yaşam döngülerini tetikleyin. (f6b4dc) $dirty
yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)- Bazen yanlış kompozisyon yerelleri alan taşınabilir içerik düzeltildi. (035cd6)
Sürüm 1.6.0-rc01
10 Ocak 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01
iptal edilir. 1.6.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta03
13 Aralık 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03
iptal edilir. 1.6.0-beta03 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta02
29 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02
iptal edilir. 1.6.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.6.0-beta01
15 Kasım 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01
iptal edilir. 1.6.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Açıklamada belirli kararlılık değerlerini yayma (274a4c)
Hata Düzeltmeleri
- Bağlamda yerel kapsam durumunu oluşturmak için referans politikası kullanın. (83361c)
- $dirty yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)
- Bazen yanlış kompozisyon yerelleri alan taşınabilir içerik düzeltildi. (035cd6)
RecomposeScopeImpl
'da daha hızlı, tahsis etmeyen karma haritalar kullanın. (d79494)DerivedState
uygulamasındaObjectIntMap
kullanın. (21862e)DerivedState
uygulamasındaSnapshotThreadLocal
içinIntRef
kullanın. (04eaf4)
Sürüm 1.6.0-alpha08
18 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08
iptal edilir. 1.6.0-alpha08 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yalnızca hatırlama hesaplamasında depolandığında
RememberObserver
yaşam döngülerini tetikleyin. (f6b4dc) - Geçersiz kılma listesi sıralamasındaki dağıtımları iyileştirin. (954d63)
SnapshotStateObserver
'da yeni, yer ayırmayan haritaları kullanın. (4303ce)- Beste devre dışı bırakıldığında geçersiz kılmaları temizleyin. (e001be)
Sürüm 1.6.0-alpha07
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07
iptal edilir. 1.6.0-alpha07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Liste yardımcılarının doğrudan dizine ekleme sürümünün kullanılabilmesi için
SnapshotStateList
artıkRandomAccess
olarak işaretleniyor. (I5210c, b/219554654)
Sürüm 1.6.0-alpha06
20 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06
iptal edilir. 1.6.0-alpha06 sürümü şu commit'leri içerir.
Sürüm 1.6.0-alpha05
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05
iptal edilir. 1.6.0-alpha05 sürümü şu commit'leri içerir.
Sürüm 1.6.0-alpha04
23 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04
iptal edilir. 1.6.0-alpha04 sürümü şu commit'leri içerir.
Yeni Özellikler
- Yeniden oluşturma döngüsü sırasında yutulan istisnaları yeniden oluşturma (4dff9a)
API Değişiklikleri
ReusableComposition
'ı devre dışı bırakma yöntemi eklendi. Bu yöntem, gözlemleri kaldırır ancak düğümleri yerinde tutar. Devre dışı bırakılan kompozisyon,setContent
aranarak tekrar etkinleştirilebilir. (Ib7f31)- Alt bileşenlerin yaşam döngüsünü ve yeniden kullanımını yönetmek için
ReusableComposition
arayüzü eklendi. (I812d1, b/252846775)
Sürüm 1.6.0-alpha03
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03
iptal edilir. 1.6.0-alpha03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yeni
CompositionLocalProvider
optimizasyonunu düzeltin (3118e88) - Taşınabilir içerik düğümlerinin nasıl söküldüğünü düzeltir. (5e3d59b)
Sürüm 1.6.0-alpha02
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02
iptal edilir. 1.6.0-alpha02 sürümünde şu commit'ler yer alıyor.
Yeni Özellikler ve Performans İyileştirmeleri
rememberSaveable
optimize edin (f01d79)- Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
- Yerel değerlerin sağlanmasıyla ilgili kompozisyonu iyileştirme (a337ea)
- Grup oluşturulmasını önlemek 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ğer sağlamayı hızlandırmak için kullanılan ancak tek bir değer sağlarken ek yük oluşturan ek yükü önleyen özel bir durum aşırı yüklemesi eklendi. (I6d640, b/288169379)
Hata Düzeltmeleri
- Yuva tablosu bellek sızıntısı düzeltildi (73fcfe)
stateSaver
boş değer döndürdüğünderememberSaveable
öğesinin nasıl geri yüklendiğiyle ilgili sorun düzeltildi (90748c).
Sürüm 1.6.0-alpha01
21 Haziran 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01
iptal edilir. 1.6.0-alpha01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt bileşenlerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
- Anlık görüntüler uygulanırken daha az yer ayırma. (I65c09)
- Anlık görüntü değiştirilmediyse
readableHash
değeriniDerivedState
içinde 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
iptal edilir. 1.5.4 sürümü şu commit'leri içerir.
Sürüm 1.5.3
4 Ekim 2023
androidx.compose.runtime:runtime-*:1.5.3
iptal edilir. 1.5.3 sürümü şu commit'leri içerir.
Sürüm 1.5.2
27 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.2
iptal edilir. 1.5.2 sürümü şu commit'leri içerir.
Sürüm 1.5.1
6 Eylül 2023
androidx.compose.runtime:runtime-*:1.5.1
iptal edilir. 1.5.1 sürümü şu commit'leri içerir.
Sürüm 1.5.0
9 Ağustos 2023
androidx.compose.runtime:runtime-*:1.5.0
iptal edilir. 1.5.0 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
'daki ayırmalar kaldırıldı. (Ib2bfa) - Durum oluşturan ve
remember
çağrısı içine alınması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklaması eklendi. (I64550) - State ve
MutableState
'in temel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPending
eklendi (I672a5)State
API'nin temel sürümleri eklendi. Böylece,State
nesnelerinde autoboxing cezası olmadan Int, Long, Float ve Double değerleri izlenebilecek. Bunları kullanmak için yeni fabrika yöntemlerimutableIntState(Int)
,mutableFloatStateOf(Float)
vb. kullanın. (I48e43)
Hata Düzeltmeleri
- Kaldırılacak alt bileşenlerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
ComposerImpl
içinde anlık görüntü referansını saklama (0206f7)- Bileşimi iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun (aa2a92).
- Beste oluşturma sırasında
onEndChanges
çağrısı yapma. (62cc8c) - İçeriğin alt kompozisyona taşınmasıyla ilgili sorunu düzeltme (4beb41)
- Olası kilitlenmeleri düzeltme (c1a425 ve 8edce0)
- Android penceresi için oluşturulan yeniden oluşturucu, artık ON_STOP bildirimi aldığında tüm bileşim yerine yalnızca
withFrameNanos
'ya yapılan aramaları engeller. Bu durumda, durdurulan etkinliklerle ilişkili pencereler veri değişiklikleri için yeniden oluşturulmaya devam eder ancak animasyonlar veyawithFrameNanos
'nın diğer tüm arayanları engellenir. (Id9e7f, b/240975572) - Efektleri silmeden önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün 3784073 - Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
- Düğümlerle 73fd4d8 birleştirilebilir öğeler için canlı düzenleme regresyonunu düzeltme
- ON_STOP, ae276f1 kompozisyonu yerine kare saati yayınlarını duraklatmalıdır.
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserver
kapsamlarını geçersiz kılma 84d9b1c - Kompozisyonları atarken olası kilitlenmeyi düzeltme 28761fc
- İçeriği alt kompozisyona taşıma sorununu düzeltme 92d4156
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri silmeden önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4) - Düğüm gruplarını sonlandırırken
endToMarker()
düzeltildi. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullanma (a0b518b) SlotTable.moveSlotGapTo()
içindekifill
öğesini kaldırıp kapatma düğmesine (81f9935) taşıyın.- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik kalması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içeriklerdeki anında geçersiz kılma sorunlarını düzeltme (8676618)
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
readableHash
değeriniDerivedState
içinde hesaplamayın. (307102) - Daha az yer ayırma (I65c09, d7ea77, 727974 ve 445808)
- E-posta oluşturma işlemini hızlıca iptal etme
CoroutineScopes
(a55362 ve bd382f) - Durum nesnelerinin kayıtlarının üzerine erişilemeyen durum kayıtlarıyla yazma (c986960)
- Grupları gerçekleştirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Anlık görüntü iptallerini depolamak için
IdentityArraySet
kullanın (7f60cca) - Anlık görüntü gözlemleri için ayrılan alanı azaltma (5bc535f)
Sürüm 1.5.0-rc01
26 Temmuz 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01
iptal edilir. 1.5.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Değişiklikler kaydedilene kadar türetilmiş durumların yeniden okunmasını erteleme (f38099)
mutableStateOf()
çağrılarını karşılık gelen özel türlere taşımayı önermek için isteğe bağlı bir inceleme yapılabilir. Lint kimliğiAutoboxingStateCreation
'dır. Daha önce bu inceleme, tüm projeler için varsayılan olarak etkinleştirilmişti. Bu uyarıyı Android Studio'nun düzenleyicisinde ve projenizin lint çıktılarında görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasındawarning "AutoboxingStateCreation"
öğesini bildirerek önem derecesini bilgilendirme düzeyinden uyarı düzeyine (veya daha yüksek bir düzeye) değiştirin (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Sürüm 1.5.0-beta03
28 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03
iptal edilir. 1.5.0-beta03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Kaldırılacak alt bileşenlerin yeniden oluşturulmasını atlayın. (Ieeb99, b/254645321)
Sürüm 1.5.0-beta02
7 Haziran 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02
iptal edilir. 1.5.0-beta02 sürümü şu commit'leri içerir.
Performans İyileştirmeleri
- Anlık görüntü değiştirilmediyse
readableHash
değeriniDerivedState
içinde hesaplamayın. (307102)
Sürüm 1.5.0-beta01
24 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01
iptal edilir. 1.5.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeniden oluşturma, renk animasyonları ve
AndroidComposeView
(Ib2bfa) işlemlerinde ayrılan alanlar kaldırıldı. - Durum oluşturan ve
remember
çağrısı içine alınması gereken işlevleri işaretlemek için@StateFactoryMarker
ek açıklaması eklendi. (I64550) - State ve
MutableState
'in temel sürümlerini ekleyin (fb3d89) Snapshot.isApplyObserverNotificationPending
eklendi (I672a5)
Hata Düzeltmeleri
- Daha az yer ayırma (I65c09, d7ea77, 727974 ve 445808)
ComposerImpl
içinde anlık görüntü referansını saklama (0206f7)- E-posta oluşturma işlemini hızlıca iptal etme
CoroutineScopes
(a55362 ve bd382f) - Bileşimi iki kez uygulamayın (f5791b)
- Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun (aa2a92).
- Beste oluşturma sırasında
onEndChanges
çağrısı yapma. (62cc8c) - İçeriğin alt kompozisyona taşınmasıyla ilgili sorunu düzeltme (4beb41)
- Olası kilitlenmeleri düzeltme (c1a425
- ON_STOP, kompozisyon yerine kare saati yayınlarını duraklatmalıdır (f4a2d1).
- Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
- Efektleri silmeden önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4)
Harici Katkı (External Contribution)
Snapshot.isApplyObserverNotificationPending
eklendi (I672a5)
Sürüm 1.5.0-alpha04
10 Mayıs 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04
iptal edilir. 1.5.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
State
API'nin temel sürümleri eklendi. Böylece,State
nesnelerinde autoboxing cezası olmadan Int, Long, Float ve Double değerleri izlenebilecek. Bunları kullanmak için yeni fabrika yöntemlerimutableIntState(Int)
,mutableFloatStateOf(Float)
vb. kullanın. (I48e43)
Hata Düzeltmeleri
Beste oluşturma sırasında
onEndChanges
çağrısı yapma.Composition.dispose
sırasında kaldırılan odak düğümleri, odağı sıfırlamak içinonEndChanges
'e abone oluyor.(03d4a47)Başlatılmamış türetilmiş durum değerleri için geçersiz kılma işleminin yapıldığından emin olun. Her türetilmiş durum,
SnapshotStateObserver
içinde bağımlılıklarının bir listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilmiş durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, türetilmiş durum okuma işleminden sonra (Snapshot.notifyObjectsInitialized()
çağrısı nedeniyle) gerçekleşebilen anlık görüntü ilerletme işlemine kaydedilir.SnapshotStateObserver
'daki önceki türetilmiş durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değeri okuyordu. Bu durum, temizlenmiş bir durumda geçersiz kılma işleminin gerçekleştiği ve bağımlılık geçersiz kılma işleminin kaydedilmediği bir yarış durumuna neden oldu.Bu değişiklik, türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralayarak geçersiz kılma işleminin her zaman geçerli bir durumda gerçekleşmesini sağlar. (c472be6)
Sürüm 1.5.0-alpha03
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03
iptal edilir. 1.5.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
- Android penceresi için oluşturulan yeniden oluşturucu, artık ON_STOP bildirimi aldığında tüm bileşim yerine yalnızca
withFrameNanos
'ya yapılan aramaları engeller. Bu durumda, durdurulan etkinliklerle ilişkili pencereler veri değişiklikleri için yeniden oluşturulmaya devam eder ancak animasyonlar veyawithFrameNanos
'nın diğer tüm arayanları engellenir. (Id9e7f, b/240975572)
Hata Düzeltmeleri
- Anlık görüntü listesi ve haritada olası kilitlenmeyi düzeltme 5c1a425
- Efektleri silmeden önce
LayoutNode
için devre dışı bırakma geri çağırmalarını yürütün 3784073 - Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
- Düğümlerle 73fd4d8 birleştirilebilir öğeler için canlı düzenleme regresyonunu düzeltme
- ON_STOP, ae276f1 kompozisyonu yerine kare saati yayınlarını duraklatmalıdır.
- Değişmeyen türetilmiş durumlar için
SnapshotStateObserver
kapsamlarını geçersiz kılma 84d9b1c - Kompozisyonları atarken olası kilitlenmeyi düzeltme 28761fc
- İçeriği alt kompozisyona taşıma sorununu düzeltme 92d4156
Sürüm 1.5.0-alpha02
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02
iptal edilir. 1.5.0-alpha02 sürümü şu commit'leri içerir.
Yeni Özellikler
- Kotlin'in
getValue
operatörü artık composable olabilir (f174f6e)
Hata düzeltmeleri, performans iyileştirmeleri
- Durum nesnelerinin kayıtlarının üzerine erişilemeyen durum kayıtlarıyla yazma (c986960)
- Grupları gerçekleştirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
- Düğüm gruplarını sonlandırırken
endToMarker()
düzeltildi. (d71d980) - Devre dışı bırakma kontrolü için mevcut
SlotWriter
grubunu kullanma (a0b518b) - Anlık görüntü iptallerini depolamak için
IdentityArraySet
kullanın (7f60cca) SlotTable.moveSlotGapTo()
içindekifill
öğesini kaldırıp kapatma düğmesine (81f9935) taşıyın.- Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik kalması sorununu düzeltme (1d7c024)
- Taşınan taşınabilir içeriklerdeki anında geçersiz kılma sorunlarını düzeltme (8676618)
- Anlık görüntü gözlemleri için ayrılan alanı azaltma (5bc535f)
Sürüm 1.5.0-alpha01
22 Mart 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01
iptal edilir. 1.5.0-alpha01 sürümü şu commit'leri içerir.
Yeni Özellikler
Modifier.Node#coroutineScope
işlevinin, eşzamanlı rutinleri başlatmasına olanak tanımak içinModifier.Nodes
işlevi eklenir (I76ef9).CompositionLocalConsumerModifierNode
arayüzünü uygulayarakModifier.Nodes
uygulamasınınCompositionLocals
okumasına izin verin. (Ib44df)
Sürüm 1.4
Sürüm 1.4.3
3 Mayıs 2023
androidx.compose.runtime:runtime-*:1.4.3
, herhangi bir değişiklik yapılmadan yayınlanır.
Sürüm 1.4.2
19 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.2
iptal edilir. 1.4.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Anlık görüntü listesi ve haritasındaki olası kilitlenmeyi düzeltme 2eb6570
SnapshotStateList
veyaSnapshotStateMap
öğesine içerik ekleme işlemi, değişiklik durum kaydına doğrudan yazma işlemiyle eş zamanlı olarak yapılıyorsa kilitlenmeyle karşılaşabilir. Bu durum, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma işlemlerini kullanan 93fcae828b tarafından sunulan değişikliklerle karşılaşma olasılığı önemli ölçüde artmıştır.Artık harita veya liste kilidi tutulurken asla anlık görüntü kilidi alınmaya çalışılmaz.
Sürüm 1.4.1
5 Nisan 2023
androidx.compose.runtime:runtime-*:1.4.1
iptal edilir. 1.4.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Düğüm grupları sonlandırılırken
endToMarker()
düzeltildi. d71d980
Sürüm 1.4.0
22 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0
iptal edilir. 1.4.0 sürümü şu commit'leri içerir.
1.3.0 sürümünden beri yapılan önemli değişiklikler
- İlk beste için
LiveData
'den başlatılan değeri kullanma 3680e25 - Compose düğümlerinin yaşam döngüsünü gözlemlemek için
ComposeNodeLifecycleCallback
ekleyin. 8b6a258 parameterTypes
mülkünüComposableMethod
7b6c7ad kimliğine ekleme
Hata Düzeltmeleri ve Performans İyileştirmeleri
SnapshotStateObserver
29f4a3e içinde her iki kapsam dizinini de temizleyin.- Atlanamayan lambda'ların gövdesinde gereken grupları ekleyin 7d06752
- Anlık görüntü durumu 93fcae8'in bellek referans özelliklerini iyileştirin.
- Kompozisyon yerel aramalarında kutuyu kaldırma 0875717
- Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanma 6388d8d
SnapshotStateObserver
'ı yinelemeli ve eşzamanlı uygulamalardan koruma 98cb6baIdentityArraySet
"get" yöntemine bir check-index-bounds kontrolü eklendi 35a77d3ViewTreeLifecycleOwner
uzantılarını kullanmak için oluşturma modülünü güncelleme 21c2122- Recomposer kareyi bitirdikten sonra uygulama bildirimlerini gönder. 98f2641
- Recomposer'ı iptal ederken oluşan sınırların dışında dizin kilitlenmesi sorununu düzeltme 8f8656f
- Composition'ın üst sağlayıcıları değiştiyse her zaman yeniden oluşturmayı zorunlu kılın 9526fcc
- İptal edilen işler için yeniden oluşturma toleransı a55f7ed
- Çok sayıda beste için geçersiz kılma işlemlerini iyileştirme 9b7ed67
- Yerel olmayan iadeler için kapatma grupları oluşturma sorununu düzeltme b6f590c
Sürüm 1.4.0-rc01
8 Mart 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01
iptal edilir. 1.4.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Sürüm 1.4.0-beta02
22 Şubat 2023
androidx.compose.runtime:runtime:1.4.0-beta02
ve androidx.compose.runtime:runtime-saveable:1.4.0-beta02
yayınlandı. 1.4.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.4.0-beta01
8 Şubat 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01
iptal edilir. 1.4.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Compose düğümlerinin yaşam döngüsünü gözlemlemeye olanak tanıyan
ComposeNodeLifecycleCallback
eklendi (I3731b) - Bu işlev yalnızca test ortamında güvenli bir şekilde çağrılabildiğinden
@TestOnly
,Composer.disableSourceInformation()
'e eklendi. (I896c8)
Hata Düzeltmeleri
- Bileşim yerel aramalarında kutu kaldırma (62f66a)
- Anlık görüntü durumunun bellek referans özelliklerini iyileştirme (dfb451)
Sürüm 1.4.0-alpha05
25 Ocak 2023
androidx.compose.runtime:runtime:1.4.0-alpha05
ve androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
yayınlandı. 1.4.0-alpha05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Satır içi/kullanımdan kaldırılmış-gizli işlevlerin türü/nullability'siyle ilgili daha fazla bilgi (I24f91)
Sürüm 1.4.0-alpha04
11 Ocak 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
iptal edilir. 1.4.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
TestMonotonicFrameClock
artık doğru deneysel notu kullanıyor. (I95c9e)
Hata Düzeltmeleri
SnapshotStateObserver
öğesini yinelemeli ve eşzamanlı uygulamalardan koruyun (d902fb)
Sürüm 1.4.0-alpha03
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
iptal edilir. 1.4.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
ComposableMethod
sınıfınajava.lang.reflect.Method#getParameterTypes()
(Iab0c3) ile benzer yeni bir herkese açık yöntem ekleme
Hata Düzeltmeleri
- Anlık görüntü uygulama bildirimleri artık
Recomposer
değişiklikleri uyguladıktan sonra gönderiliyor. (Iad6c0, b/222093277)
Sürüm 1.4.0-alpha02
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
iptal edilir. 1.4.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.4.0-alpha01
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
iptal edilir. 1.4.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
SnapshotStateList
veSnapshotStateMap
artık sırasıylatoList()
vetoMap()
'nin açık uygulamalarına sahiptir. Bu yöntemler, içeriklerini depolamak için kullanılan dahili değişmez verileri döndürdüklerinden, kopyalama işlemi yapmadan mevcut içeriklerini döndürür. Bu değer, örneğin verilerin kopyalanması gerekmedensnapshotFlow
kullanılarak 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
iptal edilir. 1.3.3 sürümü şu commit'leri içerir.
- 1.3.2 sürümünden beri değişiklik yok
Sürüm 1.3.2
7 Aralık 2022
androidx.compose.runtime:runtime-*:1.3.2
iptal edilir. 1.3.2 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- androidx.compose.ui 1.3.2'yi destekleyecek şekilde güncellendi
Sürüm 1.3.1
9 Kasım 2022
androidx.compose.runtime:runtime-*:1.3.1
iptal edilir. 1.3.1 sürümü şu commit'leri içerir.
Sürüm 1.3.0
24 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0
iptal edilir. 1.3.0 sürümü şu commit'leri içerir.
1.2.0 sürümünden beri yapılan önemli değişiklikler
İstisna İşleme / Canlı Düzenleme Desteği
- Canlı düzenleme özelliğini daha iyi desteklemek için derleme sırasında istisnaların işlenmesini sağlayan API'ler eklendi.
- Anında yeniden yükleme için kompozisyon hata işleme
- Kaydetme/geri yükleme sırasında canlı düzenleme hatalarını ele alma
Bileşim İzleme
- Yeni kompozisyon izleme araçlarını desteklemek için çalışma zamanı izleme API'leri eklendi.
- Birleştirilebilir izleme etkinliği başlangıç/bitiş çağrıları oluşturma
- ComposerKt.traceEventStart(Int, String) yeniden eklendi
Composable Reflection API'leri
- Birleştirilebilir API'lerin daha güvenilir yansıtma tabanlı çağrılmasına olanak tanıyan yeni bir
ComposableMethod
API eklendi. - invokeComposable'ı Compose çalışma zamanına taşıma
- API'yi yeniden çalışarak birleştirilebilir yöntemi çağırma
Çalışma Zamanı Düzeltmeleri
- Yer tablosu için işaretçi kontrolünde hatalı aralık testini düzeltme
- Taşınabilir içeriğin SubcomposeLayout'a taşınmasına ve SubcomposeLayout'tan taşınmasına izin verme
- Alt kompozisyonun yeni içeriğine taşınan içeriğin düzeltilmesi
Anlık Görüntü Sistemi
- Anlık görüntü sistemi, bellek yönetimi, performans ve doğruluk konusunda çeşitli iyileştirmeler aldı.
- SnapshotStateObserver'da kapsam kaldırma işlemini optimize etme
- Şeffaf anlık görüntülerden oluşturulan iç içe anlık görüntüleri silme
- Durumun genel anlık görüntüden okunması sırasında yarış durumu düzeltildi
- SnapshotStateObserver'da DerivedState'i destekleme
- Türetilmiş durumun diğer kapsamlar okunurken kompozisyondan kaldırılmasını önleme
- DerivedState içinde HashMap yerine IdentityArrayMap kullanma
- Türetilmiş durum gözlemcilerini, değiştirilebilir vektör kullanacak şekilde güncelleyin
- SnapshotStateObserver durum temizliğini güncelleme
- SnapshotStateObserver.invalidated yerine ArraySet kullanma
- Durumun genel anlık görüntüden okunması sırasında yarış durumu düzeltildi
- Türetilmiş durum karma hesaplamasında eski kaydın kullanımını düzeltme
- Genel anlık görüntüyü ilerletirken yarışma koşulunu düzeltme
- SnapshotStateObserver'da kapsam gözlemlerinin temizlenmesini hızlandırma
Sürüm 1.3.0-rc01
5 Ekim 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
iptal edilir. 1.3.0-rc01 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Yuva tablosundan gelen
ArrayIndexOutOfBoundsException
düzeltildi (b/249076084).
Sürüm 1.3.0-beta03
21 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03
iptal edilir. 1.3.0-beta03 sürümü şu commit'leri içerir.
Davranışa Zarar Veren Değişiklik
remember
verememberCoroutineScope
parametresicrossinline
olarak değiştirildi. Bu, daha sonra dahili bir hatanın bildirilmesine neden olacak erken iadeye izin vermek yerine erken iadeler için bir hata bildirir.- Bu değişiklik, potansiyel olarak yeni derleyici hatalarının bildirilmesine yol açabilir. Bu durumda, bu işlevlere iletilen lambda'lardan yerel olmayan dönüşlerin kaldırılması gerekir. (Ibea62)
Sürüm 1.3.0-beta02
7 Eylül 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02
iptal edilir. 1.3.0-beta02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Güncellenen API (I64ca0)
Sürüm 1.3.0-beta01
24 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01
iptal edilir. 1.3.0-beta01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Bu API'yi kullanan geliştirici araçlarının, kimliğini kullanarak kompozisyonun alt grubunu hızlıca bulmasına olanak tanımak için
CompositionData
'yefind
yöntemi eklendi. (I5794f)
Sürüm 1.3.0-alpha03
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03
iptal edilir. 1.3.0-alpha03 sürümü şu commit'leri içerir.
Sürüm 1.3.0-alpha02
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
iptal edilir. 1.3.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Geriye dönük uyumluluk için
ComposerKt.traceEventStart(Int, String)
yeniden eklendi (I6e6de)
Sürüm 1.3.0-alpha01
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
iptal edilir. 1.3.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yardımcı işlevlerin çalışma zamanına taşınması (I4f729)
Sürüm 1.2
Sürüm 1.2.1
10 Ağustos 2022
androidx.compose.runtime:runtime-*:1.2.1
iptal edilir. 1.2.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Bellek sızıntısı düzeltildi: Şeffaf anlık görüntülerden oluşturulan iç içe anlık görüntüler siliniyor. b/239603305
Sürüm 1.2.0
27 Temmuz 2022
androidx.compose.runtime:runtime-*:1.2.0
iptal edilir. 1.2.0 sürümü şu commit'leri içerir.
1.1.0
sürümünden beri yapılan önemli değişiklikler
Compose Runtime 1.2.0'da kullanıma sunulan birkaç özelliğin yanı sıra birçok dengeleyici hata düzeltmesi içeriyordu. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimlerini etkinleştirmek için kullanılabilecek
movableContentOf
API'nin kullanıma sunulması oldu.movableContentOf
API, bir composable lambda'yı durumunu ve ilgili düğümleri çağrıldığı herhangi bir yeni konuma taşıyan bir lambda'ya dönüştürür. Önceki görüşme kompozisyondan ayrıldığında durum geçici olarak korunur. Lambda'ya yeni bir görüşme geldiğinde ise durum ve ilişkili düğümler yeni görüşmenin konumuna taşınır. Yeni bir görüşme eklenmezse durum kalıcı olarak kaldırılır ve hatırlatma gözlemcilerine bildirim gönderilir.Aynı kompozisyonda birden fazla kez
movableContentOf
lambda çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar kompozisyondan ayrılıp yeni çağrılar girerken durum, ayrılan ilk çağrılardan girilen çağrılara çağrılma sırasına göre taşınır. Yeni aramalar tarafından talep edilmeyen tüm durumlar kalıcı olarak kaldırılır.Bu ve birkaç yeni özelliğin yanı sıra çalışma zamanı ve anlık görüntü durumu sistemini dengelemek için de çok zaman harcandı. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.
Değişikliklerin özetlenmiş listesini aşağıda bulabilirsiniz:
1.2
bölgesindeki yeni özellikler
- Add experimental snapshot unsafeEnter/Leave
- Add Snapshot.asContextElement deneysel API'si
- Introduce Snapshot.withoutReadObservation
- Durumun kompozisyon içinde taşınmasına izin verme
- Oluşturma'da yeniden oluşturma işlemlerini izleme
1.2
dersindeki performans
- Bileşim yerel performansını artırma
- Oluşturma için temel profiller, karşılaştırmalar kullanılarak elde edilmelidir
1.2
sürümündeki hata düzeltmeleri
- Yayın yeniden oluşturma kapsamlarından izleme bilgilerini kaldırma
- Türetilmiş durumun diğer kapsamlar okunurken kompozisyondan kaldırılmasını önleme
- SnapshotStateObserver'da daha verimli olan removeScope() işlevini kullanma
- Beste içindeki türetilmiş durum bağımlılıklarını temizleme
- currentCompositeKeyHash'in, taşınabilir içerikteki iç yeniden oluşturma işleminden sonra değişmesi sorunu düzeltildi
- Bertaraf sırasında geçersiz kılınan kompozisyonları temizleme
- Yeniden oluşturma sırasında türetilmiş durum okuma sorununu düzeltme
- Türetilmiş durum nesneleri gözlemlenirken oluşan bellek sızıntısını düzeltme
- Tutarlı olması için movableContent bileşik karma anahtarı düzeltildi
- Oluşturucunun kilitlendiği nadir durum düzeltildi
- Bir grubun geçersiz kılınmasının yeniden oluşturmayı zorunlu kıldığından emin olun
- Girişle birlikte rememberSaveable yanlış sırada geri yüklendiğinde oluşan hata düzeltildi
Sürüm 1.2.0-rc03
29 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03
iptal edilir. 1.2.0-rc03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Türetilmiş durum gözlemleri daha önce koşulsuz olarak yeniden oluşturma kapsamından ve kompozisyondan birlikte kaldırılıyordu. Bu durum, türetilmiş durumu gözlemlemeye devam edebilecek diğer kapsamları bozuyordu. Bu değişiklik, yalnızca diğer kapsamlar tarafından artık gözlemlenmiyorsa türetilmiş durum örneklerini kaldırır. (b/236618362)
Sürüm 1.2.0-rc02
22 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02
iptal edilir. 1.2.0-rc02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-rc01
15 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01
iptal edilir. 1.2.0-rc01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Compose kitaplıklarındaki arayüzler artık jdk8 varsayılan arayüz yöntemleri kullanılarak oluşturuluyor (I5bcf1).
Sürüm 1.2.0-beta03
1 Haziran 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03
iptal edilir. 1.2.0-beta03 sürümü şu commit'leri içerir.
Sürüm 1.2.0-beta02
18 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02
iptal edilir. 1.2.0-beta02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-beta01
11 Mayıs 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01
iptal edilir. 1.2.0-beta01 sürümü şu commit'leri içerir.
Yeni Özellikler
- Bu, 1.2 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'si eklendi (Iff072) @ComposableTarget
ek açıklaması ve@ComposableTargetMarker
ile işaretlenmiş ek açıklamalar artık@file
öneki kullanılarak dosya kapsamında kullanılabilir. Dosya kapsamındaki bir hedef ek açıklamasının kullanılması, derleyicinin dosyadaki tüm composable işlevlerin ilişkili uygulayıcıyı hedeflemesi gerektiğini varsaymasına neden olur. Örneğin,@file:UiComposable
kullanıldığında tüm@Composable
işlevlerinin Compose UI uygulayıcısını hedeflediği belirtilir. Başka bir uygulayıcıyı hedeflemesi gereken bir işlev, istenen uygulayıcı için hedef işaretleyici açıklamasını açıkça sağlamalıdır. (I40804)
Sürüm 1.2.0-alpha08
20 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08
iptal edilir. 1.2.0-alpha08 sürümü şu commit'leri içerir.
API Değişiklikleri
TracingInProgress
,CompositionTracer
arayüzüne eklendi. (Ic6f12)- Composer'a
recomposeScopeIdentity
ekleme (I0c873) - Kısıtlanmış izleme API'leri (Composer.setTracer)
OptIn(InternalComposeTracingApi)
olarak değiştirildi. (I9187f) - Yeniden kullanılabilir içerikler için oluşturulan durumun kullanım ömrü üzerinde daha iyi kontrol sağlayan
ResuableContentHost
eklendi. Örneğin, bir alt bileşen geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, bileşendeki hatırlanan tüm durumlar unutulur ve örneğin, tüm tek kullanımlık efektler tetiklenir. (I2c0f2, b/220322704)
Sürüm 1.2.0-alpha07
6 Nisan 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07
iptal edilir. 1.2.0-alpha07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Yeni işlev
Snapshot.withoutReadObservation { ... }
eklendi. Kullanıcıların, bu blok sırasında okunan durum değerlerindeki değişikliklere abone olmadan iletilen lambda'yı çalıştırmasına olanak tanır. Anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak istediğiniz ancak gereksiz yeniden oluşturma veya yeniden ölçme işlemlerine neden olmadan değeri okumak istediğiniz kullanım alanlarında bu işlevden yararlanabilirsiniz. (I9f365, b/214054486)
Sürüm 1.2.0-alpha06
23 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06
iptal edilir. 1.2.0-alpha06 sürümü şu commit'leri içerir.
Sürüm 1.2.0-alpha05
9 Mart 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05
iptal edilir. 1.2.0-alpha05 sürümü şu commit'leri içerir.
Harici Katkı (External Contribution)
- Kotlinx coroutines 1.6.0'ı (I3366d) kullanacak şekilde güncellendi.
Sürüm 1.2.0-alpha04
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04
iptal edilir. 1.2.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
ComposableTarget
,ComposableTargetMarker
veComposableOpenTarget
işlevleri eklendi. Bu işlevler, bir composable işlevin, kullanılması için tasarlanmadığı bir uygulayıcıyı hedefleyerek çağrıldığı zaman derleme zamanı raporlamasına olanak tanır.Çoğu durumda, ek açıklamalar derleme derleyici eklentisi tarafından çıkarılabilir. Bu nedenle, bu ek açıklamaların doğrudan kullanılması nadir olmalıdır. Çıkarılamayan durumlar arasında özel bir uygulayıcı oluşturma ve kullanma, soyut birleştirilebilir işlevler (ör. arayüz yöntemleri), birleştirilebilir lambda'lar olan alanlar veya genel değişkenler (yerel değişkenler ve parametreler çıkarılır) ya da
ComposeNode
veya ilgili birleştirilebilir işlevlerin kullanılması yer alır.Özel uygulayıcılar için
ComposeNode
veyaReusableComposeNode
çağıran composable işlevlerin, işlev ve composable lambda parametre türleri içinCompoableTarget
ek açıklaması eklemesi gerekir. Ancak,ComposableTargetMarker
ile açıklama eklenmiş bir açıklama oluşturmanız ve ardından doğrudanComposableTarget
yerine işaretlenmiş açıklamanın kullanılması önerilir.ComposableTargetMarker
ile işaretlenmiş bir birleştirilebilir ek açıklama, uygulayıcı parametresi olarak özelliğin sınıfının tam nitelikli adını içeren birComposbleTarget
ile eşdeğerdir.ComposableTargetMarker
kullanımına ilişkin 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
iptal edilir. 1.2.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
Bir composable lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştüren
movableContentOf
eklendi. Önceki görüşme kompozisyondan ayrıldığında durum geçici olarak korunur. Lambda'ya yeni bir görüşme kompozisyona girdiğinde ise durum ve ilişkili düğümler yeni görüşmenin konumuna taşınır. Yeni bir görüşme eklenmezse durum kalıcı olarak kaldırılır ve hatırlatma gözlemcilerine bildirim gönderilir.Aynı kompozisyonda bir
movableContentOf
lambda birden fazla kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Çağrılar kompozisyondan ayrılıp yeni çağrılar girerken durum, çağrılma sırasına göre ilk ayrılan çağrılardan giren çağrılara taşınır. Yeni aramalar tarafından talep edilmeyen tüm durum kalıcı olarak kaldırılır. (Ib4850)Araçların, composable işlevlerin daha ayrıntılı izlenmesini sağlamak için kompozisyona izleme API'si eklendi. Derleyici artık kaynak bilgilerini içeren izleme API'si çağrıları oluşturuyor. (Ib0eb5)
Bu çağrıları ve ilişkili kaynak bilgilerini yayın derlemesinden kaldırmak için aşağıdaki Proguard kuralını ekleyin:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
Araçlara yeniden oluşturma sırasında bir composable'ı tanımlama olanağı veren
InternalComposeScope
öğesini ekleyin. (I07a3f)
Sürüm 1.2.0-alpha02
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02
iptal edilir. 1.2.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.2.0-alpha01
12 Ocak 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01
iptal edilir. 1.2.0-alpha01 sürümü şu commit'leri içerir.
API Değişiklikleri
- Düzen denetleyicisinde değişmez kimlikler oluşturmak için
CompositionData
'eidentity
alanı eklendi. (Ic116e)
Bağımlılık Güncellemeleri
- Artık Kotlin
1.6.10
'e bağlıdır.
Sürüm 1.1
Sürüm 1.1.1
23 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.1
iptal edilir. 1.1.1 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
konumundaNullPointerException
düzeltildi (aosp/1947059, b/206677462)- Android'de panodan okuma sırasında panodaki içerikten kaynaklanan kilitlenme sorunu düzeltildi. (I06020, b/197769306)
LazyVerticalGrid
'da sağdan sola dil desteği düzeltildi (aosp/1931080, b/207510535)
Sürüm 1.1.0
9 Şubat 2022
androidx.compose.runtime:runtime-*:1.1.0
iptal edilir. 1.1.0 sürümü şu commit'leri içerir.
1.0.0 sürümünden beri yapılan önemli değişiklikler
- Android 12'deki Aşırı kaydırma efekti için kararlı destek
- Dokunma hedefi boyutlandırmayla ilgili iyileştirmeler
- Compose 1.0 ile ilgili olarak, Materyal bileşenlerinin dokunma hedefi boyutu için Materyal erişilebilirlik yönergelerine uymak üzere düzen alanlarını genişleteceğini unutmayın. Örneğin, düğmenin boyutunu daha küçük ayarlasanız bile düğme dokunma hedefi minimum
48x48dp
boyutuna genişler. Bu, Compose Material'ı Material Design Components'ın davranışıyla aynı hale getirir. Böylece, Views ve Compose'u birlikte kullandığınızda tutarlı davranışlar elde edersiniz. Bu değişiklik, Compose Material bileşenlerini kullanarak kullanıcı arayüzünüzü oluşturduğunuzda dokunma hedefi erişilebilirliğiyle ilgili minimum şartların karşılanmasını da sağlar. - Gezinme sütunu için kararlı destek
- Daha önce deneysel olan bazı API'leri kararlı sürüme geçirir.
- Kotlin'in yeni sürümleri için destek
Sürüm 1.1.0-rc03
26 Ocak 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03
iptal edilir. 1.1.0-rc03 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Compose Material'ı destekleyecek şekilde güncellendi
1.1.0-rc03
Sürüm 1.1.0-rc01
15 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01
iptal edilir. 1.1.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.1.0-beta04
1 Aralık 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04
iptal edilir. Version 1.1.0-beta04 contains these commits.
Yeni Özellikler
- Kotlin ile uyumlu olacak şekilde güncellendi
1.6.0
Sürüm 1.1.0-beta03
17 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03
iptal edilir. Version 1.1.0-beta03 contains these commits.
Sürüm 1.1.0-beta02
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02
iptal edilir. 1.1.0-beta02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Anlık görüntü kodu birden fazla dosyaya ayrıldı ancak hepsi aynı JVM sınıfında yer alıyor. (Ic6c98)
Sürüm 1.1.0-beta01
27 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01
iptal edilir. 1.1.0-beta01 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha06
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06
iptal edilir. 1.1.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
- Modüller arası çağrılması gereken Composer yöntemlerinden
InternalCompilerApi
kaldırıldı (I1aa0b) Recomposer.state
, türünü StateFlow olarak değiştirmek için kullanımdan kaldırıldı veRecomposer.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
iptal edilir. Version 1.1.0-alpha05 contains these commits.
Sürüm 1.1.0-alpha04
15 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04
iptal edilir. 1.1.0-alpha04 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha03
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03
iptal edilir. 1.1.0-alpha03 sürümü şu commit'leri içerir.
Yeni Özellikler
- Compose Compiler artık Compose Runtime'ın eski sürümlerini (1.0) destekliyor. Bu değişiklikten önce, Compose Compiler yalnızca aynı veya daha yeni bir sürümdeki Compose Runtime ile uyumluydu. Bu değişiklikten sonra Compose Compiler, Compose Runtime'ın eski bir sürümüyle (1.0) uyumlu hale gelir. (aosp/1796968)
- Compose
1.1.0-alpha03
, Kotlin1.5.30
'e bağlı olacak şekilde güncellendi. (I74545)
Sürüm 1.1.0-alpha02
18 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02
iptal edilir. 1.1.0-alpha02 sürümü şu commit'leri içerir.
Sürüm 1.1.0-alpha01
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01
iptal edilir. 1.1.0-alpha01 sürümü şu commit'leri içerir.
Sürüm 1.0
Sürüm 1.0.5
3 Kasım 2021
androidx.compose.runtime:runtime-*:1.0.5
iptal edilir. 1.0.5 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Türetilmiş durum örneklerinin izlenmesi sırasında yaşanan kilitlenme sorunu düzeltildi. (aosp/1792247)
Sürüm 1.0.4
13 Ekim 2021
androidx.compose.runtime:runtime-*:1.0.4
iptal edilir. 1.0.4 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.31
'ya bağlı olacak şekilde güncellendi
Sürüm 1.0.3
29 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.3
iptal edilir. 1.0.3 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.30
'ya bağlı olacak şekilde güncellendi
Sürüm 1.0.2
1 Eylül 2021
androidx.compose.runtime:runtime-*:1.0.2
iptal edilir. 1.0.2 sürümü şu commit'leri içerir.
Compose 1.0.2
sürümünü destekleyecek şekilde güncellendi. Compose 1.0.2
, Kotlin 1.5.21
ile uyumluluğunu sürdürüyor.
Sürüm 1.0.1
4 Ağustos 2021
androidx.compose.runtime:runtime-*:1.0.1
iptal edilir. 1.0.1 sürümü şu commit'leri içerir.
Bağımlılık Güncellemeleri
- Kotlin
1.5.21
'ya bağlı olacak şekilde güncellendi.
Sürüm 1.0.0
28 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0
iptal edilir. 1.0.0 sürümü şu commit'leri içerir.
1.0.0 sürümünün temel özellikleri
Bu, Compose'un kararlı ilk sürümüdür. Daha fazla bilgi için lütfen resmi Compose Release bloguna göz atın.
Bilinen Sorunlar
Android Studio Bumblebee Canary 4 veya AGP
7.1.0-alpha04
/7.1.0-alpha05
kullanıyorsanız aşağıdaki kilitlenme hatasıyla karşılaşabilirsiniz:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Düzeltmek için
build.gradle
dosyanızda minSdkVersion'i geçici olarak 24 veya daha yüksek bir sürüme yükseltin. Bu sorun, Android Studio Bumblebee ve AGP'nin7.1
sonraki sürümünde düzeltilecektir. (b/194289155)
Sürüm 1.0.0-rc02
14 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02
iptal edilir. 1.0.0-rc02 sürümü şu commit'leri içerir.
- SnapshotStateObserver'da aralıklı NullPointerException'lara neden olan yarış koşulları düzeltildi. (aosp/1763445, aosp/1758105, b/192677711)
- Çalışma zamanı anlık görüntüleriyle ilgili olarak
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 sorunlar düzeltildi. (b/193006595, b/192570897)
Sürüm 1.0.0-rc01
1 Temmuz 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01
iptal edilir. 1.0.0-rc01 sürümü şu commit'leri içerir.
Sürüm 1.0.0-beta09
16 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09
iptal edilir. 1.0.0-beta09 sürümü şu commit'leri içerir.
Eklenen profil kuralları
Bu sürüm, aşağıdaki Compose modüllerine profil kuralları ekler (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Profil kuralları nedir?
Bir kitaplığın profil kuralları,
src/main
veya eşdeğer dizinde bulunan bir metin dosyasındabaseline-prof.txt
belirtilir. Dosyada her satırda bir kural belirtilir. Bu durumda kural, kitaplıktaki yöntemlerle veya sınıflarla eşleşme için kullanılan bir kalıptır. Bu kuralların söz dizimi,adb shell profman --dump-classes-and-methods ...
kullanılırken kullanılan okunabilir ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.Yöntem kuralı aşağıdaki kalıba sahip olur:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Sınıf kuralı ise aşağıdaki kalıba sahip olur:
<CLASS_DESCRIPTOR>
Burada
<FLAGS>
, bu yöntemin "Popüler", "Başlangıç" veya "Başlangıç Sonrası" olarak işaretlenip işaretlenmeyeceğini belirtmek için kullanılanH
,S
veP
karakterlerinden bir veya daha fazlasıdır.<CLASS_DESCRIPTOR>
, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Örneğin,androidx.compose.runtime.SlotTable
sınıfının tanımlayıcısıLandroidx/compose/runtime/SlotTable;
olur.<METHOD_SIGNATURE>
, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve dönüş türlerini içerir. Örneğin,LayoutNode
üzerindekifun isPlaced(): Boolean
yönteminin imzasıisPlaced()Z
'dir.Bu kalıplar, tek bir kuralın birden fazla yöntemi veya sınıfı kapsaması için joker karakterler (
**
,*
ve?
) içerebilir.
Kurallar ne işe yarar?
H
işaretine sahip bir yöntem, bu yöntemin "sık kullanılan" bir yöntem olduğunu ve önceden derlenmesi gerektiğini gösterir.S
işaretine sahip bir yöntem, başlangıçta çağrılan bir yöntem olduğunu gösterir. Başlangıçta yöntemin derlenmesi ve yorumlanması maliyetini önlemek için önceden derlenmelidir.P
işaretine sahip bir yöntem, başlatma işleminden sonra çağrılan bir yöntem olduğunu gösterir.Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetini önlemek için yığında önceden ayrılması gerektiğini gösterir.
Nasıl çalışır?
- Kitaplıklar, AAR yapıtlarında paketlenecek bu kuralları tanımlayabilir. Bu yapıtları içeren bir uygulama oluşturulduğunda bu kurallar birleştirilir ve birleştirilmiş kurallar, uygulamaya özel kompakt bir ikili ART profili oluşturmak için kullanılır. ART, uygulama cihazlara yüklendiğinde bu profilden yararlanarak uygulamanın belirli bir alt kümesini önceden derleyebilir. Bu sayede uygulamanın performansını, özellikle de ilk çalıştırma performansını artırabilir. Bunun, hata ayıklanabilir uygulamalar üzerinde hiçbir etkisi olmayacağını unutmayın.
Sürüm 1.0.0-beta08
2 Haziran 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08
iptal edilir. 1.0.0-beta08 sürümü şu commit'leri içerir.
API Değişiklikleri
State<T>
artıkState<out T>
(I69049)ControlledComposition
Tek geçişli yeniden oluşturmada değişikliklerin yeniden oluşturulmasını sağlayan API değişikliği. (Iaafd1, b/184173932)
Sürüm 1.0.0-beta07
18 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07
iptal edilir. 1.0.0-beta07 sürümü şu commit'leri içerir.
API Değişiklikleri
- Derleyici tarafından oluşturulan kaynak bilgilerinin kaynak küçültme sırasında kaldırılmasına olanak tanıyan yeni Compose derleyici API'leri eklendi. (Ia34e6)
Anahtar değiştirildiğinde içeriklerdeki düğümleri değiştirmek yerine yeniden kullanmayı deneyen
ReusableContent
özelliğini kullanıma sunar. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler hariç olmak üzere içerik için yuva tablosundaki önceki değerler yoksayılır.ComposeNode
için yapılanın aksine, yayımlanan düğümü değiştirmek yerine yeniden kullanacak olanReusableComposeNode
özelliğini kullanıma sunar. (I1dd86)@ComposeCompilerApi
artık@RequiresOptIn
(Iab690)
Hata Düzeltmeleri
- LazyColumn/Row, kaydırılarak görünürlükten çıkmış olsalar bile daha önce görünür olan 2 öğeyi etkin (kaldırılmamış) tutar. Bu sayede, yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt bileşenleri yeniden kullanmasına olanak tanınır. Bu da kaydırma performansını artırır. (Ie5555)
Sürüm 1.0.0-beta06
5 Mayıs 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06
iptal edilir. 1.0.0-beta06 sürümü şu commit'leri içerir.
API Değişiklikleri
@ComposeCompilerApi
artık@RequiresOptIn
(Iab690)
Sürüm 1.0.0-beta05
21 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05
iptal edilir. 1.0.0-beta05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Kayıt anlık görüntü okuma ve yazma işlemleri için
@InternalComposeApi
kaldırıldı (Id134d)
Hata Düzeltmeleri
- ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumlu (I6f9de, b/184718994)
Sürüm 1.0.0-beta04
7 Nisan 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04
iptal edilir. 1.0.0-beta04 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabiliyordu. Bu değişiklikten sonra hiçbir yerel composable işlevi atlanmayacak. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri yakalaması yaygın ve beklenen bir durum olduğu için yapıldı. Parametrelerin atlanması ise yaygın bir hata kaynağıdır.
Özetlemek gerekirse şu örneği inceleyin:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Bu değişiklikten önce,
ShowCount
composable işlevi,count
parametresi güncellendikten sonra bile her zaman atlanıyordu. Bu durum artık geçerli değil. (I5648a)rememberSaveable()
, giriş parametreleriyle (I1b110, b/182403380) kullanıldığında eski değeri geri yükleme sorunu düzeltildi.
Sürüm 1.0.0-beta03
24 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03
iptal edilir. 1.0.0-beta03 sürümü şu commit'leri içerir.
API Değişiklikleri
DefaultMonotonicFrameClock
desteği sonlandırıldı.withFrameNanos
veyaRecomposer.runRecomposeAndApplyChanges
'iMonotonicFrameClock
olmadan çağırmak artıkIllegalStateException
hatası verecek. (I4eb0d)
Sürüm 1.0.0-beta02
10 Mart 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02
iptal edilir. 1.0.0-beta02 sürümü şu commit'leri içerir.
Hata Düzeltmeleri
- Deneysel API'lerin herkese açık kullanımına kısıtlamalar getirme (I6aa29, b/174531520)
- Navigation-compose hedefinde kullanıldığında bozuk
rememberSaveable { mutableStateOf(0) }
simgesiyle ilgili düzeltme. (I1312b, b/180042685, b/180701630)
Sürüm 1.0.0-beta01
24 Şubat 2021
androidx.compose.runtime:runtime-*:1.0.0-beta01
iptal edilir. 1.0.0-beta01 sürümü şu commit'leri içerir.
Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.
API Değişiklikleri
Recomposer.runRecomposeConcurrentlyAndApplyChanges
Ana çerçeve döngüsünün dışında geçersiz kılınan kompozisyonları yeniden oluşturmak için deneysel API'yi ekleyin. (I342d0)- @ReadOnlyComposable ile işaretlenen tüm composable'lar artık yalnızca diğer @ReadOnlyComposable'lara çağrı yapmalarını sağlamak için derleme zamanında doğrulanıyor (I58961).
compositionLocalOf
vestaticCompositionLocalOf
içindefaultFactory
artık isteğe bağlı değil, zorunlu.Bu değişiklik, varsayılan fabrika sağlanmayan, boş değer atanamayan türlerdeki olası bir tür hatasını ortadan kaldırır. Daha önce bu, null yapılamayan bir tür için null referans sağlıyordu.
Boş değer atanabilir türler için varsayılan fabrika olarak
{ null }
değerini sağlamayı düşünebilirsiniz.Anlamlı bir varsayılan değer sağlanmadığı sürece, null değer atanamayan türlerle yerel ayarların kullanılmasını önermiyoruz. Mantıklı bir varsayılan değer yoksa
defaultFactory
lambda bir istisna oluşturmalıdır. Ancak bir istisna oluşturmak, yerel ayarın tüketicilerinin, tür sistemi tarafından zorunlu kılınmayan bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)Kullanımdan kaldırılan semboller, Compose çalışma zamanından kaldırıldı (I3252c).
Artık kullanılmayan
emptyContent()
kaldırıldı. Bunun yerine{}
politikasını kullanın. (Idb33f, b/179432510)Providers, CompositionLocalProvider olarak yeniden adlandırıldı.
- Composition oluşturucusu artık anahtar parametresini kabul etmiyor ve kullanımdan kaldırıldı.
- currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey özelliğe dönüştürüldü.
- CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
- ComposableLambda, somut bir sınıf yerine arayüz haline getirildi ve artık tür parametreleri içermiyor.
- ComposableLambdaN, somut bir sınıf yerine arayüz haline getirildi ve artık tür parametreleri içermiyor.
- snapshotFlow işlevi, androidx.compose.runtime ad alanına taşındı
- SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değildir.
- @TestOnly üst düzey clearRoots işlevi kaldırıldı. Artık gerekli değil.
- keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
- Composer.collectKeySourceInformation kaldırıldı. Artık gerekli değil.
- isJoinedKey, joinedKeyLeft ve joinedKeyRight yöntemleri kaldırıldı. Artık gerekli değildir.
- Çeşitli üst düzey API'ler farklı dosyalara taşındı ve yeniden düzenlendi. Kotlin'in dosya sınıfı semantiği nedeniyle bu durum, kaynak uyumluluğunu değil ikili uyumluluğu bozacaktır. Bu nedenle, çoğu kullanıcı için sorun teşkil etmez.
- (I99b7d, b/177245490)
SnapshotStateObserver artık deneysel değil (Id2e6a)
Daha önce desteği sonlandırılan bazı API'ler (Ice5da, b/178633932) silindi.
Material API'de aşağıdaki değişiklikler yapıldı:
- Varsayılan dolguyu özelleştirmeye olanak tanımak için Top/BottomAppBar'a contentPadding parametresi eklendi.
- Gerekli parametrelerin isteğe bağlı parametrelerden önce gelmesiyle ilgili API yönergelerine uymak için BackdropScaffold'daki parametreler yeniden sıralandı.
- BottomNavigationItem'daki
icon
parametresi,selected
veonClick
sonrasına taşındı. - BottomNavigationItem'daki
alwaysShowLabels
parametresialwaysShowLabel
olarak yeniden adlandırıldı. - Birkaç bileşendeki
bodyContent
parametrelericontent
olarak yeniden adlandırıldı. ButtonDefaults.buttonColors()
içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediğinden kodunuzda hataya neden olmayacağını lütfen unutmayın. Adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde kodunuz eskisi gibi çalışmaz.darkColors()
listesinesecondaryVariant
parametresi eklendi. Bu renk genellikle koyu temadakisecondary
ile aynıdır ancak tutarlılık ve daha fazla özelleştirme için eklenmiştir.- Yaygın olarak kullanılmadıkları / faydalı olmadıkları için ElevationDefaults ve animateElevation() işlevleri herkese açık API yüzeyinden kaldırıldı.
Slider
içindekionValueChangeEnd
,onValueChangeFinished
olarak yeniden adlandırıldı ve boş değer atanabilir hale getirildi.- Tutarlılık için
Snackbar
içindekitext
parametresicontent
olarak yeniden adlandırıldı. - Varsayılan dolguyu özelleştirmeye olanak tanımak için
contentPadding
parametresiDropdownMenuItem
'ye eklendi vecontent
,RowScope
'ün uzantısı olarak ayarlandı. 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
iptal edilir. 1.0.0-alpha12 sürümü şu commit'leri içerir.
API Değişiklikleri
- ViewGroups desteği UiApplier'dan kaldırıldı. Kullanımdan kaldırılan emitView composable'ları kaldırıldı. (Ifb214)
- CompositionReference, CompositionContext olarak yeniden adlandırıldı (I53fcb)
- ComponentActivity.setContent, androidx.activity:activity-compose modülünde androidx.activity.compose.setContent'e taşındı. (Icf416)
- Snapshot API, API yönergesiyle daha tutarlı olacak şekilde güncellendi ve dahili uygulama sınıfları herkese açık API'den gizlendi. (Id9e32)
- Ambients, Ambient -> CompositionLocal yeniden adlandırmasıyla eşleşecek şekilde yeniden adlandırıldı. Ambients, AmbientFoo olarak adlandırılırdı. Artık CompositionLocals, LocalFoo olarak adlandırılıyor. (I2d55d)
- Ambient, CompositionLocal olarak, ambientOf / staticAmbientOf ise sırasıyla compositionLocalOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacını daha net hale getirir: bir kompozisyona yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinin önüne
Local
eklenmelidir. Örneğin, val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - takeMutableSnapshot ve takeSnapshot, Snapshot'ın yardımcı yöntemleri olarak taşındı. (I91f19)
@ComposableContract
, daha ayrıntılı üç ek açıklama lehine kullanımdan kaldırıldı.@ComposableContract(restartable = false)
,@NonRestartableComposable
oldu.@ComposableContract(readonly = true)
,@ReadOnlyComposable
oldu.@ComposableContract(preventCapture = true)
,@DisallowComposableCalls
oldu.@ComposableContract(tracked = true)
kaldırıldı. (I60a9d)emptyContent() ve (@Composable () -> Unit).orEmpty() yardımcı programları, artık olumlu bir performans etkisi veya değeri olmadığından kullanımdan kaldırıldı (I0484d).
snapshotFlow
vewithMutableSnapshot
artık deneysel değil (I6a45f)Yeniden oluşturucular artık kapatılabilir. Kapalı yeniden oluşturucular, alt coroutine'ler tamamlanana kadar yeniden oluşturmaya devam eder. Recomposer.shutDown, kapatma ile karşıtlık oluşturması için iptal olarak yeniden adlandırıldı. (Ib6d76)
compose:runtime-dispatch
yapısının desteği sonlandırıldı. MonotonicFrameClock artık compose:runtime içinde, AndroidUiDispatcher ise compose:ui içinde bulunabilir. (Ib5c36)Compose derleyici eklentisinin hedeflediği API, somut bir sınıf yerine arayüz kullanacak şekilde yeniden düzenlendi. Arayüzde artık tür parametresi de kullanılmıyor.
Bu, kaynak kodu uyumluluğunu etkilememesi gereken ancak ikili uyumluluğu bozan bir dahili değişikliktir. (I3b922, b/169406779)
SnapshotMutableState kullanıma sunuldu (Icfd03)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (Ica7c6)
Recomposer.current() kaldırıldı. [Abstract]ComposeView artık pencere için ViewTreeLifecycleOwner tarafından yönlendirilen, pencere kapsamlı ve geç oluşturulan Recomposer'ları varsayılan olarak kullanıyor. Ana makinenin yaşam döngüsü durdurulduğunda yeniden oluşturma ve withFrameNanos tabanlı animasyon işaretleri duraklatılır. (I38e11)
Recomposer.runningRecomposers artık süreçteki devam eden kompozisyon durumunu gözlemlemek için salt okunur RecomposerInfo'nun genel bir StateFlow'unu sunuyor. Şu anda kullanımdan kaldırılmış olan Recomposer.current() yerine bu API'yi tercih edin. (If8ebe)
DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (I3ea68).
Sürüm 1.0.0-alpha11
28 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
iptal edilir. 1.0.0-alpha11 sürümü şu commit'leri içerir.
API Değişiklikleri
- onCommit, onDispose ve onActive, SideEffect ve DisposableEffect API'leri lehine kullanımdan kaldırıldı (If760e).
- emit() API'si ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır. Yalnızca Compose'un adlandırma kurallarına uymak için farklı bir ada sahiptir (I4137b).
- invalidate ve compositionReference() işlevlerinin desteği, sırasıyla currentRecomposeScope ve rememberCompositionReference işlevleri lehine sonlandırıldı. (I583a8)
RememberObserver, CompositionLifecycleObserver'ın yerini alıyor ve CompositionLifecycleObserver artık kullanımdan kaldırıldı.
RememberObserver
, değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemlerleCompositionLifecycleObserver
yerine kullanılabilir. Yalnızca bir kez hatırlanan nesneler için yeni API'ye geçiş mekanik olarak yapılabilir. Bu, önerilen uygulamadır ve olmaya devam edecektir. Ancak bir kompozisyonda bir referans birden fazla kez hatırlanırsaonRemembered
,onEnter
yalnızca bir kez çağrılırken her referans için çağrılır.onEnter
Nesne,WithConstraints
veScaffold
gibi alt bileşimlerde kullanılıyorsa birden çok kez çağrılıyordu. Bu durum, tekonEnter
çağrısı garantisini güvenilmez hale getiriyordu veRememberObserver
için kaldırıldı.RememberObserver
,remember
'ye iletilen geri çağırma işlevindenRememberObserver
örneği döndürülürse ancak beste durumunda hatırlanmazsa çağrılanonAbandoned
işlevini ekler. Bu nedenle,onRemembered
işlevi hiçbir zaman çağrılmaz. Bu durum, bir istisna kompozisyonu tamamlamadan önce sonlandırırsa veya kompozisyon, oluşturulduğu durum artık geçerli olmadığı ya da başka bir nedenle artık gerekli olmadığı için atılı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ıldığındaonAbandoned
ç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 düzenlendi ve foundation.layout'a taşındı. (I9420b, b/173387208)
- Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)
Sürüm 1.0.0-alpha10
13 Ocak 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
iptal edilir. Version 1.0.0-alpha10 contains these commits.
Zarar Veren Değişiklik (Breaking Change)
Dahili derleyici API'sinin yeniden yapılandırılması, tüm
@Composable
işlevleri tamamlandıktan sonra, bileşim sonucunda oluşturulan düğümlerdeki değişikliklerin bileşimin "değişiklikleri uygula" aşamasında toplu olarak uygulanmasına olanak tanır.Bu, davranışta bir hataya neden olan bir değişikliktir. Değişiklikler uygulanana kadar dahili ve deneysel API'lerden düğümler kullanılamayacağından uygulama kodunu etkileyebilir. Bu sorun genellikle, düğümler oluşturulup başlatılana kadar kodun yürütülmesini ertelemek için bu tür bağımlılıkları olan kodu
SideEffect
composable'ın içine alarak çözülebilir. (I018da)
API Değişiklikleri
- Yeniden oluşturucunun değişiklikleri uygulayıp uygulamadığını izleme yöntemi eklendi. (I1b3e2)
[Abstract]ComposeView API'lerini, Compose tabanlı görünümlerin yeniden kullanılmasına olanak tanıyacak şekilde genişletin. Bu sayede, daha sonra yeniden oluşturmak için kompozisyonları kaldırabilirsiniz. Pencere kapsamlı yeniden oluşturucuları yüklemek ve keşfetmek için API'ler ekleyin ve alt kompozisyonlar oluşturmak için CompositionReference'lar.
[Abstract]ComposeViews'in bileşimden çıkarma stratejisini yapılandırmak için ViewCompositionStrategy ekleyin. Varsayılan davranış, pencere ayrıldığında bileşimi çıkarmaktır. (I860ab)
Hata Düzeltmeleri
- Recomposer artık mevcut durumunun bir akışını göstererek etkinliğinin ve ilişkili efektlerin etkinliğinin izlenmesine olanak tanıyor. (Ifb2b9)
- Yerel keyEvent'e artık keyEvent.nativeKeyEvent üzerinden erişilebilir (I87c57, b/173086397).
Sürüm 1.0.0-alpha09
16 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
iptal edilir. Version 1.0.0-alpha09 contains these commits.
API Değişiklikleri
SlotTable, SlotReader ve SlotWriter, herkese açık API'den kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretleniyordu. Artık bu işlevler, e-posta oluşturma modülünün içinde yer alıyor.
Bileşen bilgilerini ayıklamak için kullanılan ui-tooling API'nin yerine CompositionData ve CompositionGroup eklendi. Bunlar herkese açıktır ancak kullanıcı arayüzü araçları API'sinin yorumladığı ham bilgileri sağladıkları için (I31a9c) kullanıcı arayüzü araçları API'si dışında kullanılmak üzere tasarlanmamıştır.
The Applier class is no longer considered an (Id85b0)
Applier
arayüzü, ağaç oluşturmayı yukarıdan aşağıya değil aşağıdan yukarıya doğru basitleştirecek şekilde değiştirildi.insert()
yöntemi,insertTopDown()
olarak yeniden adlandırıldı.insertBottomUp()
adlı yeni bir yöntem eklendi.Uygulayıcı, daha iyi performans gösterene bağlı olarak
insertTopDown()
veyainsertBottomUp()
kullanarak düzenlediği ağaca düğümler ekler.LayoutNode
veView
gibi bazı ağaçlar, yukarıdan aşağıya yerine aşağıdan yukarıya doğru oluşturulduğunda çok daha verimli olur. Bu değişiklikten önce, alttan üste yapıyı uygulamak için bir ekleme yığını gerekiyordu. Bu yığının, performans için alttan üste yapıya ihtiyaç duyan her uygulayıcıya kopyalanması gerekiyordu. Bu değişiklikle birlikte, ağacı aşağıdan yukarıya doğru oluşturmak içinApplier
, yukarıdan aşağıya doğru oluşturmak için iseinsertTopDown()
kullanılır.insertBottomUp()
(Icbdc2)Compose, birleştirilebilir çağrılar yapabilen mülk getter'larını destekler. Bu destek kaldırılmayacak ancak bir özellik alıcısının @Composable olarak bildirilmesiyle ilgili söz dizimi değişiyor.
Bunu yapmak için kullanılan ve artık kullanımdan kaldırılan söz dizimi, mülkün kendisini açıklama olarak eklemekti:
@Composable val someProperty: Int get() = ...
Bunu yapmak için artık doğru olan söz dizimi, özelliğin alıcı yöntemini açıklama ekleyerek yapmaktır:
val someProperty: Int @Composable get() = ...
Her iki söz dizimi de bir süre çalışmaya devam edecek ancak kullanımdan kaldırılan söz dizimi sonunda derleme hatasına dönüşecek. (Id9197)
Hata Düzeltmeleri
- AndroidOwner made internal (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) dahili hale getirildi (Id724a)
Sürüm 1.0.0-alpha08
2 Aralık 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08
iptal edilir. Version 1.0.0-alpha08 contains these commits.
API Değişiklikleri
- Compose yönergeleriyle tutarlılığı kontrol etmek için composable lambda parametre adlandırma ve konumuyla ilgili lint kontrolü eklendi.
Ayrıca, lint kontrolü ve yönergeler doğrultusunda, sondaki lambda'ları için ad olarak
children
kullanan bazı API'lericontent
olarak taşıdı. (Iec48e) - Recomposer artık EmbeddingContext'i kabul etmiyor. Gerekli planlama bağımlılıkları, effectCoroutineContext'ten alınıyor. FrameManager'ın desteği sonlandırıldı. Platform entegrasyonları kendi genel anlık görüntü işlemelerini başlatmalıdır. (I02369)
- RestorableStateHolder.withRestorableState işlevinin adı RestorableStateProvider olarak değiştirildi (I66640).
Hata Düzeltmeleri
Ambient
sonekiyle adlandırılan, kullanımdan kaldırılan Ambients'ı diğer Ambients ve Compose API yönergelerine uygun olarak Ambient önekiyle adlandırılan yeni özelliklerle değiştirdi. (I33440)- Eski ui-test modülünü ve saplarını kaldırın (I3a7cb)
Sürüm 1.0.0-alpha07
11 Kasım 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07
iptal edilir. 1.0.0-alpha07 sürümü şu commit'leri içerir.
Yeni Özellikler
API Değişiklikleri
@UnionType
ek açıklaması kullanımdan kaldırıldı (I57cde)- provideDefault, ambiyans sağlamak için provide'a alternatif olarak eklendi ve yalnızca önceden sağlanmış bir ambiyans değeri olmadığında ayarlanacak ambiyans değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
- LaunchedTask, SideEffect ve DisposableEffect API'leriyle tutarlılık sağlamak için LaunchedEffect olarak yeniden adlandırıldı. En iyi uygulamaları teşvik etmek için LaunchedEffect'in konu parametreleri olmadan kullanılmasına izin verilmez. (Ifd3d4)
- Applier artık, Composer ağaca değişiklik uygulamaya başladığında/değişiklik uygulamayı bitirdiğinde çağrılan onBeginChanges/onEndChanges geri çağırmalarına sahiptir. Gerekirse kaynak yönetimini gruplandırmak için kullanılabilir. (Icf476)
- Recomposer artık oluşturma sırasında CoroutineContext gerektiriyor (Ic4610)
- Herkese açık API'yi etkilememesi gereken dahili SlotTable uygulamasında yapılan değişiklikler. (If9828)
- Başlangıç değerini almayan, desteği sonlandırılmış rxjava2 bağdaştırıcıları kaldırıldı (Idb72f).
Hata Düzeltmeleri
- foundation.Text artık kullanılmıyor ve yerine material.Text kullanılıyor. Temadan değer kullanmayan temel ve tarafsız bir metin API'si için androidx.compose.foundation.BasicText'e bakın. (If64cb)
- BaseTextField kullanımdan kaldırıldı. Bunun yerine BasicTextField'ı kullanın. (I896eb)
- Düzenle ilgili çeşitli semboller androidx.compose.ui'dan androidx.compose.layout.ui'ya taşındı. (I0fa98, b/170475424)
Harici Katkı (External Contribution)
- Oluşturma için
runtime-rxjava3
modülü eklendi.runtime-rxjava2
ile benzer (I02cbf)
Sürüm 1.0.0-alpha06
28 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06
iptal edilir. 1.0.0-alpha06 sürümü şu commit'leri içerir.
API Değişiklikleri
- Recomposer artık bir CompositionReference ve geçerli bir kompozisyon üst öğesidir. Açıkça yeniden oluşturma artık daha az yerde zorunlu. (I4036f)
- SideEffect'e DisposableEffect karşılığı olan API eklendi. Bu API, onCommit-with-params işlevini yerine getiriyor ancak onDispose gerekli.
- Yeniden oluşturma işleminden elde edilen verileri DisposableEffect veya LaunchedTask gibi devam eden ya da uzun süren işlemlere yayınlamak için rememberUpdatedState API'si eklendi.
- (Id50b9)
- MutableVector artık RandomAccess'i uyguluyor (I85d73, b/170461551)
- Kompozisyonun yan etkilerini kompozisyon tarafından yönetilen nesnelere uygulamak için SideEffect composable'ı eklendi. SideEffect, onCommit composable'ın yerini alması için tasarlanmıştır. (Ia77c2)
- Yeni deneysel API RestorableStateHolder. [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumu, alt ağacı silmeden önce kaydetmenize olanak tanır. Böylece, bir sonraki sefer geri yüklenen durumla yeniden oluşturabilirsiniz. (I66884, b/166586419)
Hata Düzeltmeleri
- ComposeTestRule'da geçişleri etkinleştirin. Yanıp sönen imleci etkinleştirme seçeneğini ComposeTestRule'dan kaldırın. (If0de3)
Sürüm 1.0.0-alpha05
14 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05
iptal edilir. 1.0.0-alpha05 sürümü şu commit'leri içerir.
API Değişiklikleri
- Deneysel Modifier.pointerInput giriş değiştiriciyi askıya alıyor (Ia77d2)
- LazyColumn/Row'un kaydırma performansı, her kaydırmada alt bileşen oluşturma işleminde daha az iş yapılarak iyileştirilir. Composition sınıfı için yeni hasInvalidations() yöntemi eklendi. Recomposer sınıfındaki hasPendingChanges() yöntemi hasInvalidations() olarak yeniden adlandırıldı (Ib2f32, b/168293643, b/167972292, b/165028371).
- Kompozisyondan, zaman içinde tek bir
State<T>
değerini güncelleyen coroutine'leri başlatmak için produceState API'yi ekleyin (Id4a57). - launchInComposition, Compose API yönergeleriyle eşleşmesi için LaunchedTask olarak yeniden adlandırıldı (I99a8e).
- Özel düzenlerdeki place() çağrılarının sırası artık alt öğelerin çizim sırasını tanımlıyor (Ibc9f6)
Sürüm 1.0.0-alpha04
1 Ekim 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04
iptal edilir. 1.0.0-alpha04 sürümü şu commit'leri içerir.
API Değişiklikleri
- Geçerliliğini yitiren 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üretilebilen) bir hesaplamaya dayalı durum nesneleri oluşturmak için derivedStateOf API'si eklendi (If758b).
- SnapshotStateObserver için TestOnly API eklendi (I6e2a9)
Hata Düzeltmeleri
- foundation.Box desteği sonlandırıldı. Lütfen bunun yerine foundation.layout.Box kullanın. (Ie5950, b/167680279)
Sürüm 1.0.0-alpha03
16 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03
iptal edilir. 1.0.0-alpha03 sürümü şu commit'leri içerir.
API Değişiklikleri
CompositionCoroutineScope
artıkMonotonicFrameClock
uygulamıyor.withFrameNanos
işlevini ç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şlevlerinin desteği sonlandırıldı. Lütfen ComposeTestRule'da (I7f45a) tanımlanan yeni karşılıklarına geçin.launchInComposition
artık gönderilmeyen eş yordamları başlatmıyor (Ief6af, b/166486000)
Sürüm 1.0.0-alpha02
2 Eylül 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
iptal edilir. 1.0.0-alpha02 sürümü şu commit'leri içerir.
API Değişiklikleri
- Anlık görüntü verilerindeki değişiklikleri kullanmak ve oluşturmak için
snapshotFlow
vewithMutableSnapshot
API'lerini ekleyin. (I3e722) Birleştirilebilir işlevlerin çağrı kuralı değişti. Bu, ikili bir zarar veren değişikliktir. Tüm kitaplıkların, Compose derleyici eklentisinin bu sürümüyle çalışmak için yeniden derlenmesi gerekir.
Bu değişiklik, yalnızca açıkça etkinleştirilen derleyici API'leri değiştiğinden kaynak düzeyinde bir hataya neden olmaz. (I7afd2, b/158123185)
EmbeddingContext'ten planlama yöntemleri kaldırıldı (I7b9be)
onPreCommit kullanımdan kaldırıldı. onCommit artık onPreCommit'in davranışına sahip.
onCommit ve onActive artık, bir sonraki koreograf çerçevesinin başında değil, kompozisyon değişikliklerinin kaydedildiği koreograf çerçevesinde çalışır. (I70403)
Sürüm 1.0.0-alpha01
26 Ağustos 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01
iptal edilir. 1.0.0-alpha01 sürümü şu commit'leri içerir.
Sürüm 0.1.0-dev
Sürüm 0.1.0-dev17
19 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev17
iptal edilir. Version 0.1.0-dev17 contains these commits.
API Değişiklikleri
- Özel yayınlar artık ayarlayıcılarından bir veya daha fazlasının atlanabileceğini ve yayından bağımsız olarak yeniden oluşturulabileceğini belirtebilir. (Ibbd13)
Desteği sonlandırılan FrameManager çağrıları kaldırıldı.
Dahili Compose API'leri,
mutableStateof()
gibi durum nesnelerini izlemek için gereken ek yükü azaltacak şekilde değiştirildi (I80ba6).state { ... }
composable'ı artık netlik içinremember { mutableStateOf(...) }
'e yapılan açık çağrılar yerine kullanımdan kaldırıldı. Bu, durum yönetimi için genel API yüzeyini ve kavram sayısını azaltır ve sınıf özelliği temsilcisi içinby mutableStateOf()
modeliyle eşleşir. (Ia5727)Flow.collectAsState artık varsayılan olarak Dispatchers.Main'i kullanmak yerine varsayılan dağıtıcıyı kompozisyonun kendisinden belirliyor. (I9c1d9)
Durumu kaydeden bir şey for döngüsünde kullanıldığında kilitlenme sorunu düzeltildi. Artık savedInstanceState() içinde aynı anahtara sahip olmaya izin veriliyor. UiSavedStateRegistry'nin API'si bu yeni koşula göre ayarlandı (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Hata Düzeltmeleri
emitView
desteği sonlandırıldı. Compose'da görünümleri yayınlamak için mümkünseAndroidView
kullanın. Görünümlerin ve ViewGroup'ların doğrudan oluşturulmasının, gelecekte desteklenmeyeceğini unutmayın. Bu durum, AndroidView kullanılarak elde edilebilen, oluşturma ağacındaki yapraklar olmadığı sürece geçerlidir. (I29b1e, b/163871221)
Sürüm 0.1.0-dev16
5 Ağustos 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16
iptal edilir. Version 0.1.0-dev16 contains these commits.
API Değişiklikleri
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
için varsayılan mutasyon politikasıreferentialEqualityPolicy()
yerinestructuralEqualityPolicy()
olarak değiştirildi.Bir
mutableStateOf()
örneğine atanan yeni bir değerin artık değişiklik olarak kabul edilip edilmeyeceğine karar vermek için varsayılan olarak===
yerine==
kullanılır.https://kotlinlang.org/docs/reference/equality.html adresini ziyaret edin.
ambientOf()
vesavedInstanceStateOf()
, uygulamalarındamutableStateOf()
kullandığındanmutableStateOf()
ile tutarlı olacak şekilde değiştirildi.Yapısal eşitliği kullanmak, geliştiricilerin beklentileriyle daha yakından eşleşir.
Örneğin,
val state = mutableStateOf(1f)
ardından
state.value = 1f
artık
state
değişikliği olarak kabul edilmeyecek ve beste oluşturma sırasındastate
kullanımlarının yeniden oluşturulması gerekmeyecek.Bu, önemli bir değişikliktir ancak çoğu durumda (ör.
equals()
'ı geçersiz kılmayan sınıflar kullanılırken) uygulamanın fark edilebilir bir etkisi olmaz.equals()
'yı geçersiz kılan sınıflar (ör.data
sınıfları),equals()
yöntemleri artık varsayılan olarakmutableStateOf()
'ya atandığında çağrıldığından performans düşüşü yaşayabilir.Önceki davranış,
mutableStateOf()
,ambientOf()
vesavedInstanceStateOf()
çağrılarına politika parametresipolicy = referentialEqualityPolicy()
eklenerek geri yüklenebilir. (Ic21a7)Row
veColumn
artık satır içi işlevler olduğundan bu işlevlerin kullanımıyla ilgili ek yük önemli ölçüde azalıyor. (I75c10)
Hata Düzeltmeleri
- setViewContent desteği sonlandırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
Yeni eş yordam tabanlı saatler ile eski geri çağırma tabanlı saatleri kullanan API'ler arasındaki boşluğu doldurmak için MonotonicFrameClock'u AnimationClockObservable olarak kullanmanıza olanak tanıyan MonotonicFrameAnimationClock eklendi.
ManualAnimationClock'un MonotonicFrameClock eşdeğeri artık ManualFrameClock'tur. (I111c7, b/161247083)
Modifier.stateDraggable tamamen yeniden düzenlendi ve Modifier.swipeable olarak yeniden adlandırıldı. Yeni bir SwipeableState sınıfı kullanıma sunuldu. DrawerState ve BottomDrawerState, bu sınıftan devralacak şekilde yeniden düzenlendi. [Modal/Bottom]DrawerLayout artık onStateChange parametresini almıyor. (I72332, b/148023068)
Modifier.plus desteği sonlandırıldı. Bunun yerine Modifier.then kullanın. "Sonra" sıralama sinyali daha güçlüdür ve
Modifier.padding().background() + anotherModifier
yazılmasını da engeller. Bu, zinciri kırar ve okunmasını zorlaştırır (Iedd58, b/161529964).SubcomposeLayout eklendi. Bu, alt ağaç kompozisyonu için ölçüm sırasında yalnızca daha sonra kullanılabilen bazı değerleri kullanmak istersek ölçüm sırasında alt öğeleri oluşturmamıza olanak tanıyan düşük seviyeli bir temeldir. Örneğin, WithConstraints, SubcomposeLayout kullanılarak uygulanmaz. (I25cc8)
En basit istenen API'nin kolayca bulunup kullanılabilmesi için Material FilledTextField, TextField olarak yeniden adlandırıldı ve temel TextField, BaseTextField olarak yeniden adlandırıldı (Ia6242, b/155482676).
Modifier.drawBackground, Modifier.background olarak yeniden adlandırıldı (I13677)
Sürüm 0.1.0-dev15
22 Temmuz 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15
iptal edilir. 0.1.0-dev15 sürümü şu commit'leri içerir.
Bağımlılıkları Güncelleme
- Compose'un
0.1.0-dev15
sürümünü kullanmak için bağımlılıklarınızı yukarıda Bağımlılıkları bildirme bölümünde gösterilen yeni kod snippet'lerine göre güncellemeniz gerekir.
API Değişiklikleri
@Model
ek açıklaması artık kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf'u kullanın. Bu desteği sonlandırma kararı, dikkatli bir şekilde yapılan birçok tartışmanın ardından alınmıştır.Gerekçe
Gerekçe aşağıdakileri içerir ancak bunlarla sınırlı değildir:
- API yüzey alanını ve öğretmemiz gereken kavramları azaltır.
- Diğer benzer araç setleriyle (Swift UI, React, Flutter) daha uyumlu
- Geri alınabilir karar.
@Model
adlı ürünü daha sonra istediğimiz zaman tekrar kullanıma sunabiliriz. @Model
yapılandırmasıyla ilgili, ele almamız gereken konular olarak uç durum kullanımını ve yanıtlanması zor soruları kaldırır.@Model
veri sınıfları, equals, hashcode vb.- Bazı mülklerimin "gözlemlenmesini" nasıl sağlarım?
- Gözlemde kullanılacak yapısal ve referans eşitliğini nasıl belirtirim?
- Sistemdeki "sihri" azaltır. Kullanıcıların sistemin olduğundan daha akıllı olduğunu (ör. bir listeyi nasıl karşılaştıracağını bildiğini) düşünme olasılığını azaltır.
- Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
- Sınıftaki değişkenin özelliğe dönüştürülmesini kolaylaştırır.
- Eyalete özel, el yapımı optimizasyonlar yapma olasılığını artırır.
- Ekosistemin geri kalan kısmıyla daha uyumlu hale gelir ve değişmezlik veya "değişebilir durumu benimseme" konusundaki belirsizlik azalır.
Taşımayla ilgili notlar
@Model
sembolünün mevcut kullanımlarının neredeyse tamamı iki şekilde kolayca dönüştürülebilir. Aşağıdaki örnekte, yalnızca örnek olması için iki özelliği olan bir@Model
sınıfı ve bu sınıfın bir composable'da kullanımı gösterilmektedir.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
1. alternatif:
State<OriginalClass>
simgesini kullanarak kopya oluşturun.Bu yaklaşım, Kotlin'in veri sınıflarıyla daha kolay hale gelir. Temel olarak, daha önce
var
olan tüm özellikleri bir veri sınıfınınval
özellikleri haline getirin, ardındanremember
yerinestate
kullanın ve veri sınıfıcopy(...)
kolaylık yöntemini kullanarak orijinalin klonlanmış kopyalarına durum değerini atayın.Bu yaklaşımın yalnızca söz konusu sınıfta yapılan tek değişiklikler
State
örneğinin oluşturulduğu kapsamda yapıldığında işe yaradığını unutmayın. Sınıf, kullanım kapsamı dışında kendi içinde değişiyorsa ve bunu gözlemlemeye güveniyorsanız kullanmak isteyeceğiniz yaklaşım bir sonraki yaklaşımdır.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
2. alternatif: mutableStateOf ve özellik temsilcilerini kullanma
Bu yaklaşım, Kotlin'in özellik temsilcileri ve
mutableStateOf
API ile kolaylaştırılır. Bu API, kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanır. Temel olarak, orijinal sınıfın tümvar
özelliklerini, özellik temsilcisi olarakmutableStateOf
olanvar
özellikleriyle değiştirin. Bu yaklaşımın avantajı, sınıfın kullanımının hiç değişmemesi, yalnızca dahili uygulamasının değişmesidir. Ancak her mülk artık ayrı ayrı gözlemlendiği/abone olunduğu için davranış, orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenlemeden sonra gördüğünüz yeniden oluşturmalar daha dar olabilir (bu iyi bir şeydir).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, derleme derleyicisi, composable işlevlere yapılan çağrıları dönüştürüyordu. Bu değişiklikle birlikte artık bir composable işlevin gövdesini dönüştürüyor ve çağrı sitesini (çoğunlukla) değiştirmeden bırakıyoruz.
Bu, Compose çalışma zamanıyla iletişim kuran mantığın çoğunun, işlev gövdesinin başında gerçekleştiği anlamına gelir.
Bu, Compose'un tüm kullanımları için kaynakla uyumlu bir değişiklik olmalıdır. Compose'u kullanan çoğu kullanıcının bu değişiklik nedeniyle herhangi bir kodu güncellemesi gerekmez.
Bu çalışmayı desteklemek için tüm composable işlevlerin JVM imzası değiştirildi. Tek bir parametreyi kabul eden bir Composable işlevi, 3 parametreyi kabul eden bir işlev haline dönüştürülür. Ek parametreler Composer, bir "anahtar" tam sayısı ve meta verileri çağrılar aracılığıyla yaymak için kullanılan bir bit maskesi tam sayısıdır.
Compose artık varsayılan bağımsız değişkenleri de composable işlevine dönüştürüyor. Bu işlem, işlevin kendisinde ek bir yapay varsayılan aşırı yükleme oluşturmadan yapılır. Bu nedenle, bu değişiklik daha az işlevin tanımlanmasına neden olur.
Bu değişiklikten kaynaklanan bilinen kasıtlı davranış değişiklikleri:
- Bazı aramalar, daha önce atlanmayacakları yerlerde atlanacak.
- Varsayılan bağımsız değişken ifadelerindeki birleştirilebilir ifadeler artık doğru şekilde abone olunuyor ve işleniyor
Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer composable işlevlere yayılır. Bu, çalışma zamanında daha az karşılaştırma yapılmasına, yuva tablosu boyutunun küçülmesine ve daha önce atlanmayan composable işlevlerin daha fazla atlanmasına neden olur. 2. Derleme zamanında "statik" olduğu belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Bu, karşılaştırma sayısını ve yuva tablosu boyutunu azaltır. 3. Oluşturulan grup sayısını en aza indirmek için işlevlerin gövdesinin kontrol akışı yapısı kullanılır. Bu, yuva tablosu boyutunu küçültür ve çalışma zamanında daha az iş yükü oluşturur. İşlevlere gönderilen ve işlev gövdesinde kullanılmayan kullanılmamış parametreler, işlevin atlanabilirliğini belirlemede dikkate alınmaz.
Çoğu uyumsuz değişiklik, derleyicinin doğrudan hedeflediği API'lerle ilgiliydi ve Compose'un normal kullanımı etkilenmeyecek: 1. Composer::startExpr kaldırıldı 2. Composer::endExpr kaldırıldı 3. Composer::call kullanımdan kaldırıldı 4.
key
işlevinin değişken sayıda bağımsız değişken içermeyen aşırı yüklemeleri kaldırıldı. Bundan sonravararg
sürümünü kullanın. 5. Pivotal ek açıklaması kullanımdan kaldırıldı.key
yerine 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).
Applier artık kompozisyonları silmek için clear() yöntemini gerektiriyor (Ibe697)
MutableVector'a asMutableList() yöntemi eklendi. Bu sayede, listenin tamamını kopyalamaya gerek kalmadan MutableVector'ın herkese açık API'ye iletilmesi sağlandı. (I298df)
Etkinliklere yanıt olarak iş başlatmak için kompozisyonda yönetilen bir CoroutineScope elde etmek üzere rememberCoroutineScope() eklendi. (I0e264)
MutableVector, standart Collection arayüzünün hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde bir hız sunar ve yalnızca şirket içi uygulamalarda kullanılmak üzere tasarlanmıştır. (I8ebd6)
Kotlin Compose'un gerektirdiği sürümde sorun yaşanmaması için
StableMutableList
veStableMutableMap
geçici olarak kaldırıldı. Bu arayüzler, Compose'un sorunu içermeyen bir Kotlin sürümüne güncellenmesinin ardından yeniden kullanıma sunulacaktır.SnapshotStateList
veSnapshotStateMap
artık herkese açık ancakStableMutableList
veStableMutableMap
geri yüklendiğinde kullanımdan kaldırılacak. (Ia7769)Animasyon zamanlaması için üst düzey withFrameNanos işlevi eklendi (Ie34c5).
@Untracked ek açıklaması kullanımdan kaldırıldı. @ComposableContract(tracked=false) ile değiştirin (Id211e)
RestartableFunction ve ilişkili API'ler ComposableLambda olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiğinden normalde kaynak düzeyinde uyumluluğu etkilemez. Yeniden adlandırma işlemi, bu sınıfın yığın izlerinde (I7eb25) göründüğünde ne olduğunu daha iyi iletmek için yapıldı.
@Composable ek açıklaması artık sınıflarda geçerli değil (Ia5f02)
Ambient<T>
artık @Immutable yerine @Stable (I0b4bb)Bu değişiklikten önce, bir @Composable işlevinin içinde oluşturuculara yapılan çağrılar, (I5205a, b/158123804) varsa önemsiz olmayan bir şekilde Compose derleyici eklentisi tarafından engelleniyordu.
Recompose composable artık yararlı bir soyutlama değildir. Çoğu yeniden oluşturma işlemi, MutableState atamaları sonucunda gerçekleşmelidir. Bunun ötesinde bir işlem için, mevcut kapsamın yeniden oluşturulmasını tetiklemek üzere
invalidate
işlevini kullanmanız önerilir. (Ifc992)Observe artık yararlı bir soyutlama değildir. Bu işlevi kopyalamanız gerekiyorsa yalnızca bir composable lambda parametresini yürüten bir composable işlev oluşturarak uygulamayı kopyalayabilirsiniz. Örneğin,
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct, @ComposableContract(restartable=false) lehine kullanımdan kaldırıldı (If4708)
Kısa süre önce kullanıma sunulan StateFlow için bir bağdaştırıcı eklendi. Bu bağdaştırıcı, başlangıç değerini önceden doldurmamıza olanak tanır. Böylece döndürülen State, null değer içermez (I61dd8, b/156233789).
Flow için bir bağdaştırıcı eklendi. Kullanım örneği: val value by flow.collectAsState() (If2198, b/153375923)
[Değiştirilebilir]Durum özelliği temsilcisi operatörleri, Kotlin 1.4 özellik temsilcisi optimizasyonlarını desteklemek için uzantılara taşındı. Arayanların
by state { ... }
veyaby mutableStateOf(...)
'u kullanmaya devam etmek için içe aktarma işlemleri eklemesi gerekir. (I5312c)androidx.compose.ViewComposer, androidx.ui.node.UiComposer'a taşındı. androidx.compose.Emittable kaldırıldı. ComponentNode ile gereksizdi. androidx.compose.ViewAdapters kaldırıldı. Bu özellikler artık desteklenen bir kullanım alanı değildir. Compose.composeInto desteği sonlandırıldı. Bunun yerine
setContent
veyasetViewContent
kullanın. Compose.disposeComposition kullanımdan kaldırıldı. Bunun yerinesetContent
tarafından döndürülenComposition
üzerindedispose
yöntemini kullanın. androidx.compose.Compose.subcomposeInto, androidx.ui.core.subcomposeInto olarak taşındı ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı ComponentNode#emitRemoveAt, ComponentNode#removeAt olarak yeniden adlandırıldı ComponentNode#emitMode, ComponentNode#move olarak yeniden adlandırıldı (Idef00)ComposeFlags.COMPOSER_PARAM
işaretinitrue
olarak güncelledik. Bu değişiklik, Compose eklentisinin kod oluşturma stratejisini etkileyecek. Bu durum, üst düzeyde, @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametre, çalışma zamanının yürütmeyi düzgün bir şekilde yönetebilmesi için sonraki @Composable çağrılarına iletilir. Bu, önemli bir ikili uyumluluğu bozan değişikliktir ancak Compose'un izin verilen tüm kullanımlarında kaynak düzeyinde uyumluluğu korur. (I7971c)Ambients API'de önemli değişiklikler yapıldı. Ayrıntılar için günlük ve
Ambient<T>
dokümanlarına bakın (I4c7ee, b/143769776)LiveData için adaptör içeren yeni bir yapay nesne olan ui-livedata eklendi. Kullanım örneği: val value by liveData.observeAsState() (Ie9e8c, b/150465596)
Açık başlangıç değeri olmayan Rx bağdaştırıcıları kullanımdan kaldırıldı. Boş değer kullanmak her zaman en iyi varsayılan değer değildir. Örneğin, bir listeniz olduğunda emptyList() veya başka bir makul varsayılan değerle başlamak daha iyidir (I00025, b/161348384).
ui-rxjava2 eklendi. Bu yeni yapay nesne, RxJava2 için adaptörler içerir. Kullanım örneği: val value by observable.subscribeAsState() (Ifab4b, b/153369097)
savedInstanceState()
artık null değer atanabilir türlerle kullanılabilir (I6847f, b/153532190)Özel Saver nesneleri yazmayı kolaylaştırmak için yeni listSaver() ve mapSaver() (I8cf68, b/152331508)
Yeni işlevler: savedInstanceState() ve rememberSavedInstanceState(). Bunlar state() ve remember() işlevlerine benzer ancak yerleşik olarak kaydedilmiş örnek durumu desteğine sahiptir (If1987, b/152025209).
Hata Düzeltmeleri
runOnIdleCompose
,runOnIdle
olarak yeniden adlandırıldı (I83607)- LayoutNode deneysel API'si yapıldı (I4f2e9)
- androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Bu türü kullanan TextField, FilledTextField ve CoreTextField composable'larının desteği de sonlandırıldı. Lütfen bunun yerine androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005).
- Modifier'daki drawBackground uzantısı API'leri lehine, kullanımdan kaldırılan DrawBackground API'si kaldırıldı. Kod yollarını azaltmak ve Modifier'ın kompozisyonun bir parçası olarak oluşturulması gerekliliğini ortadan kaldırmak için renk, fırça ve boya drawBackground uygulamaları yeniden düzenlendi. (I0343a)
- Canvas yerine CanvasScope'u kullanıma sunan, daha üst düzeydeki Compose API'leri güncellendi. Bu sayede tüketicilerin kendi Paint nesnelerini korumasına gerek kalmaz. Hâlâ bir Canvas'a erişmesi gereken tüketiciler, temel Canvas ile çizim komutları vermek için geri çağırma sağlayan drawCanvas uzantı yöntemini kullanabilir. (I80afd)
- WithConstraints sondaki lambda API'si değiştirildi. Artık iki parametre yerine, kısıtlamalara ve layoutDirection'a ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlayan bir alıcı kapsamı var (I91b9a, b/149979702).
- Simetrik dolgu değiştiricisi eklendi. (I39840)
- wrapContentWidth ve wrapContentHeight, herhangi bir hizalama yerine dikey veya yatay hizalama bekleyecek şekilde güncellendi. Yer çekimi değiştiricisi, dikey veya yatay hizalamayı kabul edecek şekilde güncellendi. Satır, sütun ve yığın, özel sürekli hizalamaları destekleyecek şekilde güncellendi. (Ib0728)
- ui-text modülünün adı ui-text-core olarak değiştirildi (I57dec).
- DrawModifier API'yi iyileştirme:
- draw() ContentDrawScope için alıcı kapsamı oluşturuldu.
- draw() işlevindeki tüm parametreler kaldırıldı
- DrawScope, eski CanvasScope ile aynı arayüze sahiptir.
- ContentDrawScope'ta drawContent() yöntemi var (Ibaced, b/152919067)
- ColoredRect desteği sonlandırıldı. Bunun yerine
Box(Modifier.preferredSize(width, height).drawBackground(color))
politikasını kullanın. (I499fa, b/152753731) - Değiştirici artı operatör, fabrika uzantısı işlevleriyle değiştirildi (I225e4).
- RowScope ve ColumnScope üyelerine artık Row ve Column dışında da erişilebiliyor. (I3a641)
- LayoutFlexible, LayoutWeight olarak yeniden adlandırıldı. Sıkı parametre, doldurma olarak yeniden adlandırıldı. (If4738)
- WithConstraints, LayoutDirection parametresini aldı (I6d6f7)
- Arka planı DrawBackground olarak yeniden adlandırın ve varsayılan olarak ezberlenmesini sağlayın (Ia0bd3).
- ButtonStyle, ayrı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenen örneklere bakın. (If63ab, b/146478620, b/146482131)
runOnIdleCompose
verunOnUiThread
artık ComposeTestRule'daki yöntemler yerine genel işlevlerdir. (Icbe8f)
Harici Katkı (External Contribution)
- Looper ve Handler gibi gereksiz API'leri Compose Runtime taşıma katmanından kaldırma (I6847d)
- Başlangıç değeri olmayan
Flow<T>.collectAsState()
özelliğinin desteğini sonlandırın. Bunun yerineStateFlow<T>
kullanın veya açık bir başlangıç değeri iletin. (I63f98, b/157674865)