Compose Çalışma Zamanı
Compose'un programlama modelinin ve durum yönetiminin temel yapı taşları ve Compose Derleyici Eklentisi'nin hedeflemesi gereken temel çalışma zamanı.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
30 Ekim 2024 1.7.5 - - 1.8.0-alpha05

Yapı

Oluşturma, androidx içindeki 7 Maven grup kimliğinin birleşimidir. Her grup, kendi sürüm notlarına sahip hedeflenen bir işlev alt kümesi içerir.

Bu tabloda, gruplar ve her sürüm notları grubunun bağlantıları açıklanmaktadır.

GrupAçıklama
compose.animationJetpack Compose uygulamalarında animasyonlar oluşturarak kullanıcı deneyimini zenginleştirin.
compose.derleyici@Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisi ile optimizasyonları etkinleştirin.
compose.foundationKullanı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.materialKullanıma hazır Materyal Tasarım Bileşenleri ile Jetpack Compose kullanıcı arayüzleri oluşturun. Bu, www.material.io'da açıklananlarla eşleşen bileşenler sağlamak için tasarlanmış Compose'un üst düzey giriş noktasıdır.
compose.material3Materyal Tasarım'ın yeni evrimi olan Materyal Tasarım 3 Bileşenleriyle Jetpack Compose kullanıcı arayüzleri oluşturun. Material 3, güncellenmiş temalar ve bileşenler ile dinamik renk gibi Material You kişiselleştirme özelliklerini içerir ve yeni Android 12 görsel stili ve sistem kullanıcı arayüzüyle uyumlu olacak şekilde tasarlanmıştır.
compose.runtimeCompose'un programlama modelinin ve durum yönetiminin temel yapı taşları ve Compose Derleyici Eklentisi'nin hedeflemesi gereken temel çalışma zamanı.
compose.uiDüzen, çizim ve giriş dahil olmak üzere cihazla etkileşimde bulunmak için gereken oluşturma kullanıcı arayüzünün temel bileşenleri.

Bağımlılıkları beyan etme

Compose'a bağımlı eklemek için projenize Google Maven deposunu eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu inceleyin.

Uygulamanızın veya modülünüzün build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Eski

dependencies {
    implementation "androidx.compose.runtime:runtime:1.7.0"
    implementation "androidx.compose.runtime:runtime-livedata:1.7.0"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.7.0"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.7.0")
    implementation("androidx.compose.runtime:runtime-livedata:1.7.0")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.7.0")
}

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'i iyileştirmemize yardımcı olacaktır. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy verebilirsiniz.

Yeni sayı oluştur

Daha fazla bilgi için Sorun İzleyici dokümanlarına bakın.

Ç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 yayınlanır. 1.7.0-rc01 sürümü bu taahhütleri içerir.

Çalışma Zamanı İzleme 1.0 sürümü

Sürüm 1.0.0-beta01

29 Kasım 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 yayınlanır. 1.0.0-beta01 sürümü bu taahhütleri içerir.

Sürüm 1.0.0-alpha05

15 Kasım 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 yayınlanır. 1.0.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.compose-runtime ve tracing-perfetto) sabitlendi. Bu sayede, compose-runtime-tracing'in uygulamaya compose-runtime'un daha yeni bir sürümünü getirmesine neden olan sorun düzeltildi.

Sürüm 1.0.0-alpha04

23 Ağustos 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 yayınlanır. 1.0.0-alpha04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Karşılaştırma ve Tracing Perfetto'nun en son sürümleriyle uyumludur. Örneğin, AndroidX Karşılaştırma ve Android Studio'da (Hedgehog Beta 2'den itibaren) uygulama başlatılırken (soğuk başlatma) Kompozisyon İzleme desteğini etkinleştirir.

API Değişiklikleri

  • androidx.tracing.perfetto.Trace, androidx.tracing.perfetto.PerfettoSdkTrace olarak yeniden adlandırıldı. (I44af8)
  • Perfetto SDK API'lerinin izlemesini android.os.Trace ile tutarlı hale getirme. (I73ba0, b/282199917)
  • Uygulamanın başlatılmasında izleme için ön koşullar. (Iad890)
  • Deneysel ve herkese açık API dosyalarının birleştirilmesi (I0f2e1, b/278769092)

Sürüm 1.0.0-alpha02

8 Şubat 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 yayınlanır. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • İşlevsel bir değişiklik yoktur. Aşağı akış bağımlılıkları androidx.tracing:tracing-perfetto*'nda birden fazla performans optimizasyonu.

Sürüm 1.0.0-alpha01

7 Eylül 2022

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • androidx.compose.runtime:runtime-tracing, destekleyen araçlar içeren (yakında kullanıma sunulacak) bir Compose uygulamasında genişletilmiş izlemeye olanak tanıyan bir kitaplıktır. Bu ilk sürüm 1.0.0-alpha01'dir.

1.8 sürümü

Sürüm 1.8.0-alpha05

30 Ekim 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha05 yayınlanır. 1.8.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Int.MAX_VALUE değerini SnapshotIdSet değerine ekleyerek yığın taşmasını düzeltin. (b/370536104, Ic4179f6)
  • Çalışma zamanı mikro optimizasyonları (I50c60)
  • R8'in hata ayıklama runtimeCheck çağrılarını kaldırmasına izin verme (I8c44)
  • compoundKeyOf işlevini iteratif yerine yinelemeli yapın (I5817f)

Harici Katkı

  • Koleksiyon listeleriyle grupları uygulama (I7d47c)

Sürüm 1.8.0-alpha04

16 Ekim 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha04 yayınlanır. 1.8.0-alpha04 sürümü bu taahhütleri içerir.

Performans İyileştirmeleri

  • Oluşturucuda durum kayıtları için anlık görüntü kimliği sağlayın (85c00f)
  • Sınıf doğrulama hatalarını önlemek için SnapshotState***'ü yeniden yapılandırın (6ee4a6)
  • Atışın satır içine alınmasını önlemek için R8 kurallarını düzeltin (5beb92)
  • İşlemleri mikro optimize etme (d73c5c)
  • JVM'de SynchronizedObject ayırmalarını optimize edin (2b043f)

Sürüm 1.8.0-alpha03

2 Ekim 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha03 yayınlanır. 1.8.0-alpha03 sürümü bu taahhütleri içerir.

Performans İyileştirmeleri

  • rememberCoroutineScope (f61464) için çocuk bağlamı yavaşça oluşturma
    • rememberCoroutineScope genellikle beste sonrasında gerçekleşen olaylara karşılık olarak eş yordamlar başlatmak için kullanılır. Bazı durumlarda bu etkinlikler hiç gerçekleşmeyebilir. Bu da herhangi bir avantajı olmayan iş oluşturma ve iptal etme maliyetlerinin artmasına neden olur.
    • rememberCoroutineScope tarafından döndürülen kapsamın, erişildiğinde coroutineContext öğesini gecikmeli olarak oluşturmasını sağlayın. Böylece, kapsam hiçbir zaman kullanılmadığında iş oluşturulması ve iptal edilmesi tamamen önlenir.

Sürüm 1.8.0-alpha02

18 Eylül 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha02 yayınlandı. 1.8.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Oluşturma sırasında duraklatılabilen ve bileşime eşzamansız olarak uygulanabilen bir alt bileşim oluşturmaya olanak tanıyan PausableComposition eklendi. Şu anda geliştirme aşamasında olan duraklatma için derleyici desteği gerekir. (I3394b)

Sürüm 1.8.0-alpha01

4 Eylül 2024

androidx.compose.runtime:runtime-*:1.8.0-alpha01 yayınlanır. Sürüm 1.8.0-alpha01 bu kaydetmeleri içerir.

1.7 sürümü

Sürüm 1.7.5

30 Ekim 2024

androidx.compose.runtime:runtime-*:1.7.5 yayınlanır. Sürüm 1.7.5 bu taahhütleri içerir.

Sürüm 1.7.4

16 Ekim 2024

androidx.compose.runtime:runtime-*:1.7.4 yayınlanır. 1.7.4 sürümü bu taahhütleri içerir.

Sürüm 1.7.3

2 Ekim 2024

androidx.compose.runtime:runtime-*:1.7.3 yayınlanır. 1.7.3 sürümü bu taahhütleri içerir.

1.7.2 sürümü

18 Eylül 2024

androidx.compose.runtime:runtime-*:1.7.2 yayınlanır. 1.7.2 sürümü bu taahhütleri içerir.

1.7.1 sürümü

10 Eylül 2024

  • Android yapılarında değişiklik yok. -desktop yapı kaldırıldı, -jvmStubs ve -linuxx64Stubs yapı eklendi. Bu hedeflerin hiçbiri kullanıma yönelik değildir. Jetbrains Compose çalışmalarında yardımcı olacak yer tutuculardır.

1.7.0 sürümü

4 Eylül 2024

androidx.compose.runtime:runtime-*:1.7.0 yayınlanır. 1.7.0 sürümü bu taahhütleri içerir.

1.6.0'dan bu yana önemli değişiklikler

  • Varsayılan olarak compositionLocalWithComputedDefault() kullanılarak veya provides yerine providesComputed kullanılarak değeri hesaplamak için kullanılacak bir lambda sağlayarak diğer kompozisyon yerellerinin değerlerine göre hesaplanan bir kompozisyon yereli sağlama özelliği eklendi.
  • Yerel bir bileşimin değeri, değeri hesaplayan lambda içinden erişilebilen yerel bileşimin currentValue özelliği kullanılarak elde edilebilir. Yalnızca @Composable işlevlerinde erişilebilen current yerine kullanılır. (Iadbc0)
  • Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü dahil diğer anlık görüntülerden hemen erişilebilir. Nesnenin oluşturulduğu anlık görüntü uygulanana kadar sonraki tüm değişiklikler görünmez.
  • mutableStateOf() öğesinin ilk durumu ve temel sürümleri, mutableStateOf() işlevine parametre olarak iletilen değerdir. mutableStateListOf() ve mutableStateMapOf()'un başlangıç durumu boştur.
  • Bir durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilmesini desteklemek için kullanılan Snapshot.isInSnapshot ve Snapshot.PreexistingSnapshotId eklendi.
  • Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin kalıbını izleyerek anında erişilebilirliği destekleyebilir. (I84a17)
  • Oluşturma kitaplıkları için nonSkippingGroupOptimization öğesini etkinleştir. Bu, androidx'deki yeniden başlatılamayan tüm derlenebilir işlevler için oluşturulan kodun daha verimli olmasına neden olur. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08)
  • Aynı karedeki alt kompozisyonlardaki birleştirilebilir lambdaları geçersiz kılar. (98301c)
  • onRelease geri arama işlevini onForgotten ile aynı sırada çağırın. (2cd790)
  • Güçlü atlama modunu etkinleştirme (ed1766)
  • currentCompoundHashKey değerini daha fazla durumda benzersiz hale getirme (d4a872)

Sürüm 1.7.0-rc01

21 Ağustos 2024

androidx.compose.runtime:runtime-*:1.7.0-rc01 yayınlandı. 1.7.0-rc01 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta07

7 Ağustos 2024

androidx.compose.runtime:runtime-*:1.7.0-beta07 yayınlanır. 1.7.0-beta07 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta06

24 Temmuz 2024

androidx.compose.runtime:runtime-*:1.7.0-beta06 yayınlanır. 1.7.0-beta06 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta05

10 Temmuz 2024

androidx.compose.runtime:runtime-*:1.7.0-beta05 yayınlandı. 1.7.0-beta05 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta04

26 Haziran 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 yayınlanır. 1.7.0-beta04 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta03

12 Haziran 2024

androidx.compose.runtime:runtime-*:1.7.0-beta03 yayınlanır. 1.7.0-beta03 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-beta02

29 Mayıs 2024

androidx.compose.runtime:runtime-*:1.7.0-beta02 yayınlanır. Sürüm 1.7.0-beta02 bu kayıtları içerir.

Sürüm 1.7.0-beta01

14 Mayıs 2024

androidx.compose.runtime:runtime-*:1.7.0-beta01 yayınlandı. Sürüm 1.7.0-beta01 bu kayıtları içerir.

Sürüm 1.7.0-alpha08

1 Mayıs 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha08 yayınlanır. 1.7.0-alpha08 sürümü bu taahhütleri içerir.

Sürüm 1.7.0-alpha07

17 Nisan 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha07 yayınlanır. 1.7.0-alpha07 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Varsayılan olarak compositionLocalWithComputedDefault() kullanılarak veya provides yerine providesComputed kullanılarak değeri hesaplamak için kullanılacak bir lambda sağlayarak diğer kompozisyon yerellerinin değerlerine göre hesaplanan bir kompozisyon yereli sağlama özelliği eklendi.
  • Yerel bir bileşimin değeri, değeri hesaplayan lambda içinden erişilebilen yerel bileşimin currentValue özelliği kullanılarak elde edilebilir. Yalnızca @Composable işlevlerinde erişilebilen current yerine kullanılır. (Iadbc0)

API Değişiklikleri

  • Yeni oluşturulan durum nesnelerine, başlangıç durumlarıyla birlikte global anlık görüntü dahil diğer anlık görüntülerden hemen erişilebilir. Nesnenin oluşturulduğu anlık görüntü uygulanana kadar sonraki değişiklikler görünmez.
  • mutableStateOf() öğesinin ilk durumu ve temel sürümleri, mutableStateOf() işlevine parametre olarak iletilen değerdir. mutableStateListOf() ve mutableStateMapOf()'un başlangıç durumu boştur.
  • Bir durum nesnesinin oluşturulduktan sonra genel anlık görüntüden hemen erişilebilmesini desteklemek için kullanılan Snapshot.isInSnapshot ve Snapshot.PreexistingSnapshotId eklendi.
  • Özel durum nesneleri, yerleşik anlık görüntü nesnelerinde yapılan değişikliklerin kalıbını izleyerek anında erişilebilirliği destekleyebilir. (I84a17)

Hata Düzeltmeleri

  • İç içe yerleştirilmiş anlık görüntülerde readObserver öğelerinin birleştirilmesi düzeltildi. Bu durum, iç içe yerleştirilmiş türetilmiş durumların snapshotFlow içinde kullanıldığında yeterince geçersiz kılınmasına neden oldu. (Idf138)

Sürüm 1.7.0-alpha06

3 Nisan 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 yayınlanır. 1.7.0-alpha06 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • providesDefault (538f45) işleyen tek değerler sağlama sorununu düzeltin
  • Recomposer'da kare saate (07e5c6) erişen bir kilitlenme oluşmasını önleyin

Sürüm 1.7.0-alpha05

20 Mart 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 yayınlanır. 1.7.0-alpha05 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Devre dışı bırakılan bestedeki geç değişiklikleri net bir şekilde belirtin (5950bc)

Sürüm 1.7.0-alpha04

6 Mart 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 yayınlanır. 1.7.0-alpha04 sürümü bu taahhütleri içerir.

Performans İyileştirmeleri

  • Türetilmiş durum değerlendirmesi başına bir kez Snapshot.current çağrısı (ee7daf)
  • Bileşimde her gözlem için bir kez currentRecord'ü okuma (b882b2)
  • snapshotFlow (231e56) dosyasında yanlışlıkla iteratör ayırma işlemini kaldırma
  • Kitaplık oluşturmak için nonSkippingGroupOptimization'ü etkinleştirin. Bu, androidx'deki yeniden başlatılamayan tüm derlenebilir işlevler için oluşturulan kodun daha verimli olmasına neden olur. Gelecekte bu özelliği varsayılan olarak etkinleştirmeyi planlıyoruz. I(acbc08)

Sürüm 1.7.0-alpha03

21 Şubat 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 yayınlandı. 1.7.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Değişikliklerin daha iyi tespit edilmesi için değiştirme gruplarını kullanın (0941b5)

Performans İyileştirmeleri

  • Değişiklikleri algılarken bellek ayırmayı iyileştirme (53e7fd)
  • Oluşturucudaki bellek sızıntısı düzeltildi (0e097d)
  • Yeniden oluştururken geçersiz kılmaları iletmek için ScopeMap kullanın (e19a7e)
  • Yalnızca türetilmiş durumları tutacak şekilde geçersiz kılma haritasını optimize edin (f11c44)
  • IdentityArraySet kullanımlarını ScatterSet ile değiştirme (db572e)
  • ScopeMap içinde removeScope optimize edin (bb0530)

Sürüm 1.7.0-alpha02

7 Şubat 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 yayınlanır. 1.7.0-alpha02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Aynı karedeki alt kompozisyonlardaki birleştirilebilir lambdaları geçersiz kılar. (98301c)
  • onForgotten ile aynı sırayla onRelease geri arama numarasını arayın. (2cd790)
  • snapshotFlow içinde gözlemlenmeyen, filtre değişti durumları. (796b80)

Performans İyileştirmeleri

  • Zaten şeffaf olduğunda anlık görüntü gözlemleyicisini yerinde değiştirin. (f60f30)
  • SnapshotIdSet.lowest() dosyasını optimize edin. (7ae149)
  • SnapshotIdSet uygulamasında, tahsissiz bir fold() kullanın. (532b7d)
  • Yinelemeli ayırmayı kaldırın (83f96b)

Sürüm 1.7.0-alpha01

24 Ocak 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 yayınlanır. 1.7.0-alpha01 sürümü bu taahhütleri içerir.

Performans Optimizasyonları

  • Alt grup eklendikten sonra alan oluşturma özelliğini ekleme (b5960c)
  • Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
  • Güçlü atlama modunu etkinleştirme (ed1766)

Hata Düzeltmeleri

  • Doğal hatırlama özelliğinde varsayılan parametre meta verilerini hesaba katın (096665)
  • currentCompoundHashKey özelliğini daha fazla durumda benzersiz hale getirin (d4a872)
  • Satır içi işlev çağrısından çıkarken grupları gerçekleştirme (2a90fc)

1.6 sürümü

1.6.8 sürümü

12 Haziran 2024

androidx.compose.runtime:runtime-*:1.6.8 yayınlanır. 1.6.8 sürümü bu taahhütleri içerir.

1.6.7 sürümü

1 Mayıs 2024

androidx.compose.runtime:runtime-*:1.6.7 yayınlandı. 1.6.7 sürümü bu taahhütleri içerir.

1.6.6 sürümü

17 Nisan 2024

androidx.compose.runtime:runtime-*:1.6.6 yayınlanır. Son sürümden bu yana değişiklik yok.

1.6.5 sürümü

3 Nisan 2024

androidx.compose.runtime:runtime-*:1.6.5 yayınlandı. 1.6.5 sürümü bu taahhütleri içerir.

1.6.4 sürümü

20 Mart 2024

androidx.compose.runtime:runtime-*:1.6.4 yayınlandı. 1.6.4 sürümü bu taahhütleri içerir.

Sürüm 1.6.3

6 Mart 2024

androidx.compose.runtime:runtime-*:1.6.3 yayınlanır. 1.6.3 sürümü bu taahhütleri içerir.

Sürüm 1.6.2

21 Şubat 2024

androidx.compose.runtime:runtime-*:1.6.2 yayınlandı. 1.6.2 sürümü bu taahhütleri içerir.

1.6.1 sürümü

7 Şubat 2024

androidx.compose.runtime:runtime-*:1.6.1 yayınlanır. 1.6.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • onRelease geri arama işlevini onForgotten ile aynı sırada çağırın. (2cd790)
  • snapshotFlow'te gözlemlenmeyen, değiştirilmiş durumları filtreleyin. (796b80)

1.6.0 sürümü

24 Ocak 2024

androidx.compose.runtime:runtime-*:1.6.0 yayınlandı. 1.6.0 sürümü bu taahhütleri içerir.

1.5.0 sürümünden beri yapılan önemli değişiklikler

Yeni Özellikler

  • Yeniden oluşturma döngüsü sırasında atlanan istisnaları yeniden atma (4dff9a)

Performans optimizasyonları

  • Anlık görüntü durumlarının kayıt değişikliklerini optimize etme (28c3fe)
  • rememberSaveable'ü optimize edin (f01d79)
  • Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)
  • Beste yerel değerleri sağlama özelliğini iyileştirme (a337ea)

Hata Düzeltmeleri

  • Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
  • Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
  • RememberObserver yaşam döngülerini yalnızca hatırlama hesaplamasında depolandığında tetikleyin. (f6b4dc)
  • $dirty yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)
  • Bazen yanlış beste yerellerini alan taşınabilir içerik sorununu düzeltme. (035cd6)

Sürüm 1.6.0-rc01

10 Ocak 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 yayınlandı. Sürüm 1.6.0-rc01 bu kaydetmeleri içerir.

Sürüm 1.6.0-beta03

13 Aralık 2023

androidx.compose.runtime:runtime-*:1.6.0-beta03 yayınlanır. Sürüm 1.6.0-beta03 bu kaydetmeleri içerir.

Sürüm 1.6.0-beta02

29 Kasım 2023

androidx.compose.runtime:runtime-*:1.6.0-beta02 yayınlanır. 1.6.0-beta02 sürümü bu taahhütleri içerir.

Sürüm 1.6.0-beta01

15 Kasım 2023

androidx.compose.runtime:runtime-*:1.6.0-beta01 yayınlanır. 1.6.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Ek açıklamada belirli kararlılık değerlerini iletin. (274a4c)

Hata Düzeltmeleri

  • Bağlamda kompozisyon yerel kapsam durumu için referans politikası kullanın. (83361c)
  • $dirty yakalamayı satır içi lambda'larla kısıtlayın. (acfca0)
  • Bazen yanlış beste yerellerini alan taşınabilir içerik sorununu düzeltme. (035cd6)
  • RecomposeScopeImpl'te daha hızlı, yer ayırmayan karma haritalar kullanın. (d79494)
  • DerivedState uygulamasında ObjectIntMap hesabını kullanın. (21862e)
  • DerivedState uygulamasında int SnapshotThreadLocal için IntRef kullanın. (04eaf4)

Sürüm 1.6.0-alpha08

18 Ekim 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha08 yayınlandı. 1.6.0-alpha08 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • RememberObserver yaşam döngülerini yalnızca hatırlama hesaplamasında depolandığında tetikleyin. (f6b4dc)
  • Geçersiz kılma listesi sıralamasında atamaların iyileştirilmesi. (954d63)
  • SnapshotStateObserver içinde yeni, alan ataması yapmayan haritalar kullanın. (4303ce)
  • Beste devre dışı bırakıldığında geçersiz kılma işlemlerini temizleyin. (e001be)

Sürüm 1.6.0-alpha07

4 Ekim 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha07 yayınlanır. 1.6.0-alpha07 sürümü bu kaydetmeleri 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ık RandomAccess olarak işaretlenmiştir. (I5210c, b/219554654)

Sürüm 1.6.0-alpha06

20 Eylül 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 yayınlanır. 1.6.0-alpha06 sürümü bu taahhütleri içerir.

Sürüm 1.6.0-alpha05

6 Eylül 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha05 yayınlanır. 1.6.0-alpha05 sürümü bu kaydetmeleri içerir.

Sürüm 1.6.0-alpha04

23 Ağustos 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha04 yayınlanır. 1.6.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Yeniden oluşturma döngüsü sırasında atlanan istisnaları yeniden atma (4dff9a)

API Değişiklikleri

  • ReusableComposition devre dışı bırakılması için gözlemleri kaldıran ancak düğümleri yerinde tutan bir yöntem eklendi. Devre dışı bırakılan kompozisyon, setContent numarası aranarak tekrar etkinleştirilebilir. (Ib7f31)
  • Alt kompozisyonların yaşam döngüsünü ve yeniden kullanımını yönetmek için ReusableComposition arayüzü ekleyin. (I812d1, b/252846775)

Sürüm 1.6.0-alpha03

9 Ağustos 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha03 yayınlanır. 1.6.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Yeni CompositionLocalProvider optimizasyonunu düzeltme (3118e88)
  • Taşınabilir içerik düğümlerinin nasıl söküldüğünü düzeltin. (5e3d59b)

Sürüm 1.6.0-alpha02

26 Temmuz 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha02 yayınlandı. 1.6.0-alpha02 sürümü bu taahhütleri içerir.

Yeni Özellikler ve Performans İyileştirmeleri

  • rememberSaveable'ü optimize edin (f01d79)
  • Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)
  • Kompozisyon yerel değerlerini sağlama özelliğini iyileştirme (a337ea)
  • Grup oluşturulmaması için SideEffect, @ExplicitGroupsComposable olarak işaretlenir. (I74815)
  • Yeniden kullanımda kompozisyon yerel haritalarını karşılaştırmaktan kaçının (782071)

API Değişiklikleri

  • CompositionLocalProviders için birden fazla değeri daha hızlı sağlamak için kullanılan ancak tek bir değer sağlarken ek yük oluşturan yükü önleyen özel bir durum aşırı yüklemesi eklendi. (I6d640, b/288169379)

Hata Düzeltmeleri

  • Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
  • stateSaver, null değeri döndürdüğünde rememberSaveable özelliğinin geri yüklenmesiyle ilgili sorunu düzeltin (90748c)

Sürüm 1.6.0-alpha01

21 Haziran 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 yayınlanır. 1.6.0-alpha01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
  • Anlık görüntüler uygulanırken azaltılmış tahsisler. (I65c09)
  • Anlık görüntü değiştirilmediyse DerivedState içinde readableHash değerini hesaplamaktan kaçının (68c565)

Sürüm 1.5

Sürüm 1.5.4

18 Ekim 2023

androidx.compose.runtime:runtime-*:1.5.4 yayınlanır. 1.5.4 sürümü bu taahhütleri içerir.

Sürüm 1.5.3

4 Ekim 2023

androidx.compose.runtime:runtime-*:1.5.3 yayınlanır. 1.5.3 sürümü bu taahhütleri içerir.

Sürüm 1.5.2

27 Eylül 2023

androidx.compose.runtime:runtime-*:1.5.2 yayınlanır. 1.5.2 sürümü bu taahhütleri içerir.

Sürüm 1.5.1

6 Eylül 2023

androidx.compose.runtime:runtime-*:1.5.1 yayınlandı. 1.5.1 sürümü bu taahhütleri içerir.

Sürüm 1.5.0

9 Ağustos 2023

androidx.compose.runtime:runtime-*:1.5.0 yayınlandı. 1.5.0 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Yeniden oluşturma, renk animasyonları ve AndroidComposeView'teki ayırmalar kaldırıldı. (Ib2bfa)
  • Durum oluşturan ve bir remember çağrısına sarmalanması gereken işlevleri işaretlemek için bir @StateFactoryMarker ek açıklaması eklendi. (I64550)
  • Durum ve MutableState'ün ilkel sürümlerini ekleyin (fb3d89)
  • Snapshot.isApplyObserverNotificationPending (I672a5) eklendi
  • State API'sinin temel sürümleri eklendi. Bu sürümler, otomatik kutulama için ceza uygulanmadan, Int, Long, Kayma ve Çift değerlerinin State nesnelerinde izlenmesini sağladı. Bunları kullanmak için yeni fabrika yöntemlerini (mutableIntState(Int), mutableFloatStateOf(Float) vb.) kullanın. (I48e43)

Hata Düzeltmeleri

  • Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)
  • ComposerImpl'te anlık görüntü referansını saklama (0206f7)
  • Kompozisyonu iki kez uygulamayın (f5791b)
  • İlkleştirilmemiş türetilmiş durum değerlerinin geçersiz kılındığından emin olun (aa2a92)
  • Bestenin kullanımdan kaldırılması sırasında onEndChanges çağrısı. (62cc8c)
  • Alt besteye taşınan içeriği düzeltme (4beb41)
  • Olası kilitlenme sorunlarını düzeltme (c1a425 ve 8edce0)
  • Android penceresi için oluşturulan yeniden derleyici, ON_STOP bildirimi aldığında artık tüm derleme yerine yalnızca withFrameNanos adresine yapılan çağrıları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği ancak animasyonlar veya withFrameNanos'yi çağıran diğer tüm öğelerin engelleneceği anlamına gelir. (Id9e7f, b/240975572)
  • Etkileri kaldırmadan önce LayoutNode için devre dışı bırakma geri çağırmalarını yürütme 3784073
  • Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme ea81df9
  • Düğüm içeren Composable için canlı düzenleme gerileme sorununu düzeltme 73fd4d8
  • ON_STOP, ae276f1 kompozisyonu yerine çerçeve saati yayınlarını duraklatmalıdır
  • SnapshotStateObserver kapsamlarını değiştirilmemiş türetilmiş durumlar için geçersiz kılın 84d9b1c
  • Kompozisyonları bertaraf ederken olası kilitlenme sorununu düzeltme 28761fc
  • İçeriklerin alt kompozisyona taşınması sorununu düzeltme 92d4156
  • Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme (8a03e9)
  • Efektleri kullanmadan önce LayoutNode için devre dışı bırakma geri çağırmaları yürütün (8b0fa4)
  • Düğüm gruplarını sonlandırırken endToMarker() sorununu düzeltin. (d71d980)
  • Devre dışı bırakma kontrolü için mevcut SlotWriter grubunu kullan (a0b518b)
  • SlotTable.moveSlotGapTo() içindeki fill'ü kaldırın ve kapat'a taşıyın (81f9935)
  • Taşınabilir içerik taşınırken eksik geçersiz kılmaları düzeltme (1d7c024)
  • Taşınan taşınabilir içerikler için anında geçersiz kılma işlemlerini düzeltme (8676618)

Performans iyileştirmeleri

  • Anlık görüntü değiştirilmediyse DerivedState içinde readableHash değerini hesaplamaktan kaçının. (307102)
  • Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
  • CoroutineScopes oluşturma işleminin hızlı iptali (a55362 ve bd382f)
  • Durum nesnelerinin kayıtlarının erişilemeyen durum kayıtlarıyla üzerine yazma (c986960)
  • Grupları oluştururken doğru kapsamda bir derleyici kullanın (9a5e5b6)
  • Anlık görüntü geçersiz kılma işlemlerini depolamak için IdentityArraySet kullanın (7f60cca)
  • Anlık görüntü gözlemleri için ayırmaları azaltma (5bc535f)

Sürüm 1.5.0-rc01

26 Temmuz 2023

androidx.compose.runtime:runtime-*:1.5.0-rc01 yayınlandı. 1.5.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Türetilmiş durumların yeniden okunması, değişiklikler kaydedilene kadar ertelenebilir (f38099)

  • mutableStateOf() çağrılarının, ilkellere karşılık gelen özel türlerine taşınmasını önermek için isteğe bağlı bir denetim mevcuttur. Kodun lint kimliği AutoboxingStateCreation. Daha önce bu inceleme tüm projeler için varsayılan olarak etkinleştiriliyordu. Bu uyarıyı Android Studio'nun düzenleyicide ve projenizin lint çıkışlarında görmek için önem derecesini bilgilendirme olarak ayarlayarak uyarı (veya daha yüksek) olarak değiştirin. Bunun için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında gösterildiği gibi warning "AutoboxingStateCreation" değerini belirtin (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Sürüm 1.5.0-beta03

28 Haziran 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 yayınlanır. 1.5.0-beta03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Kaldırılacak alt kompozisyonların yeniden derlenmesini atlama. (Ieeb99, b/254645321)

Sürüm 1.5.0-beta02

7 Haziran 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 yayınlandı. 1.5.0-beta02 sürümü bu taahhütleri içerir.

Performans iyileştirmeleri

  • Anlık görüntü değiştirilmediyse DerivedState içinde readableHash değerini hesaplamaktan kaçının. (307102)

Sürüm 1.5.0-beta01

24 Mayıs 2023

androidx.compose.runtime:runtime-*:1.5.0-beta01 yayınlanır. Sürüm 1.5.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • Yeniden oluşturma, renk animasyonlarında ve AndroidComposeView (Ib2bfa) öğesinde ayrıştırmalar kaldırıldı
  • Durum oluşturan ve remember çağrısına sarmalanması gereken işlevleri işaretlemek için @StateFactoryMarker ek açıklama eklendi. (I64550)
  • Devlet ve MutableState (fb3d89) temel sürümlerini ekleyin
  • Snapshot.isApplyObserverNotificationPending eklendi (I672a5)

Hata Düzeltmeleri

  • Azaltılmış tahsisler (I65c09, d7ea77, 727974 ve 445808)
  • ComposerImpl'te anlık görüntü referansını saklama (0206f7)
  • Oluşturmayı hızlıca iptal etme CoroutineScopes (a55362 ve bd382f)
  • Bileşimi iki kez uygulamayın (f5791b)
  • İlkleştirilmemiş türetilmiş durum değerlerinin geçersiz kılındığından emin olun (aa2a92)
  • Besteyi atma sırasında onEndChanges numaralı telefonu arayın. (62cc8c)
  • İçerikleri alt kompozisyona taşıma sorunu düzeltildi (4beb41)
  • Olası kilitlenmeleri giderme (c1a425)
  • ON_STOP, kompozisyon yerine kare saati yayınlarını duraklatmalıdır (f4a2d1)
  • Yeniden başlatılan lambdalar için değiştirilen işaretleri düzeltme (8a03e9)
  • Etkileri kaldırmadan önce LayoutNode için devre dışı bırakma geri çağırma işlevlerini yürütme (8b0fa4)

Harici Katkı

  • Snapshot.isApplyObserverNotificationPending (I672a5) eklendi

Sürüm 1.5.0-alpha04

10 Mayıs 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 yayınlanır. 1.5.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • State API'nin ilkel sürümleri eklendi. Bu sürümler, Int, Long, Float ve Double değerlerinin otomatik kutuya yerleştirme cezaları almadan State nesnelerinde izlenmesine olanak tanır. Bunları kullanmak için mutableIntState(Int), mutableFloatStateOf(Float) vb. yeni fabrika yöntemlerini kullanın. (I48e43)

Hata Düzeltmeleri

  • Bestenin kullanımdan kaldırılması sırasında onEndChanges çağrısı. Composition.dispose sırasında kaldırılan odak düğümleri, odağı sıfırlamak için onEndChanges öğesine abone oluyor.(03d4a47)

  • Başlatılmamış türetilmiş durum değerlerinin geçersiz kılındığından emin olun. Her türetilmiş durum, SnapshotStateObserver içindeki bağımlılıklarının listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilmiş durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, anlık görüntü ilerleme sırasında kaydedilir. Bu durum, türetilmiş durum okunduktan sonra (Snapshot.notifyObjectsInitialized() çağrısı nedeniyle) gerçekleşebilir.

    SnapshotStateObserver aracında daha önce türetilen durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değerleri okumaktı. Bu durum, bağımlılık geçersizliğinin kaydedilmediği temizlenmiş bir durumda geçersizleştirmenin gerçekleştiği bir yarış durumuna neden oldu.

    Bu değişiklik, türetilmiş durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralar. Böylece, geçersiz kılma işleminin her zaman geçerli bir durumda gerçekleşmesi sağlanır. (c472be6)

Sürüm 1.5.0-alpha03

19 Nisan 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha03 yayınlanır. 1.5.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Android penceresi için oluşturulan yeniden derleyici, ON_STOP bildirimi aldığında artık tüm derleme yerine yalnızca withFrameNanos adresine yapılan çağrıları engelleyecek. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği ancak animasyonlar veya withFrameNanos'yi çağıran diğer tüm öğelerin engelleneceği anlamına gelir. (Id9e7f, b/240975572)

Hata Düzeltmeleri

  • Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 5c1a425
  • Efektleri uygulamadan önce LayoutNode için devre dışı bırakma geri çağırmaları yürütün 3784073
  • Yeniden başlatılan lambdas ea81df9 için değiştirilen işaretleri düzeltme
  • Düğüm içeren Composable için canlı düzenleme gerileme sorununu düzeltme 73fd4d8
  • ON_STOP, ae276f1 kompozisyonu yerine çerçeve saati yayınlarını duraklatmalıdır
  • SnapshotStateObserver kapsamlarını değiştirilmemiş türetilmiş durumlar için geçersiz kılın 84d9b1c
  • Kompozisyonları bertaraf ederken olası kilitlenme sorununu düzeltme 28761fc
  • İçeriklerin alt kompozisyona taşınması sorununu düzeltme 92d4156

Sürüm 1.5.0-alpha02

5 Nisan 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 yayınlandı. 1.5.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Kotlin’in getValue operatörü artık composable olabilir (f174f6e)

Hata Düzeltmeleri, Performans İyileştirmeleri

  • Erişilemez durum kayıtlarına sahip durum nesnelerinin kayıtlarının üzerine yaz (c986960)
  • Grupları değerlendirirken doğru kapsamdaki oluşturucuyu kullanın (9a5e5b6)
  • Düğüm gruplarını sonlandırırken endToMarker() sorununu düzeltme (d71d980)
  • Devre dışı bırakma işlemini kontrol etmek için mevcut SlotWriter grubunu kullanın (a0b518b)
  • Anlık görüntü geçersiz kılmalarını depolamak için IdentityArraySet kullanın (7f60cca)
  • SlotTable.moveSlotGapTo() içindeki fill'ü kaldırın ve kapat'a taşıyın (81f9935)
  • Taşınabilir içerik taşınırken geçersiz kılma işlemlerinin eksik olması sorununu düzeltme (1d7c024)
  • Taşınan taşınabilir içerikler için anında geçersiz kılma işlemlerini düzeltme (8676618)
  • Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)

Sürüm 1.5.0-alpha01

22 Mart 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha01 yayınlanır. 1.5.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Modifier.Nodes'un iş parçacığı başlatmasına izin vermek için Modifier.Node#coroutineScope ekler (I76ef9)
  • CompositionLocalConsumerModifierNode arayüzünü uygulayarak Modifier.Nodes uygulamasının CompositionLocals okumasına izin verin. (Ib44df)

Sürüm 1.4

Sürüm 1.4.3

3 Mayıs 2023

androidx.compose.runtime:runtime-*:1.4.3, herhangi bir değişiklik yapılmadan yayınlanır.

1.4.2 sürümü

19 Nisan 2023

androidx.compose.runtime:runtime-*:1.4.2 yayınlanır. 1.4.2 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Anlık görüntü listesinde ve haritada olası kilitlenmeyi düzeltme 2eb6570

  • Değişiklik, durum kaydına doğrudan yazma işlemiyle eşzamanlıysa SnapshotStateList veya SnapshotStateMap'e içerik eklerken kilitlenmeyle karşılaşabilirsiniz. Bu sorun, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma işlemlerini kullanan 93fcae828b tarafından sunulan değişikliklerle karşılaşma olasılığını önemli ölçüde artırdı.

  • Kilitler, artık harita veya liste kilidi basılı tutulduğunda anlık görüntü kilidi açılmaya çalışılmayacak şekilde sıralanmıştır.

Sürüm 1.4.1

5 Nisan 2023

androidx.compose.runtime:runtime-*:1.4.1 yayınlanır. 1.4.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Düğüm gruplarını sonlandırırken endToMarker() sorununu düzeltme. d71d980

1.4.0 sürümü

22 Mart 2023

androidx.compose.runtime:runtime-*:1.4.0 yayınlanır. 1.4.0 sürümü bu taahhütleri içerir.

1.3.0'dan bu yana önemli değişiklikler

  • İlk kompozisyon için LiveData öğesindeki başlatılmış değeri kullanın 3680e25
  • Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için ComposeNodeLifecycleCallback ekleyin. 8b6a258
  • parameterTypes mülkünü ComposableMethod'e ekleme 7b6c7ad

Hata Düzeltmeleri ve Performans İyileştirmeleri

  • SnapshotStateObserver 29f4a3e içindeki her iki kapsam diznini de temizleyin
  • Atlanabilir olmayan lambdaların gövdesine gereken grupları ekleyin 7d06752
  • Anlık görüntü durumunun 93fcae8 bellek referans özelliklerini iyileştirme
  • Kompozisyon yerel aramalarında kutuyu kaldırma 0875717
  • Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın 6388d8d
  • SnapshotStateObserver öğesini yinelemeli ve eşzamanlı uygulanmaya karşı koru 98cb6ba
  • IdentityArraySet "get" yöntemine bir check-index-bounds kontrolü eklendi 35a77d3
  • Oluşturma modülünü ViewTreeLifecycleOwner uzantılarını kullanacak şekilde güncelleme 21c2122
  • Recomposer kareyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
  • Yeniden derleyiciyi iptal ederken dizin dışı kilitlenme sorununu düzeltme 8f8656f
  • Beste'nin üst sağlayıcıları 9526fcc değerini değiştirdiyse her zaman yeniden oluşturmayı zorunlu kıl
  • İptal edilen işler için yeniden derleyici toleransı a55f7ed
  • Çok sayıda besteci için geçersiz kılma işlemlerini iyileştirme 9b7ed67
  • Yerel olmayan iadeler için kapanış grupları oluşturma sorununu düzeltme b6f590c

Sürüm 1.4.0-rc01

8 Mart 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 yayınlanır. 1.4.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Sürüm 1.4.0-beta02

22 Şubat 2023

androidx.compose.runtime:runtime:1.4.0-beta02 ve androidx.compose.runtime:runtime-saveable:1.4.0-beta02 yayınlandı. 1.4.0-beta02 sürümü bu taahhütleri içerir.

Sürüm 1.4.0-beta01

8 Şubat 2023

androidx.compose.runtime:runtime-*:1.4.0-beta01 yayınlanır. 1.4.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Compose düğümlerinin (I3731b) yaşam döngüsünün gözlemlenmesine olanak tanıyan ComposeNodeLifecycleCallback eklendi
  • Bu işlev yalnızca testte güvenli bir şekilde çağrılabileceği için @TestOnly, Composer.disableSourceInformation() öğesine eklendi. (I896c8)

Hata Düzeltmeleri

  • Kompozisyon yerel aramalarında kutuyu kaldırma (62f66a)
  • Anlık görüntü durumunun bellek referans özelliklerini iyileştirme (dfb451)

Sürüm 1.4.0-alpha05

25 Ocak 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 ve androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 yayınlandı. 1.4.0-alpha05 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Satır içi/desteği sonlandırılmış ve gizli işlevlerin daha fazla türü/boşluk kabul edebileceği durumlar (I24f91)

Sürüm 1.4.0-alpha04

11 Ocak 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 yayınlandı. 1.4.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • TestMonotonicFrameClock artık doğru deneysel notu kullanıyor. (I95c9e)

Hata Düzeltmeleri

  • SnapshotStateObserver değerini yinelenen ve eşzamanlı uygulamalardan koruma (d902fb)

Sürüm 1.4.0-alpha03

7 Aralık 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 yayınlanır. 1.4.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • ComposableMethod sınıfına java.lang.reflect.Method#getParameterTypes() benzeri yeni bir herkese açık yöntem ekleniyor (Iab0c3)

Hata Düzeltmeleri

  • Anlık görüntü uygulama bildirimleri artık Recomposer değişiklikleri uygulamayı bitirdikten sonra gönderiliyor. (Iad6c0, b/222093277)

Sürüm 1.4.0-alpha02

9 Kasım 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha02 yayınlanır. 1.4.0-alpha02 sürümü bu taahhütleri içerir.

Sürüm 1.4.0-alpha01

24 Ekim 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha01 yayınlanır. 1.4.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • SnapshotStateList ve SnapshotStateMap artık sırasıyla toList() ve toMap() için açık bir uygulamaya sahip. Bu yöntemler, içeriklerini depolamak için kullanılan dahili değiştirilemez verileri döndürdüğü için kopya oluşturmadan mevcut içeriklerini döndürür. Bu değer, örneğin, verilerin kopyalanmasını gerektirmeden snapshotFlow kullanarak bir değer akışı oluşturmak için kullanılabilir. (Ica2bd)

Sürüm 1.3

Sürüm 1.3.3

11 Ocak 2023

androidx.compose.runtime:runtime-*:1.3.3 yayınlanır. 1.3.3 sürümü bu taahhütleri içerir.

  • 1.3.2'den bu yana değişiklik yok

Sürüm 1.3.2

7 Aralık 2022

androidx.compose.runtime:runtime-*:1.3.2 yayınlanır. 1.3.2 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • androidx.compose.ui 1.3.2 sürümünü destekleyecek şekilde güncellendi

Sürüm 1.3.1

9 Kasım 2022

androidx.compose.runtime:runtime-*:1.3.1 yayınlanır. 1.3.1 sürümü bu taahhütleri içerir.

Sürüm 1.3.0

24 Ekim 2022

androidx.compose.runtime:runtime-*:1.3.0 yayınlanır. 1.3.0 sürümü bu kaydetmeleri içerir.

1.2.0 sürümünden bu yana yapılan önemli değişiklikler

İstisna İşleme / Canlı Düzenleme Desteği

Kompozisyon İzleme

Kompozit Yansıtma API'leri

Çalışma Zamanı Düzeltmeleri

Anlık Görüntü Sistemi

Sürüm 1.3.0-rc01

5 Ekim 2022

androidx.compose.runtime:runtime-*:1.3.0-rc01 yayınlanır. 1.3.0-rc01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Alan tablosundan gelen ArrayIndexOutOfBoundsException düzeltildi (b/249076084)

Sürüm 1.3.0-beta03

21 Eylül 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 yayınlanır. 1.3.0-beta03 sürümü bu taahhütleri içerir.

Davranışta Değişiklik Yapan Değişiklik

  • remember ve rememberCoroutineScope olan parametre crossinline olarak değiştirildi. Bu durumda, erken iadeye izin vermek yerine erken iadeyle ilgili bir hata raporlanır. Bu da daha sonra dahili bir hatanın raporlanmasına neden olur.
  • Bu değişiklik, yerel olmayan dönüşlerin bu işlevlere iletilen lambda'lardan kaldırılmasını gerektiren yeni derleyici hatalarının bildirilmesine neden olabilir. (Ibea62)

Sürüm 1.3.0-beta02

7 Eylül 2022

androidx.compose.runtime:runtime-*:1.3.0-beta02 yayınlandı. 1.3.0-beta02 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

Sürüm 1.3.0-beta01

24 Ağustos 2022

androidx.compose.runtime:runtime-*:1.3.0-beta01 yayınlanır. 1.3.0-beta01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Bu API'yi kullanan geliştirici araçlarının bir beste alt grubunu kimliğini kullanarak hızlıca bulmasına olanak tanımak için CompositionData uygulamasına find yöntemi eklendi. (I5794f)

Sürüm 1.3.0-alpha03

10 Ağustos 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha03 yayınlanır. 1.3.0-alpha03 sürümü bu taahhütleri içerir.

Sürüm 1.3.0-alpha02

27 Temmuz 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha02 yayınlandı. 1.3.0-alpha02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • ComposerKt.traceEventStart(Int, String), geriye dönük uyumluluk için yeniden eklendi (I6e6de)

Sürüm 1.3.0-alpha01

29 Haziran 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 yayınlanır. 1.3.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Hizmet işlevlerinin çalışma zamanına taşınması (I4f729)

Sürüm 1.2

Sürüm 1.2.1

10 Ağustos 2022

androidx.compose.runtime:runtime-*:1.2.1 yayınlandı. Sürüm 1.2.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Sabitlenmiş bellek sızıntısı: Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntülerin kaldırılması b/239603305

Sürüm 1.2.0

27 Temmuz 2022

androidx.compose.runtime:runtime-*:1.2.0 yayınlandı. 1.2.0 sürümü bu taahhütleri içerir.

1.1.0 tarihinden bu yana önemli değişiklikler

  • Compose Çalışma Zamanı'nda 1.2.0'da kullanıma sunulan birçok özellik ve bunları stabilize eden birçok hata düzeltmesi bulunuyor. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimlerini etkinleştirmek için kullanılabilen movableContentOfAPI'nin kullanıma sunulmasıydı. movableContentOf API, birleştirilebilir bir lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni bir konuma taşıyan bir lambda'ya dönüştürür. Önceki çağrıdan sonra durum geçici olarak korunur. Lambda'ya yapılan yeni bir çağrı kompozisyona girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni bir çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirilmesi gerekir.

  • Bir movableContentOf lambda aynı bileşimde birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur ve çağrılar besteden ayrılıp yeni çağrılar girdikçe durum, çağrıldıkları sırayla giriş çağrılarına ilk çıkış çağrılarından taşınır. Yeni aramalarla hak talebinde bulunulmayan tüm durumlar kalıcı olarak kaldırılır.

  • Bu ve diğer birkaç yeni özelliğe ek olarak, çalışma zamanı ve anlık görüntü durumu sisteminin kararlı hale getirilmesi için çok zaman harcanmıştır. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.

  • Değişikliklerin özet listesini aşağıda bulabilirsiniz:

1.2 Yeni Özellikler

1.2'daki performans

1.2 sürümündeki hata düzeltmeleri

Sürüm 1.2.0-rc03

29 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 yayınlanır. 1.2.0-rc03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Türetilmiş durum gözlemleri daha önce koşulsuz olarak yeniden oluşturma kapsamından ve bileşimden birlikte kaldırılıyordu. Bu da, türetilmiş durumu hâlâ gözlemleyen diğer kapsamları bozuyordu. Bu değişiklik, türetilmiş durum örneklerini yalnızca artık diğer kapsamlar tarafından gözlemlenmiyorsa kaldırır. (b/236618362)

Sürüm 1.2.0-rc02

22 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 yayınlanır. 1.2.0-rc02 sürümü bu taahhütleri içerir.

Sürüm 1.2.0-rc01

15 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc01 yayınlanır. Sürüm 1.2.0-rc01 bu kaydetmeleri içerir.

API Değişiklikleri

  • Oluşturma kitaplıklarındaki arayüzler artık jdk8 varsayılan arayüz yöntemleri (I5bcf1) kullanılarak oluşturulmuştur.

Sürüm 1.2.0-beta03

1 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 yayınlanır. 1.2.0-beta03 sürümü bu taahhütleri içerir.

Sürüm 1.2.0-beta02

18 Mayıs 2022

androidx.compose.runtime:runtime-*:1.2.0-beta02 yayınlanır. 1.2.0-beta02 sürümü bu taahhütleri içerir.

Sürüm 1.2.0-beta01

11 Mayıs 2022

androidx.compose.runtime:runtime-*:1.2.0-beta01 yayınlanır. 1.2.0-beta01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Bu, 1.2 sürümünün ilk beta sürümüdür.

API Değişiklikleri

  • Deneysel Snapshot.unsafeEnter/unsafeLeave (I108f3) eklendi
  • Deneysel Snapshot.asContextElement() API (Iff072) eklendi
  • @ComposableTarget ek açıklaması ve @ComposableTargetMarker ile işaretlenmiş ek açıklamalar artık @file ön ekiyle dosya kapsamında kullanılabilir. Dosya kapsamında bir hedef ek açıklaması kullanmak, derleyicinin dosyada bulunan tüm birleştirilebilir işlevlerin ilişkili uygulayıcıyı hedeflemeyi amaçladığını varsaymasına neden olur. Örneğin, @file:UiComposable kullanıldığında tüm @Composable işlevlerinin Oluştur kullanıcı arayüzü uygulayıcısını hedeflediği belirtilir. Başka bir uygulayıcının hedeflenmesi gereken bir işlev, istenen uygulayıcı için hedef işaretçi ek açıklamasını açıkça sağlamalıdır. (I40804)

Sürüm 1.2.0-alpha08

20 Nisan 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 yayınlanır. 1.2.0-alpha08 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • CompositionTracer arayüzüne TracingInProgress eklendi. (Ic6f12)
  • recomposeScopeIdentity öğesini Composer'a ekle (I0c873)
  • İzleme API'leri (Composer.setTracer) OptIn(InternalComposeTracingApi) ile kısıtlandı. (I9187f)
  • Yeniden kullanılabilir içerik için oluşturulan durumun geçerlilik süresi üzerinde daha fazla kontrol sağlayan ResuableContentHost eklendi. Örneğin, bir alt kompozisyon geçici olarak kullanılmıyorsa içerik devre dışı bırakılabilir. Bu durumda, kompozisyondaki tüm hatırlanan durum unutulur ve örneğin tüm tek kullanımlık efektler tetiklenir. (I2c0f2, b/220322704)

Sürüm 1.2.0-alpha07

6 Nisan 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 yayınlanır. 1.2.0-alpha07 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Yeni Snapshot.withoutReadObservation { ... } işlevi eklendi. Kullanıcıların, bu blok sırasında okunan durum değerlerinin değişikliklerine abone olmadan iletilen lambda işlevini çalıştırmasına olanak tanır. Anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak, ancak gereksiz yeniden birleşmeye veya yeniden ölçüme neden olmadan değeri okuyabilmek istediğiniz kullanım durumlarında bu özellikten yararlanabilirsiniz. (I9f365, b/214054486)

Sürüm 1.2.0-alpha06

23 Mart 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 yayınlandı. 1.2.0-alpha06 sürümü bu taahhütleri içerir.

Sürüm 1.2.0-alpha05

9 Mart 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha05 yayınlanır. 1.2.0-alpha05 sürümü bu taahhütleri içerir.

Harici Katkı

  • Kotlinx eş yordamları 1.6.0 (I3366d) kullanılacak şekilde güncellendi

Sürüm 1.2.0-alpha04

23 Şubat 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 yayınlanır. 1.2.0-alpha04 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • composable işlevin, kullanmak üzere tasarlanmadığı bir uygulayıcıyı hedefleme olarak adlandırıldığı durumların derleme zamanı raporlanmasına olanak tanıyan ComposableTarget, ComposableTargetMarker ve ComposableOpenTarget özellikleri eklendi.

    Çoğu durumda ek açıklamaları, derleyici eklentisi tarafından çıkarılabilir. Bu nedenle, bu ek açıklamaları doğrudan kullanmak nadir bir durumdur. Özel bir uygulayıcı oluşturma ve kullanma, soyut birleştirilebilir işlevler (arayüz yöntemleri gibi), birleştirilebilir lambda olan alanlar veya global değişkenler (yerel değişkenler ve parametreler çıkarılır) veya ComposeNode ya da ilgili birleştirilebilir işlevler kullanıldığında çıkarım yapılamaz.

    Özel uygulayıcılar için ComposeNode veya ReusableComposeNode çağrısı yapan composable işlevlerin, işlev ve composable lambda parametre türleri için bir CompoableTarget ek açıklaması eklemesi gerekir. Bununla birlikte, ComposableTargetMarker ile ek açıklama eklenen bir ek açıklama oluşturmanız ve daha sonra, doğrudan ComposableTarget yerine işaretlenen ek açıklamanın kullanılması önerilir. ComposableTargetMarker ile işaretlenmiş bir birleştirilebilir ek açıklama, uygulayıcı parametresi olarak özellik sınıfının tam nitelikli adının yer aldığı bir ComposbleTarget ile eşdeğerdir. ComposableTargetMarker kullanımıyla ilgili bir örnek için anroidx.compose.ui.UiComposable bölümüne bakın. (I38f11)

Sürüm 1.2.0-alpha03

9 Şubat 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha03 yayınlanır. 1.2.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Bir birleştirilebilir lambda'yı, durumunu ve ilgili düğümleri çağrıldığı yeni konuma taşıyan bir lambda'ya dönüştüren movableContentOf eklendi. Önceki çağrı besteden ayrıldığında durum geçici olarak korunur ve besteye yeni bir lambda çağrısı girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni bir çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.

    Bir movableContentOf lambda aynı kompozisyonda birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur ve çağrılar kompozisyondan çıkarken ve yeni çağrılar girerken durum, çağrıldıkları sırayla ilk ayrılan çağrılardan giren çağrılara taşınır. Yeni aramalar tarafından hak talebinde bulunulmayan tüm eyaletler kalıcı olarak kaldırılır. (Ib4850)

  • Araçların, composable işlevlerin daha ayrıntılı izlenmesini sağlamak için besteye izleme API'si eklendi. Derleyici artık kaynak bilgileri içeren izleme API'sine çağrılar oluşturur. (Ib0eb5)

    Bu çağrıları ve ilişkili kaynak bilgilerini bir sürüm derlemesinden kaldırmak için aşağıdaki ProGuard kuralını ekleyin:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Araçlara yeniden derleme sırasında bir bileşeni tanımlama olanağı veren InternalComposeScope öğesini ekleyin. (I07a3f)

Sürüm 1.2.0-alpha02

26 Ocak 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 yayınlanır. 1.2.0-alpha02 sürümü bu taahhütleri içerir.

Sürüm 1.2.0-alpha01

12 Ocak 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha01 yayınlandı. 1.2.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Düzen İnceleyici'de değişken kimlikler oluşturmak için CompositionData öğesine identity alanı eklendi. (Ic116e)

Bağımlılık Güncellemeleri

  • Artık Kotlin 1.6.10 sürümüne bağlıdır.

Sürüm 1.1

1.1.1 sürümü

23 Şubat 2022

androidx.compose.runtime:runtime-*:1.1.1 yayınlanır. 1.1.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList adresindeki NullPointerException sorununu düzeltin (aosp/1947059, b/206677462)
  • Android'de panodan okuma yaparken pano içeriğinden kaynaklanan kilitlenme düzeltildi. (I06020, b/197769306)
  • LazyVerticalGrid'te RTL düzeltildi (aosp/1931080, b/207510535)

1.1.0 sürümü

9 Şubat 2022

androidx.compose.runtime:runtime-*:1.1.0 yayınlandı. 1.1.0 sürümü bu taahhütleri içerir.

1.0.0 sürümünden bu yana yapılan önemli değişiklikler

  • Android 12 aşırı kaydırma efekti için kararlı destek
  • Dokunma hedefi boyutlandırmasında iyileştirmeler
  • Compose 1.0 ile ilgili olarak, Materyal bileşenlerinin dokunma hedefi boyutu için Materyal erişilebilirlik yönergelerini karşılamak üzere düzen alanlarını genişleteceğini unutmayın. Örneğin, düğmenin boyutunu daha küçük olacak şekilde ayarlasanız bile düğmenin dokunma hedefi en az 48x48dp boyutuna genişletilir. Bu sayede, Görünümler ve Oluşturma'yı birlikte kullandığınızda tutarlı bir davranış elde edersiniz. Bu değişiklik, kullanıcı arayüzünüzü Compose Material bileşenlerini kullanarak oluşturduğunuzda dokunma hedefi erişilebilirliğiyle ilgili minimum şartların karşılanmasını da sağlar.
  • Gezinme çubuğu için kararlı destek
  • Daha önce deneysel olan bazı API'leri kararlı sürüme geçiriyor
  • Kotlin'in daha yeni sürümleri için destek

Sürüm 1.1.0-rc03

26 Ocak 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 yayınlanır. 1.1.0-rc03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • İçerik Oluşturma'yı 1.1.0-rc03 desteklemek için güncellendi

Sürüm 1.1.0-rc01

15 Aralık 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 yayınlanır. 1.1.0-rc01 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-beta04

1 Aralık 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 yayınlanır. 1.1.0-beta04 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Kotlin 1.6.0 ile uyumlu olacak şekilde güncellendi

Sürüm 1.1.0-beta03

17 Kasım 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 yayınlanır. 1.1.0-beta03 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-beta02

3 Kasım 2021

androidx.compose.runtime:runtime-*:1.1.0-beta02 yayınlanır. 1.1.0-beta02 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Anlık görüntü kodu birden fazla dosyaya bölünmüş olsa da tüm kodlar aynı JVM sınıfında bulunur. (Ic6c98)

Sürüm 1.1.0-beta01

27 Ekim 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 yayınlanır. 1.1.0-beta01 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-alpha06

13 Ekim 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha06 yayınlanır. 1.1.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Modüller arası (I1aa0b) olarak çağrılması gereken InternalCompilerApi, Composer yöntemlerinden kaldırıldı
  • Recomposer.state desteği sonlandırıldı ve türü StateFlow olarak değiştirilmek üzere Recomposer.currentState ile değiştirildi (Ic2ab3, b/197773820)

Sürüm 1.1.0-alpha05

29 Eylül 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 yayınlanır. 1.1.0-alpha05 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-alpha04

15 Eylül 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha04 yayınlanır. 1.1.0-alpha04 sürümü bu taahhütleri içerir.

Sürüm 1.1.0-alpha03

1 Eylül 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha03 yayınlanır. 1.1.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Compose Derleyici artık Compose Çalışma Zamanı'nın eski sürümlerini (1.0) destekliyor. Bu değişiklikten önce, Oluşturma Derleyicisi yalnızca aynı sürüm veya sonraki bir sürümün Oluşturma Çalışma Zamanı ile uyumluydu. Bu değişiklikten sonra Compose Derleyici, Compose Çalışma Zamanı'nın eski bir sürümüyle (1.0) uyumlu hale geldi. (aosp/1796968)
  • 1.1.0-alpha03 derleyicisi, Kotlin 1.5.30'e bağlı olacak şekilde güncellendi. (I74545)

Sürüm 1.1.0-alpha02

18 Ağustos 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 yayınlanır. 1.1.0-alpha02 sürümü bu kaydetmeleri içerir.

Sürüm 1.1.0-alpha01

4 Ağustos 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha01 yayınlanır. 1.1.0-alpha01 sürümü bu taahhütleri içerir.

Sürüm 1.0

Sürüm 1.0.5

3 Kasım 2021

androidx.compose.runtime:runtime-*:1.0.5 yayınlanır. 1.0.5 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • derivedStateOf örneklerini izlemeyle ilgili bir kilitlenme düzeltildi. (aosp/1792247)

Sürüm 1.0.4

13 Ekim 2021

androidx.compose.runtime:runtime-*:1.0.4 yayınlandı. 1.0.4 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

  • Kotlin 1.5.31'e bağlı olacak şekilde güncellendi

Sürüm 1.0.3

29 Eylül 2021

androidx.compose.runtime:runtime-*:1.0.3 yayınlanır. 1.0.3 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

  • Kotlin 1.5.30'e bağlı olacak şekilde güncellendi

Sürüm 1.0.2

1 Eylül 2021

androidx.compose.runtime:runtime-*:1.0.2 yayınlanır. 1.0.2 sürümü bu taahhütleri içerir.

Oluştur 1.0.2 sürümünü desteklemek için güncellendi. Compose 1.0.2, Kotlin 1.5.21 ile uyumludur.

1.0.1 sürümü

4 Ağustos 2021

androidx.compose.runtime:runtime-*:1.0.1 yayınlanır. 1.0.1 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemeleri

  • Kotlin 1.5.21'e bağlı olacak şekilde güncellendi.

Sürüm 1.0.0

28 Temmuz 2021

androidx.compose.runtime:runtime-*:1.0.0 yayınlandı. 1.0.0 sürümü bu taahhütleri içerir.

1.0.0 sürümünün önemli özellikleri

Bu, Compose'un ilk kararlı sürümüdür. Daha fazla bilgi için lütfen resmi Compose Sürüm bloguna göz atın!

Bilinen Sorunlar

  • Android Studio Bumblebee Canary 4 veya AGP 7.1.0-alpha04/7.1.0-alpha05 kullanıyorsanız aşağıdaki kilitlenmeyi görebilirsiniz:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Bu sorunu düzeltmek için build.gradle dosyanızdaki minSdkVersion değerini geçici olarak 24 veya daha yüksek bir değere ayarlayın. Bu sorun, Android Studio Bumblebee ve AGP'nin sonraki sürümünde 7.1 düzeltilecektir. (b/194289155)

Sürüm 1.0.0-rc02

14 Temmuz 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 yayınlanır. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.

  • SnapshotStateObserver'da rastgele NullPointerExceptions'a neden olan yarış koşulları düzeltildi. (aosp/1763445, aosp/1758105, b/192677711)
  • java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied kilitlenmesine neden olan çalışma zamanı anlık görüntüleriyle ilgili sorunlar düzeltildi. (b/193006595, b/192570897)

Sürüm 1.0.0-rc01

1 Temmuz 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 yayınlanır. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.

Sürüm 1.0.0-beta09

16 Haziran 2021

androidx.compose.runtime:runtime-*:1.0.0-beta09 yayınlanır. 1.0.0-beta09 sürümü bu taahhütleri içerir.

Profil Kuralları eklendi

Bu sürüm, aşağıdaki oluşturma modüllerine (I14ed6) profil kuralları ekler:

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.temel
  • 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.metin
  • androidx.compose.ui.metin
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Profil kuralları nedir?

  • Bir kitaplığa ilişkin profil kuralları, src/main veya eşdeğer dizinde bulunan bir metin dosyasında (baseline-prof.txt) belirtilir. Dosyada satır başına bir kural belirtilir. Bu durumda kural, kitaplıktaki yöntemler veya sınıflarla eşleştirme için kullanılan bir kalıptır. Bu kuralların söz dizimi, adb shell profman --dump-classes-and-methods ... kullanılırken kullanılan, okunabilir ART 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 kuralları aşağıdaki kalıba sahiptir:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Sınıf kuralları ise aşağıdaki kalıba sahiptir:

    <CLASS_DESCRIPTOR>
    
  • Burada <FLAGS>, bu yöntemin "Popüler", "Başlangıç" veya "Başlangıç Sonrası" olarak işaretlenip işaretlenmeyeceğini belirtmek için H, S ve P karakterlerinden biri veya daha fazlasıdır.

  • <CLASS_DESCRIPTOR>, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Örneğin, androidx.compose.runtime.SlotTable sınıfının tanımlayıcı değeri Landroidx/compose/runtime/SlotTable; olur.

  • <METHOD_SIGNATURE>, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve döndürülen türlerini içerir. Örneğin, LayoutNode sitesindeki fun isPlaced(): Boolean yöntemi isPlaced()Z imzasına sahiptir.

  • Tek bir kuralın birden fazla yöntemi veya sınıfı kapsayabilmesi için bu kalıplarda joker karakterler (**, * ve ?) bulunabilir.

Kurallar ne işe yarar?

  • H işaretine sahip bir yöntem, bu yöntemin "kullanışlı" bir yöntem olduğunu ve önceden derlenmesi gerektiğini gösterir.

  • S işareti bulunan bir yöntem, başlangıçta çağrılan bir yöntem olduğunu gösterir ve yöntemin başlangıçta derleme ve yorumlama maliyetini önlemek için önceden derlenmesi gerekir.

  • P işaretine sahip bir yöntem, bu yöntemin başlatmadan sonra çağrılan bir yöntem olduğunu gösterir.

  • Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetini önlemek için yığınta önceden ayrılması gerektiğini gösterir.

Nasıl çalışır?

  • Kitaplıklar, AAR yapılarında paketlenecek bu kuralları tanımlayabilir. Bu yapıları içeren bir uygulama oluşturulduğunda, bu kurallar birleştirilir ve birleştirilmiş kurallar, uygulamaya özel kompakt bir ikili ART profili oluşturmak için kullanılır. Daha sonra ART, uygulamanın performansını iyileştirmek amacıyla uygulamanın belirli bir alt kümesini önceden derlemek için, özellikle de ilk çalıştırmada uygulamanın performansını önceden derlemek amacıyla bu profilden yararlanabilir. Bu durumun, hata ayıklama yapılabilir uygulamaları etkilemeyeceğini unutmayın.

Sürüm 1.0.0-beta08

2 Haziran 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 yayınlandı. 1.0.0-beta08 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • State<T> adlı bankanın yeni adı State<out T> (I69049)
  • ControlledComposition Tek bir yeniden oluşturma geçişinde değişiklikleri yeniden oluşturmayı etkinleştirmek için API değişikliği. (Iaafd1, b/184173932)

Sürüm 1.0.0-beta07

18 Mayıs 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 yayınlanır. 1.0.0-beta07 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Derleyici tarafından oluşturulan kaynak bilgilerinin kaynak küçültme işlemi sırasında kaldırılmasına olanak tanıyan yeni derleyici derleme API'leri eklendi. (Ia34e6)
  • Anahtar değiştirildiğinde düğümleri değiştirmek yerine içerikteki düğümleri yeniden kullanmaya çalışan ReusableContent özelliğini kullanıma sundu. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler dışında, içerik için slot tablosundaki önceki değerler yoksayılır.

    ComposeNode için yapıldığı gibi, yayınlanan düğümü değiştirmek yerine yeniden kullanacak ReusableComposeNode özelliğini kullanıma sunar. (I1dd86)

  • @ComposeCompilerApi artık @RequiresOptIn değil (Iab690)

Hata Düzeltmeleri

  • LazyColumn/Row, artık daha önce görünür olan 2 öğeyi, kaydırıldığında bile etkin durumda tutar (yok edilmez). Bu sayede bileşen, kaydırma performansını artıran yeni bir öğe oluşturmamız gerektiğinde etkin alt kompozisyonları yeniden kullanabilir. (Ie5555)

Sürüm 1.0.0-beta06

5 Mayıs 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 yayınlanır. 1.0.0-beta06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • @ComposeCompilerApi artık @RequiresOptIn değil (Iab690)

Sürüm 1.0.0-beta05

21 Nisan 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 yayınlanır. 1.0.0-beta05 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Anlık görüntü okuma ve yazma işlemlerini kaydetmek için@InternalComposeApi kaldırıldı (Id134d)

Hata Düzeltmeleri

  • ui-test-manifest ve ui-tooling-data'daki AndroidManifest dosyaları artık Android 12 ile uyumludur (I6f9de, b/184718994)

Sürüm 1.0.0-beta04

7 Nisan 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 yayınlandı. Sürüm 1.0.0-beta04 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabilirti. Bu değişiklikten sonra hiçbir yerel birleştirilebilir işlev atlanmayacaktır. Bu değişiklik, yerel işlevlerin üst öğeden parametre yakalamasının yaygın ve beklenen bir durum olması ve bu parametrelerin atlanması yaygın bir hata kaynağı olduğu için yapılır.

    Özetlemek gerekirse aşağıdaki örneği inceleyin:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button( onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Bu değişiklikten önce, ShowCount birleştirilebilir işlevi, count parametresi güncellendikten sonra bile her zaman atlanıyordu. Bu durum artık geçerli değil. (I5648a)

  • Giriş parametreleriyle kullanıldığında rememberSaveable() eski değeri geri yüklerken yaşanan sorun düzeltildi (I1b110, b/182403380)

Sürüm 1.0.0-beta03

24 Mart 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 yayınlanır. Sürüm 1.0.0-beta03 bu kaydetmeleri içerir.

API Değişiklikleri

  • DefaultMonotonicFrameClock desteği sonlandırıldı. MonotonicFrameClock olmadan withFrameNanos veya Recomposer.runRecomposeAndApplyChanges çağrısı yaptığınızda artık IllegalStateException hatası alırsınız. (I4eb0d)

Sürüm 1.0.0-beta02

10 Mart 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 yayınlanır. Sürüm 1.0.0-beta02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımıyla ilgili kısıtlamaları zorunlu kılma (I6aa29, b/174531520)
  • navigation-compose hedefinin içinde kullanıldığında bozuk rememberSaveable { mutableStateOf(0) } sorunu düzeltildi. (I1312b, b/180042685, b/180701630)

Sürüm 1.0.0-beta01

24 Şubat 2021

androidx.compose.runtime:runtime-*:1.0.0-beta01 yayınlanır. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.

Bu, Compose 1.0.0 Beta'nın ilk sürümüdür.

API Değişiklikleri

  • Geçersiz kılınan besteleri ana sistem döngüsünden yeniden oluşturmak için Recomposer.runRecomposeConcurrentlyAndApplyChanges deneysel API'yi ekleyin. (I342d0)
  • @ReadOnlyComposable ile işaretlenen tüm derlenebilirler artık yalnızca diğer @ReadOnlyComposable'lara çağrı gönderdiklerinden emin olmak için derleme zamanında doğrulanmaktadır (I58961)
  • compositionLocalOf ve staticCompositionLocalOf için defaultFactory artık isteğe bağlı değil zorunludur.

    Bu değişiklik, varsayılan fabrika sağlanmayan, boş olmayan türler için olası bir tür hatasını ortadan kaldırır. Daha önce bu, boş olmayan bir tür için null referansı sağlıyordu.

    Boş bırakılabilir türler için varsayılan fabrika olarak { null } değerini sağlayabilirsiniz.

    Mantıklı bir varsayılan değer sağlanamazsa yerel değişkenleri, null olmayan türlerle kullanmanızı önermeyiz. Makul bir varsayılan değer yoksa defaultFactory lambda işlevi bir istisna atmalıdır. Ancak istisna atma, yerel kullanıcıların, tür sistemi tarafından zorunlu kılınmadığı sürece sağlanmasına dair gizli bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)

  • Desteği sonlandırılan semboller, oluşturma çalışma zamanından kaldırıldı (I3252c)

  • Desteği sonlandırılan emptyContent() kaldırıldı. Bunun yerine {} politikasını kullanın. (Idb33f, b/179432510)

  • Sağlayıcılar, CompositionLocalProvider olarak yeniden adlandırıldı

    • Composition kurucusu artık anahtar parametresi kabul etmiyor ve desteği sonlandırıldı.
    • currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey bir özelliğe dönüştürülmüştür.
    • CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
    • ComposableLambda, somut sınıf yerine bir arayüz haline getirildi ve artık tür parametreleri içermiyor.
    • ComposableLambdaN, somut sınıf yerine bir arayüz haline getirildi ve artık tür parametreleri içermiyor.
    • snapshotFlow işlevi, androidx.compose.runtime ad alanına taşındı
    • SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değil
    • @TestOnly üst düzey clearRoots işlevi kaldırıldı. Artık gerekli değildir.
    • keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
    • Composer.collectKeySourceInformation kaldırıldı. Artık gerekli değil.
    • isJoinedKey, joinedKeyLeft ve joinedKeyRight yöntemleri kaldırıldı. Bunlar artık gerekli değildir.
    • Çeşitli üst düzey API'ler taşındı ve farklı dosyalarda yeniden düzenlendi. Kotlin'in dosya sınıfı semantikleri nedeniyle bu durum ikili uyumluluğu bozar ancak kaynak uyumluluğunu bozmaz. Bu nedenle çoğu kullanıcı için sorun oluşturmaz.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver artık deneysel değil (Id2e6a)

  • Daha önce desteği sonlandırılan bazı API'ler silindi (Ice5da, b/178633932)

  • Aşağıdaki Material API değişiklikleri yapıldı:

    • Varsayılan dolguyu özelleştirmeye izin vermek için Top/BottomAppBar'a contentPadding parametresi eklendi.
    • Gerekli parametrelerin isteğe bağlı parametrelerden önce gelmesine ilişkin API yönergelerine uymak için BackdropScaffold'daki parametreler yeniden düzenlendi.
    • BottomNavigationItem'deki icon parametresi, selected ve onClick'den sonra olacak şekilde taşındı.
    • BottomGezinmeÖğesi'ndeki alwaysShowLabels parametresi alwaysShowLabel olarak yeniden adlandırıldı.
    • Birkaç bileşendeki bodyContent parametre yalnızca content olarak yeniden adlandırıldı.
    • ButtonDefaults.buttonColors() içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediğinden bu durumun kodunuzda hata oluşturmayacağını lütfen unutmayın. Lütfen adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde kodunuz daha önce olduğu gibi çalışmaz.
    • darkColors() öğesine secondaryVariant parametresi eklendi. Bu renk genellikle koyu temadaki secondary ile aynıdır ancak tutarlılık ve daha fazla özelleştirme için eklenir.
    • Yaygın olarak kullanılmadığı / faydalı olmadığı için ElevationDefaults veAnimationElevation() öğelerini herkese açık API yüzeyinden kaldırdık.
    • Slider içindeki onValueChangeEnd, onValueChangeFinished olarak yeniden adlandırıldı ve null değerini kabul edecek şekilde değiştirildi.
    • Tutarlılık için Snackbar'daki text parametresi content olarak yeniden adlandırıldı.
    • Varsayılan dolguyu özelleştirmeye izin vermek için DropdownMenuItem parametresi DropdownMenuItem'a eklendi ve content, RowScope'ın bir uzantısı haline getirildi.contentPadding
    • ModalDrawerLayout, ModalDrawer olarak yeniden adlandırıldı.
    • BottomDrawerLayout, BottomDrawer olarak yeniden adlandırıldı.
    • (I1cc66)

Sürüm 1.0.0-alpha12

10 Şubat 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha12 yayınlandı. 1.0.0-alpha12 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • UiApplier'dan ViewGroups desteği kaldırıldı. Desteği sonlandırılan emitView bileşenleri kaldırıldı. (Ifb214)
  • CompositionReference, CompositionContext olarak yeniden adlandırıldı (I53fcb)
  • ComponentActivity.setContent, androidx.activity:activity-compose modülündeki androidx.activity.compose.setContent yöntemine taşındı. (Icf416)
  • Snapshot API, API yönergesiyle daha tutarlı olacak ve dahili uygulama sınıflarını herkese açık API'den gizleyecek şekilde güncellendi. (Id9e32)
  • Ambients, Ambient -> CompositionLocal adıyla eşleşecek şekilde yeniden adlandırıldı. Ambients eskiden AmbientFoo olarak adlandırılıyordu. Artık CompositionLocals, LocalFoo olarak adlandırılıyor. (I2d55d)
  • Ambient, sırasıyla CompositionLocal ve ambientOf / staticAmbientOf olarak besteLocalOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacının daha net anlaşılmasına yardımcı olur: bir kompozisyona yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinin başında Local öneki bulunmalıdır (ör. val LocalFoo = componentLocalOf { Foo() }). (Ia55b6)
  • receiveMutableSnapshot ve takeSnapshot, Snapshot'ın tamamlayıcı yöntemleri haline geldi. (I91f19)
  • @ComposableContract desteği sonlandırıldı ve daha ayrıntılı üç ek açıklama kullanıma sunuldu.

    @ComposableContract(restartable = false), @NonRestartableComposable oldu @ComposableContract(readonly = true), @ReadOnlyComposable oldu @ComposableContract(preventCapture = true), @DisallowComposableCalls oldu @ComposableContract(tracked = true) kaldırıldı. (I60a9d)

  • Artık performans üzerinde olumlu bir etkisi veya değeri olmadığından emptyContent() ve (@Composable () -> Unit).orEmpty() yardımcı programlarının desteği sonlandırıldı (I0484d)

  • snapshotFlow ve withMutableSnapshot artık deneysel değil (I6a45f)

  • Recomposer'lar artık kapatılabilir. Kapalı yeniden derleyiciler, derleme alt coroutine'leri tamamlanana kadar yeniden derlemeye devam eder. Recomposer.shutDown, kapatmayla kontrast olarak iptal edilecek şekilde yeniden adlandırıldı. (Ib6d76)

  • compose:runtime-dispatch yapısının desteği sonlandırıldı. MonotonicFrameClock artık compose:runtime, AndroidUiDispatcher ise compose:ui altında bulunabilir. (Ib5c36)

  • Compose derleyici eklentisinin hedeflediği API, somut sınıf yerine arayüz kullanacak şekilde yeniden yapılandırıldı. Arayüzde artık tür parametresi de kullanılmamaktadır.

    Bu, kaynak kod uyumluluğunu etkilemeyecek ancak ikili programda uyumsuzluk oluşturan dahili bir değişikliktir. (I3b922, b/169406779)

  • SnapshotMutableState kullanıma sunuldu (Icfd03)

  • DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (Ica7c6)

  • Recomposer.current() kaldırıldı. [Soyut]ComposeView artık varsayılan olarak pencere için ViewTreeLifecycleOwner tarafından yönetilen, yavaşça oluşturulan, pencere kapsamlı Recomposer'ları kullanır. Ana makine yaşam döngüsü durdurulduğunda yeniden oluşturma ve withFrameNanos tabanlı animasyon tikleri duraklatılır. (I38e11)

  • Recomposer.runningRecomposers artık işlemdeki devam eden derleme durumunu gözlemlemek için salt okunur RecomposerInfo'dan oluşan bir global StateFlow sunuyor. Artık desteği sonlandırılmış olan Recomposer.current() yerine bu API'yi tercih edin. (If8ebe)

  • DisposableEffectDisposable, DisposaleEffectResult olarak yeniden adlandırıldı (I3ea68)

Sürüm 1.0.0-alpha11

28 Ocak 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 yayınlanır. 1.0.0-alpha11 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • onCommit, onDispose ve onActive için desteği sonlandırıldı. Bunun yerine SideEffect ve DisposableEffect API'leri kullanılmalıdır (If760e)
  • emit() API'si ve tüm aşırı yüklemeler desteği sonlandırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır, yalnızca Compose (I4137b) adlandırma kurallarına uymak için farklı bir ada sahiptir.
  • inverification ve besteReference() öğelerini kullanımdan kaldırarak bunların yerine sırasıyla currentRecomposeScope ve bulmaCompositionReference desteği sonlandırıldı. (I583a8)
  • RememberObserver, CompositionLifecycleObserver'ın yerini aldı ve CompositionLifecycleObserver'ın desteği sonlandırıldı.

    RememberObserver, değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemlerle CompositionLifecycleObserver'in yerini alır. Yalnızca bir kez hatırlanan nesneler için yeni API'ye mekanik olarak geçiş yapılabilir. Bu nesneler, önerilen uygulamadır ve öyle olmaya da devam etmektedir. Ancak bir referans bir bileşimde birden fazla kez hatırlandıysa onEnter yalnızca bir kez çağrılırken her referans için onRemembered çağrılır. Nesne WithConstraints ve Scaffold gibi alt kompozisyonlarda kullanıldıysa onEnter birden çok kez çağrıldı. Bu da tek onEnter çağrı garantisini güvenilir olmaktan çıkardı ve RememberObserver için kaldırıldı.

    RememberObserver, RememberObserver örneği remember'ye iletilen geri çağırma işlevinden döndürülürse ancak derleme durumunda hatırlanmadıysa ve bu nedenle hiçbir zaman onRemembered çağrılmamışsa çağrılan onAbandoned'yi ekler. Bu durum, bir istisnanın besteyi tamamlamadan sonlandırılması veya bestenin üretildiği durum nedeniyle bestenin silinmesi durumunda artık güncel olmaması veya başka bir konuya artık ihtiyaç duyulmaması halinde bu durum meydana gelebilir. Yukarıdaki tek referans önerisini izleyen RememberObserver örneği harici bir kaynağı izliyorsa hem onForgotten hem de onAbandoned, kaynağın artık gerekli olmadığını gösterir. Nesne, başlatılan işi veya onRemembered içinde ayrılan kaynakları izliyorsa onRemembered çağrıldığında onAbandoned çağrılmayacağı için 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 öğesine taşındı. (I9420b, b/173387208)
  • Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)

Sürüm 1.0.0-alpha10

13 Ocak 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 yayınlanır. 1.0.0-alpha10 sürümü bu kaydetmeleri içerir.

Zararlı Değişiklik

  • Dahili derleyici API'sinin yeniden yapılandırılması, tüm @Composable işlevleri tamamlandıktan sonra, derleme sonucunda oluşturulan düğümlerde yapılan değişikliklerin derlemenin "değişiklikleri uygula" aşamasında toplu olarak yapılmasına olanak tanır.

    Bu, davranışta önemli bir değişikliktir. Nod'lar artık değişiklikler uygulanana kadar dahili ve deneysel API'lerden kullanılamayacağından uygulama kodunu etkileyebilir. Bu işlem genellikle, kodun yürütülmesini, düğümler oluşturulup başlatılana kadar ertelemek için kodun bir SideEffect composable içinde bu tür bağımlılıklarla çevrelenmesiyle çözülebilir. (I018da)

API Değişiklikleri

  • Düzenleyicinin değişiklikleri uygulayıp uygulamadığını izlemek için bir yöntem eklendi. (I1b3e2)
  • [Abstract]ComposeView API'lerini, oluşturma tabanlı görünümlerin geri dönüştürülmesine izin verecek şekilde genişletin. Bu API'ler, daha sonra yeniden oluşturmak için kompozisyonlarını kaldırır. Alt kompozisyon oluşturmak için pencere kapsamlı Recomposer'ları ve CompositionReference'ları yükleyip keşfetmek üzere API'ler ekleyin.

    [Abstract]ComposeViews bileşeninin bertaraf stratejisini yapılandırmak için ViewCompositionStrategy ekleyin. Varsayılan davranış, pencerenin ayrılması durumunda bertaraf etmektir. (I860ab)

Hata Düzeltmeleri

  • Yeniden derleyici artık mevcut durumunun akışını gösterir. Bu sayede, etkinliğini ve ilişkili efektlerin etkinliğini izleyebilirsiniz. (Ifb2b9)
  • Yerel keyEvent'e artık keyEvent.nativeKeyEvent (I87c57, b/173086397) üzerinden erişilebilir.

Sürüm 1.0.0-alpha09

16 Aralık 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 yayınlanır. Sürüm 1.0.0-alpha09 bu kaydetmeleri içerir.

API Değişiklikleri

  • SlotTable, SlotReader ve SlotWriter, herkese açık API'den kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretlenmişti. Artık bu özellikler, oluşturma modülüne dahil edildi.

    CompositionData ve CompositionGroup, kompozisyon bilgilerini ayıklamak için kullanılacak ui-tooling API'nin yerine eklendi. Bunlar herkese açıktır ancak ui-tooling API'nin yorumladığı ham bilgileri sağladıkları için ui-tooling API dışında kullanılmak üzere tasarlanmamıştır (I31a9c)

  • Applier sınıfı artık (Id85b0) olarak kabul edilmez

  • Applier arayüzü, ağaç oluşturmayı yukarıdan aşağıya yerine aşağıdan yukarıya doğru basitleştirmek için değiştirildi.

    insert() yöntemi insertTopDown() olarak yeniden adlandırıldı.

    Yeni bir yöntem (insertBottomUp()) eklendi.

    Uygulayıcı, daha iyi performans gösterene bağlı olarak insertTopDown() veya insertBottomUp() kullanarak düzenlediği ağaca düğüm ekler.

    LayoutNode ve View gibi bazı ağaçların alttan yukarıya doğru oluşturulması, yukarıdan aşağıya doğru oluşturulmasından çok daha verimlidir. Bu değişiklikten önce, aşağıdan yukarıya doğru uygulamak için bir dizi ekleme gerekliydi. Bu eklemelerin, performans için aşağıdan yukarıya doğru oluşturma işlemi gerektiren her uygulayıcıya kopyalanması gerekiyordu. Bu değişiklikle birlikte, Applier, ağacı aşağıdan yukarı doğru oluşturmak için insertBottomUp()'ü, ağacı yukarıdan aşağı doğru oluşturmak için ise insertTopDown()'yi geçersiz kılar. (Icbdc2)

  • Compose, birleştirilebilir çağrılar yapabilen mülk alıcıları destekler. Bu özellik için destek sonlandırılmıyor ancak mülk alıcısını @Composable olarak beyan etme söz dizimi değişiyor.

    Bunu yapmak için artık desteklenmeyen söz dizimi, mülkün kendisini ek açıklamayla belirtmektir:

        @Composable val someProperty: Int get() = ...
    

    Bunu yapmak için artık doğru söz dizimi, mülkün alıcısını ek açıklamayla belirtmektir:

       val someProperty: Int @Composable get() = ...
    

    Her iki söz dizimi de bir süre boyunca çalışacak ancak kullanımdan kaldırılan eski söz dizimi sonunda derleme hatası oluşturacaktır. (Id9197)

Hata Düzeltmeleri

  • AndroidOwner tarafından dahili hale getirildi (Ibcad0, b/170296980)
  • subcomposeInto(LayoutNode) işlevi dahili hale getirildi (Id724a)

Sürüm 1.0.0-alpha08

2 Aralık 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 yayınlanır. 1.0.0-alpha08 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Compose yönergeleriyle tutarlılığı kontrol etmek için birleştirilebilir lambda parametre adlandırma ve konumu için lint denetimi eklendi. Ayrıca, son lambda adları olarak children kullanan bazı API'ler, lint kontrolüne ve yönlendirmeye göre content olarak taşındı. (Iec48e)
  • Recomposer artık EmbeddingContext'i kabul etmez; gerekli planlama bağımlılıkları effectCoroutineContext'ten alınır. FrameManager desteği sonlandırıldı. Platform entegrasyonlarının kendi genel anlık görüntü işlemelerini başlatması gerekir. (I02369)
  • RestorableStateHolder.withRestorableState işlevi RestorableStateProvider (I66640) olarak yeniden adlandırıldı.

Hata Düzeltmeleri

  • Son eklerinde Ambient bulunan Ambient'ler kullanımdan kaldırıldı ve diğer Ambient'ler ile Compose API yönergelerine uygun olarak Ambient ön ekiyle yeni mülklerle değiştirildi. (I33440)
  • Eski kullanıcı arayüzü testi modülünü ve uçlarını (I3a7cb) kaldırın

Sürüm 1.0.0-alpha07

11 Kasım 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 yayınlanır. 1.0.0-alpha07 sürümü bu taahhütleri içerir.

Yeni Özellikler

API Değişiklikleri

  • @UnionType ek açıklaması kullanımdan kaldırıldı (I57cde)
  • provideDefault, ambiyans sağlamak için provide değerine alternatif olarak eklenmiştir ve yalnızca önceden sağlanmış bir ambiyans değeri olmadığında ayarlanacak ambiyans değerlerini belirtmek için kullanılabilir. (Id6635, b/171024925)
  • LaunchedTask, SideEffect ve DisposableEffect API'leriyle tutarlılık sağlamak amacıyla LaunchedEffect olarak yeniden adlandırıldı. En iyi uygulamaları teşvik etmek amacıyla, konu parametresi olmayan LaunchedEffect'e izin verilmez. (Ifd3d4)
  • Uygulayıcı, artık bir Oluşturucu ağaca değişiklik uygulamaya başladığında/bitirdiğinde çağrılan onBeginChanges/onEndChanges geri çağırma işlevlerine sahiptir. Gerekirse bu kaynaklar, kaynak yönetimi için toplu olarak kullanılabilir. (Icf476)
  • Recomposer artık oluşturulurken CoroutineContext gerektiriyor (Ic4610)
  • Herkese açık API'yi etkilemeyecek olan dahili SlotTable uygulamasında yapılan değişiklikler. (If9828)
  • İlk değeri almayan, desteği sonlandırılmış rxjava2 bağdaştırıcılar kaldırıldı (Idb72f)

Hata Düzeltmeleri

  • foundation.Text desteği sonlandırıldı ve material.Text ile değiştirildi. Temadan değer kullanmayan temel ve işlemsiz metin API'leri için androidx.compose.foundation.BasicText adresini ziyaret edin. (If64cb)
  • BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField alanını kullanın. (I896eb)
  • Düzenle ilgili çeşitli semboller androidx.compose.ui'den androidx.compose.layout.ui'ye taşındı. (I0fa98, b/170475424)

Harici Katkı

  • Oluşturma için runtime-rxjava3 modülü eklendi. runtime-rxjava2'e benzer (I02cbf)

Sürüm 1.0.0-alpha06

28 Ekim 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha06 yayınlanır. 1.0.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Recomposer artık bir CompositionReference ve geçerli bir kompozisyon üst öğesidir. Explicit Recomposer artık daha az yerde gerekli. (I4036f)
  • SideEffect'e DisposableEffect karşı API'si eklendi. Bu API, onCommit-with-params rolünü zorunlu bir onDispose ile doldurur.
    • Yeniden derlemedeki verileri DisposableEffects veya LaunchedTasks gibi devam eden ya da uzun ömürlü süreçlere yayınlamak için rememberUpdatedState API eklendi.
    • (Id50b9)
  • MutableVector artık RandomAccess'i (I85d73, b/170461551) uygular
  • Bileşimin yan etkilerini, bileşim tarafından yönetilen nesnelere uygulamak için SideEffect kompozit bileşeni eklendi. SideEffect'in amacı, onCommit composit'inin yerini almasıdır. (Ia77c2)
  • Yeni deneysel API RestorableStateHolder. Bu yöntem, bir sonraki sefer geri yüklenen durumla yeniden derlemeyi mümkün kılmak için alt ağaç için [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumu, ağacı kaldırmadan önce kaydetmenize olanak tanır. (I66884, b/166586419)

Hata Düzeltmeleri

  • ComposeTestRule'da geçişleri etkinleştirin; ComposeTestRule'dan yanıp sönen imleci etkinleştirme seçeneğini kaldırın. (If0de3)

Sürüm 1.0.0-alpha05

14 Ekim 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 yayınlanır. 1.0.0-alpha05 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Deneysel Modifier.pointerInput, giriş değiştiriciyi askıya alıyor (Ia77d2)
  • Her kaydırma işleminde alt kompozisyonda daha az işlem yapılarak LazyColumn/Row'un kaydırma performansı iyileştirildi. Composition sınıfı için yeni hasInvalidations() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi, hasInvalidations() olarak yeniden adlandırıldı (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Zaman içinde tek bir State<T> değerini güncelleyen besteden eş yordamlar başlatmak için generateState API'yi ekleyin (Id4a57)
  • launchInComposition, Compose API yönergeleriyle eşleşecek şekilde LaunchedTask olarak yeniden adlandırıldı (I99a8e)
  • Özel Layout'lardaki Place() çağrılarının sırası artık alt öğeler için çizim sırasını (Ibc9f6) tanımlar.

Sürüm 1.0.0-alpha04

1 Ekim 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 yayınlandı. 1.0.0-alpha04 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Artık geçerli olmayan düzen ve çizim gözlem kapsamlarının toplanmasına izin vermek için OwnerScope eklendi. (Ic4cf8)
  • Diğer durum nesnelerini okuyabilen (ve bunlardan türetebilen) bir hesaplamaya dayalı durum nesneleri oluşturmak için derivedStateOf API eklendi (If758b)
  • SnapshotStateObserver için TestOnly API eklendi (I6e2a9)

Hata Düzeltmeleri

  • foundation.Box desteği sonlandırıldı. Bunun yerine lütfen foundation.layout.Box öğesini kullanın. (Ie5950, b/167680279)

Sürüm 1.0.0-alpha03

16 Eylül 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 yayınlanır. 1.0.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • CompositionCoroutineScope artık MonotonicFrameClock'i uygulamıyor. withFrameNanos'yi çağıranlar, üst düzey işlevi açıkça içe aktarmalıdır. (Icb642, b/166778123)

Hata Düzeltmeleri

  • onNode veya waitForIdle gibi genel test işlevleri kullanımdan kaldırıldı. Lütfen ComposeTestRule'da (I7f45a) tanımlanan yeni eşdeğerlerine geçiş yapın
  • launchInComposition artık eş yordamları dağıtılmadan başlatmıyor (Ief6af, b/166486000)

Sürüm 1.0.0-alpha02

2 Eylül 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha02 yayınlanır. 1.0.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Snapshot veri değişikliklerini kullanmak ve oluşturmak için snapshotFlow ve withMutableSnapshot API'lerini ekleyin. (I3e722)
  • Birleştirilebilir işlevler için çağrı kuralı değişti. Bu, ikili kodda yapılan ve uyumsuzluk yaratan bir değişikliktir. Tüm kitaplıklar, oluşturma derleyici eklentisinin bu sürümüyle çalışacak şekilde yeniden derlenmelidir.

    Yalnızca açık bir şekilde etkinleştirilen derleyici API'leri değiştiği için bu değişiklik kaynak düzeyinde önemli bir değişiklik oluşturmaz. (I7afd2, b/158123185)

  • EmbeddingContext'ten (I7b9be) planlama yöntemleri kaldırıldı

  • onPreCommit işlevinin desteği sonlandırıldı. onCommit işlevi artık onPreCommit işlevinin davranışını sergiliyor.

    onCommit ve onActive artık bir sonraki koreograf çerçevesinin başında değil, kompozisyon değişikliklerinin yapıldığı koreograf çerçevesinde çalışır. (I70403)

Sürüm 1.0.0-alpha01

26 Ağustos 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 yayınlanır. 1.0.0-alpha01 sürümü bu taahhütleri içerir.

Sürüm 0.1.0-dev

Sürüm 0.1.0-dev17

19 Ağustos 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 yayınlanır. 0.1.0-dev17 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Özel emisyonlar, artık bir veya daha fazla seter'ın atlanabileceğini ve emisyonlardan bağımsız olarak yeniden düzenlenebileceğini bildirebiliyor. (Ibbd13)
  • Desteği sonlandırılan FrameManager çağrıları kaldırıldı.

    Dahili yazma API'leri, mutableStateof() (I80ba6) gibi durum nesnelerini izlemek için gereken ek yükü azaltacak şekilde değiştirildi

  • state { ... } composable, artık daha net bir ifadeyle remember { mutableStateOf(...) } öğesine yapılan açık çağrılar için kullanımdan kaldırıldı. Bu, genel API yüzeyini ve durum yönetimiyle ilgili kavram sayısını azaltır ve sınıf mülkü yetkilendirmesi için by mutableStateOf() kalıbıyla eşleşir. (Ia5727)

  • Flow.collectAsState artık varsayılan olarak Dispatchers.Main değerini kullanmak yerine varsayılan dağıtıcıyı bileşimin kendisinden belirler. (I9c1d9)

  • for döngüsü içinde durumu kaydeden bir şey kullanıldığında oluşan kilitlenme düzeltildi. Artık savedInstanceState() içinde aynı anahtara izin veriliyor. UiSavedStateRegistry'nin API'si bu yeni şarta göre ayarlandı (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

Hata Düzeltmeleri

  • emitView desteği sonlandırıldı. Compose içinde Görünümler yayınlamak için mümkünse AndroidView kullanın. Bu işlemlerin AndroidView kullanılarak yapılabildiği durumlarda, beste ağacında bırakılmadığı sürece Görünümler ve ViewGroups oluşturma işlemlerinin doğrudan desteklenmeyeceğini unutmayın. (I29b1e, b/163871221)

Sürüm 0.1.0-dev16

5 Ağustos 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 yayınlandı. 0.1.0-dev16 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • mutableStateOf(), ambientOf() ve savedInstanceStateOf() için varsayılan mutasyon politikası referentialEqualityPolicy() yerine structuralEqualityPolicy() olarak değiştirildi.

    Bir mutableStateOf() örneğine atanan yeni değerin değişiklik olarak kabul edilip edilmeyeceğine karar verme işleminin varsayılan değeri artık === yerine == olarak değiştirildi.

    https://kotlinlang.org/docs/reference/equality.html adresine bakın.

    ambientOf() ve savedInstanceStateOf(), uygulamalarında mutableStateOf() kullandığı için mutableStateOf() ile tutarlı olacak şekilde değiştirildi.

    Yapısal eşitlik kullanmak, geliştirici beklentilerine daha uygundur.

    Örneğin,

    val state = mutableStateOf(1f)
    

    ardından,

    state.value = 1f
    

    artık state'te bir değişiklik olarak değerlendirilmeyecek ve beste sırasında state'ün kullanımlarının yeniden bestelenmesi gerekmeyecek.

    Bu, önemli bir değişikliktir ancak çoğu durumda (equals()'yi geçersiz kılmayan sınıflar kullanıldığında) uygulama üzerinde fark edilebilir bir etkisi olmaz.

    data sınıfları gibi equals()'ü geçersiz kılan sınıflarda, equals() yöntemleri artık varsayılan olarak bir mutableStateOf()'ye atandığında çağrıldığı için performansta düşüş görülebilir.

    Önceki davranış, mutableStateOf(), ambientOf() ve savedInstanceStateOf() çağrılarına policy = referentialEqualityPolicy() politika parametresi ekleyerek geri yüklenebilir. (Ic21a7)

  • Row ve Column artık satır içi işlev olduğundan bunların kullanılmasıyla ilgili ek maliyet önemli ölçüde azaltıldı. (I75c10)

Hata Düzeltmeleri

  • setViewContent kullanımdan kaldırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
  • Yeni coroutine tabanlı saatler ile hâlâ eski geri çağırma tabanlı saatleri kullanan API'ler arasındaki boşluğu doldurmak için MonotonicFrameClock'u AnimationClockObservable olarak kullanmanıza olanak tanıyan MonotonicFrameAnimationClock eklendi.

    ManualAnimationClock'ın MonotonicFrameClock eşdeğeri artık ManualFrameClock. (I111c7, b/161247083)

  • Modifier.stateDraggable tamamen yeniden çalışıldı ve Modifier.swipeable olarak yeniden adlandırıldı. Yeni bir SwipeableState sınıfı kullanıma sunuldu ve DrawerState ile BottomDrawerState, bu sınıftan devralınacak şekilde yeniden yapılandırıldı. [Modal/Bottom]DrawerLayout artık onStateChange parametresi almamaktadır. (I72332, b/148023068)

  • Modifier.plus desteği sonlandırıldı. Bunun yerine Modifier.then işlevini kullanın. "Sonra", sıralama konusunda daha güçlü bir sinyal verir. Ayrıca Modifier.padding().background() + anotherModifier yazmayı yasaklar. Bu da zinciri bozar ve metnin okunmasını zorlaştırır (Iedd58, b/161529964)

  • SubcomposeLayout eklenir. Bu, ancak daha sonra alt ağaç bileşimi ölçümü sırasında kullanılabilir olan bazı değerleri kullanmak istersek, ölçüm sırasında alt öğelerin oluşturulmasına olanak tanıyan alt düzey bir temel öğedir. Örneğin, WithConstraints, SubcomposeLayout kullanılarak uygulanmaz. (I25cc8)

  • Material FilledTextField, TextField olarak yeniden adlandırıldı ve temel TextField, istenen en basit API'nin kolayca keşfedilmesi ve kullanılması için BaseTextField olarak yeniden adlandırıldı (Ia6242, b/155482676)

  • Değiştirici.drawbackground, Değiştirici.background (I13677) olarak yeniden adlandırıldı

Sürüm 0.1.0-dev15

22 Temmuz 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 yayınlanır. 0.1.0-dev15 sürümü bu taahhütleri içerir.

Bağımlılık Güncellemesi

  • Compose'un 0.1.0-dev15 sürümünü kullanmak için bağımlılıklarınızı yukarıdaki 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 kullanımdan kaldırma kararı, titizlikle konuştuktan sonra alındı.

    Gerekçe

    Gerekçe aşağıdakileri kapsar ancak bunlarla sınırlı değildir:

    • API'nin kapsamını ve öğretmemiz gereken kavramları azaltır
    • Diğer benzer araç setleriyle (Swift UI, React, Flutter) daha uyumlu
    • Geri alınabilir karar. @Model adlı kullanıcıyı daha sonra istediğiniz zaman geri getirebiliriz.
    • Köşede kullanım kullanımını ve @Model hizmetini yürütmemiz gereken şeyler olarak yapılandırmayla ilgili cevaplanması zor soruları ortadan kaldırır
    • @Model veri sınıfı, eşittir, karma kodu vb.
    • Bazı mülkleri nasıl "gözlemledim" olarak işaretleyebilirim?
    • Gözlemde kullanılacak yapısal ve referans eşitliği nasıl belirtebilirim?
    • Sistemdeki "sihir"i azaltır. Sistemin olduğundan daha akıllı olduğunu varsayma (yani listeyi nasıl farklılaştıracağını bildiği) düşünme ihtimalini azaltır
    • Gözlem ayrıntı düzeyini daha sezgisel hale getirir.
    • Değişkenden sınıfta mülk olarak yeniden yapılandırılabilirliği iyileştirir
    • Eyalete özel manuel optimizasyonlar yapma olanağı sunar.
    • Ekosistemin geri kalanıyla daha uyumlu hale gelir ve "değişebilir durumu benimsediğimiz" veya "değişmez duruma bağlı olduğumuz" konusundaki belirsizliği azaltır.

    Taşıma Notları

    @Model ürününün mevcut kullanımlarının neredeyse tamamı, iki yöntemden biriyle oldukça sıra dışı bir şekilde dönüştürülür. Aşağıdaki örnekte, yalnızca örnek olması amacıyla iki özelliğe sahip bir @Model sınıfı ve bu sınıfın bir bileşimde kullanıldığı gösterilmektedir.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
        p.x = it }
        p.y = it }
     )
    }
    

    1. Alternatif: State<OriginalClass> simgesini kullanın ve kopyalar oluşturun.

    Bu yaklaşım, Kotlin'in veri sınıfları ile kolaylaştırıldı. Esasen, önceki tüm var mülklerini bir veri sınıfının val mülkleri haline getirin, ardından remember yerine state kullanın ve copy(...) veri sınıfı kolaylık yöntemini kullanarak orijinal öğenin klonlanmış kopyalarına durum değerini atayın.

    Bu yaklaşımın yalnızca söz konusu sınıfta yapılan tek mutasyonlar State örneğinin oluşturulduğu kapsamda yapıldığında işe yarayacağını unutmayın. Sınıf, kullanım kapsamının dışında kendi içinde mutasyon geçiriyorsa ve bu gözleme güveniyorsanız kullanmanız gereken yaklaşımı aşağıda bulabilirsiniz.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
        p = p.copy(x=it) }
        p = p.copy(y=it) }
     )
    }
    

    2. Alternatif: mutableStateOf ve mülk temsilcilerini kullanma

    Bu yaklaşım, Kotlin'in mülk temsilcileri ve kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanıyan mutableStateOf API ile kolaylaştırılır. Özetle, orijinal sınıfın tüm var mülklerinin mülkü temsilcisi olarak mutableStateOf içeren var mülkleriyle değiştirilmesi gerekir. Bu yöntemin avantajı, sınıfın kullanımının hiç değişmemesi, yalnızca dahili uygulamanın değişmesidir. Ancak her mülk artık ayrı ayrı gözlemlendiği/abone edildiği için davranış, orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenlemeden sonra gördüğünüz yeniden oluşturma işlemleri daha dar olabilir (iyi bir şey).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
        p.x = it }
        p.y = it }
     )
    }
    

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)

  • Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce derleyici, çağrıları birleştirilebilir işlevlere dönüştürüyordu. Bu değişiklikle birlikte, artık bir derlenebilir işlevin gövdesini dönüştürüyor ve çağrı yerini (çoğunlukla) değiştirmeden bırakıyoruz.

    Bu, derleme çalışma zamanı ile iletişim kuran mantığın çoğunun çağrı yerinde değil, işlev gövdesinin başında gerçekleştiği anlamına gelir.

    Bu, oluşturma işlevinin tüm kullanımları için kaynak uyumlu bir değişikliktir. Oluşturma özelliğini kullanan çoğu kullanıcının bu değişiklik nedeniyle herhangi bir kod güncellemesi yapması gerekmez.

    Bu çalışmayı desteklemek için tüm birleştirilebilir işlevlerin JVM imzası değiştirildi. Tek bir parametre kabul eden bir Composable işlevi, 3 parametre kabul eden bir işleve dönüştürülür. Ek parametreler, Composer, "anahtar" tam sayı ve meta verileri çağrılar aracılığıyla yaymak için kullanılan bit maskesi tam sayısıdır.

    Oluşturma işlevi artık varsayılan bağımsız değişkenleri de birleştirilebilir bir işleve dönüştürüyor. Bunu, işlevin kendisine varsayılan olarak fazladan bir yapay varsayılan aşırı yükleme getirmeden gerçekleştirir. Dolayısıyla bu değişiklik, daha az işlevin tanımlanmasına neden olur.

    Bu durumdan kaynaklanan bilinen bilinçli davranış değişiklikleri:

    1. Bazı aramalar, daha önce atlanmadıkları halde atlanır.
    2. Varsayılan bağımsız değişken ifadelerindeki birleştirilebilir ifadeler artık doğru şekilde abone edilir ve işlenir.

    Bu çalışmada bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer birleştirilebilir işlevlere iletilir. Bu durum, çalışma zamanında daha az karşılaştırma, alan tablosu boyutunu küçültür ve daha önce atlanmayan composable işlevlerin daha fazla atlanmasına neden olur. 2. Derleme zamanında "statik" olarak belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Bu, karşılaştırma sayısını ve slot tablosu boyutunu azaltır. 3. Oluşturulan grup sayısını en aza indirmek için işlev gövdesinin kontrol akışı yapısı kullanılır. Bu, slot tablosu boyutunu azaltır ve çalışma zamanında daha az çalışma yapılmasına neden olur4. İşlevlere yönelik kullanılmayan dağıtım ve alıcı parametreleri, işlevin gövdesinde kullanılmıyorsa işlevin atlanabilirliğinin belirlenmesine dahil edilmez.

    Zarar veren değişikliklerin çoğu, derleyicinin doğrudan hedeflediği API'lerle ilgiliydi ve tipik oluşturma kullanımı bundan etkilenmeyecek: 1. Composer::startExpr kaldırıldı 2. Composer::endExpr kaldırıldı 3. Composer::call işlevinin desteği sonlandırıldı. key işlevinin varargs olmayan aşırı yüklemeleri kaldırıldı. Bundan sonra vararg sürümünü kullanın. 5. Pivot ek açıklaması kullanımdan kaldırıldı. Bunun yerine key 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 besteleri atmak için clear() yöntemi gerektiriyor (Ibe697)

  • Listenin tamamını kopyalamak zorunda kalmadan herkese açık API'ye iletilmesine olanak tanımak için MutableVector'a asMutableList() eklendi. (I298df)

  • Etkinliklere yanıt olarak iş başlatmak için bileşimde yönetilen bir CoroutineScope elde etmek üzere rememberCoroutineScope() eklendi. (I0e264)

  • MutableVector, standart Collection arayüzünden hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde hız sunar ve yalnızca şirket içi uygulamalarda kullanılması amaçlanmıştır. (I8ebd6)

  • Kotlin Compose'un gerektirdiği sürümdeki bir sorunu önlemek için StableMutableList ve StableMutableMap geçici olarak kaldırıldı. Oluşturma işlemi, Kotlin'in sorun içermeyen bir sürümüne güncellendiğinde bu arayüzler yeniden kullanıma sunulacaktır.

    SnapshotStateList ve SnapshotStateMap artık herkese açık ancak StableMutableList ve StableMutableMap geri yüklendikten sonra desteği sonlandırılacak. (Ia7769)

  • Animasyon zamanlaması için üst düzey withFrameNanos işlevi ekleyin (Ie34c5)

  • @Untracked ek açıklaması kullanımdan kaldırıldı. @ComposableContract(tracked=false) (Id211e) ile değiştirin

  • RestartableFunction ve ilişkili API'ler ComposableLambda vb. olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiğinden bu durum normalde kaynak düzeyi uyumluluğu etkilemez. Yeniden adlandırma işlemi, öncelikle yığın izlemelerinde (I7eb25) gösterildiğinde bu sınıfın ne yönden daha iyi olduğunu belirtmek için yapıldı.

  • @Composable ek açıklamaları artık sınıflarda geçerli değil (Ia5f02)

  • Ambient<T> artık @Immutable yerine @Stable olarak ayarlandı (I0b4bb)

  • Bu değişiklikten önce, derleyici derleyici eklentisi, bir @Composable işlevi içinde yapıcı çağrıları (I5205a, b/158123804) varsa basit bir şekilde durduruyordu.

  • Recompose bileşeni artık yararlı bir soyutlama değildir. Çoğu yeniden oluşturma işlemi, MutableState atamalarının sonucu olarak gerçekleşir. Bunun dışındaki her şey için mevcut kapsamın yeniden derlenmesini tetiklemek üzere invalidate işlevini kullanmanız önerilir. (Ifc992)

  • Observe artık yararlı bir soyutlama değildir. Bu işlevi kopyalamanız gerekiyorsa uygulamasını, yalnızca birleştirilebilir bir lambda parametresi yürüten birleştirilebilir bir işlev oluşturarak kopyalayabilirsiniz. Örneğin, @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • @Direct, @ComposableContract(restartable=false) yerine kullanımdan kaldırıldı (If4708)

  • Kısa süre önce kullanıma sunulan StateFlow için, döndürülen durum null olmayan bir değer olacak şekilde ilk değeri önceden doldurmamıza olanak tanıyan bir bağdaştırıcı eklendi (I61dd8, b/156233789)

  • Flow için bir adaptör eklendi. Kullanım örneği: flow.collectAsState() tarafından val değeri (If2198, b/153375923)

  • [Mutable]Eyalet mülk yetki operatörleri, Kotlin 1.4 mülkü yetki optimizasyonlarını desteklemek için uzantılara taşındı. Arama yapanların by state { ... } veya by mutableStateOf(...)'u kullanmaya devam etmek için içe aktarma eklemesi gerekir. (I5312c)

  • androidx.compose.ViewComposer, androidx.ui.node.UiComposer konumuna taşındı.androidx.compose.Emittable kaldırıldı. ComponentNode ile gereksizdi. androidx.compose.ViewAdapters kaldırıldı. Bu kullanım alanı artık desteklenmiyor. Compose.composeInto işlevinin desteği sonlandırıldı. Bunun yerine setContent veya setViewContent kullanın. Compose.disposeComposition desteği sonlandırıldı. Bunun yerine setContent tarafından döndürülen Composition üzerinde dispose yöntemini kullanın. androidx.compose.Compose.subcomposeInto, androidx.ui.core.subcomposeInto'ya taşındı ComponentNode#emitInsertAt, ComponentNode#insertAt olarak yeniden adlandırıldı ComponentNode#emitRemoveAt, ComponentNode#removeAt olarak yeniden adlandırıldı ComponentNode#emitMode, ComponentNode#move olarak yeniden adlandırıldı (Idef00)

  • ComposeFlags.COMPOSER_PARAM işareti true olarak güncellendi. Bu, oluşturma eklentisinin kod oluşturma stratejisini değiştirecek. Bu durum, yüksek düzeyde @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametre, çalışma zamanının yürütmeyi düzgün şekilde yönetmesi için sonraki @Composable çağrılarına iletilir. Bu, ikili kodda önemli bir değişikliktir ancak compose'in izin verilen tüm kullanımlarında kaynak düzeyinde uyumluluğu korumalıdır. (I7971c)

  • Ambiyans API'de önemli değişiklikler. Ayrıntılar için günlüğe ve Ambient<T> belgelerine bakın (I4c7ee, b/143769776)

  • LiveData için adaptör içeren yeni yapı olan ui-livedata eklendi. Kullanım örneği: liveData.observeAsState() tarafından val değeri (Ie9e8c, b/150465596)

  • Belirli bir başlangıç değeri olmayan Rx bağdaştırıcıların desteği sonlandırıldı. null kullanmak her zaman en iyi varsayılan yöntem değildir. Örneğin, bir Listeniz olduğunda boşList() veya makul başka bir varsayılan (I00025, b/161348384) ile başlamak daha iyidir.

  • RxJava2 için adaptörler içeren yeni yapı olan ui-rxjava2 eklendi. Kullanım örneği: observable.subscribeAsState() tarafından val değeri (Ifab4b, b/153369097)

  • savedInstanceState() artık boş değer atanabilir türlerle (I6847f, b/153532190) kullanılabilir

  • Özel Saver nesnelerini yazmayı kolaylaştırmak için yeni listSaver() ve mapSaver() (I8cf68, b/152331508)

  • Yeni işlevler: savedInstanceState() ve rememberSavedInstanceState(). Bunlar state() ve remember() işlevlerine benzer ancak yerleşik bir kayıtlı örnek durumu desteğine sahiptir (If1987, b/152025209)

Hata Düzeltmeleri

  • runOnIdleCompose, runOnIdle (I83607) olarak yeniden adlandırıldı
  • LayoutNode'u deneysel API yaptı (I4f2e9)
  • androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue desteği sonlandırıldı. Bu türü kullanan TextField, FilledTextField ve CoreTextField bileşenlerinin desteği de sonlandırılmıştır. Bunun yerine lütfen androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005)
  • Değiştirici'de, çizim arka plan uzantı API'lerinin sağlanmasına yönelik desteği sonlandırılan DrawBackground API'si kaldırıldı. Kod yollarını azaltmak ve Modifier'ın kompozisyonun bir parçası olarak oluşturulması şartını kaldırmak için renk, fırça ve boya drawBackground uygulamalarını yeniden yapılandırdık. (I0343a)
  • Bir Canvas'ı gösteren daha yüksek düzeydeki compose API'leri, bunun yerine CanvasScope'u göstermek için güncellendi. Bu sayede tüketicilerin kendi Paint nesnelerini yönetmesi gerekmez. Yine de bir tuvale erişmesi gereken tüketiciler, temel tuvalde çizim komutları göndermek için geri çağırma sağlayan drawCanvas uzantı yöntemini kullanabilir. (I80afd)
  • WithConstraints sona eklenen lambda API'si değiştirildi. Artık iki parametre yerine, constraints ve layoutDirection'e ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlayan bir alıcı kapsamı var (I91b9a, b/149979702)
  • Simetrik dolgu değiştirici eklendi. (I39840)
  • wrapContentWidth ve wrapContentHeight, herhangi bir Hizalama yerine dikey veya yatay Hizalama bekleyeceği şekilde güncellendi. Yerçekimi değiştirici, dikey veya yatay hizalamayı kabul edecek şekilde güncellendi. Satır, sütun ve grup, özel sürekli Hizalamaları desteklemek için güncellendi. (Ib0728)
  • ui-text modülü, ui-text-core olarak yeniden adlandırıldı (I57ara)
  • DrawModifier API'yi iyileştirme:
    • Paint() 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 genişletme işlevleriyle değiştirildi (I225e4)
  • RowScope ve ColumnScope üyelerine artık Row ve Column dışından erişilebilir. (I3a641)
  • LayoutFlexible, LayoutWeight olarak yeniden adlandırıldı. Doldurulacak sıkı parametre yeniden adlandırıldı. (If4738)
  • WithConstraints, LayoutDirection parametresini aldı (I6d6f7)
  • Arka plan, DrawBackground olarak yeniden adlandırıldı ve arka planın varsayılan olarak hafızaya alınması olacak şekilde ayarlandı (Ia0bd3)
  • ButtonStyle, farklı işlevlerle değiştirildi ve metin (dize) aşırı yüklemesi kaldırıldı. Kullanım bilgileri için güncellenmiş örneklere bakın. (If63ab, b/146478620, b/146482131)
  • runOnIdleCompose ve runOnUiThread artık ComposeTestRule'daki yöntemler yerine genel işlevlerdir. (Icbe8f)

Harici Katkı

  • Looper ve Handler gibi gereksiz API'leri Compose Runtime taşıma katmanından kaldırma (I6847d)
  • Başlangıç değeri olmayan Flow<T>.collectAsState() için desteği sonlandırın. StateFlow<T> kullanın veya bunun yerine açık bir başlangıç değeri iletin. (I63f98, b/157674865)