Çalışma Zamanı Oluşturma

Compose'un programlama modeli ve durum yönetiminin temel yapı taşları ve Compose Compiler Eklentisi'nin hedeflemesi için temel çalışma zamanı.
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
21 Şubat 2024 1.6.2 - - 1.7.0-alpha03

Yapı

Oluşturma işlemi, androidx içindeki 7 Maven Grup Kimliğinin birleşiminden oluşur. Her Grup, her biri kendi sürüm notlarına sahip olan hedeflenmiş bir işlev alt kümesi içerir.

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

GruplandırAçıklama
compose.animationKullanıcı deneyimini zenginleştirmek için Jetpack Compose uygulamalarında animasyonlar oluşturun.
compose.derleyici@Composable işlevlerini dönüştürün ve Kotlin derleyici eklentisiyle optimizasyonları etkinleştirin.
compose.temelKullanı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şenleriyle Jetpack Compose kullanıcı arayüzleri derleyin. Bu, Compose'un daha üst düzey giriş noktasıdır ve www.material.io adresinde açıklananlarla eşleşen bileşenleri sağlamak için tasarlanmıştır.
compose.material3Materyal Tasarımın yeni evrimi olan Materyal Tasarım 3 Bileşenler ile Jetpack Compose kullanıcı arayüzleri derleyin. Material 3, güncellenmiş tema ve bileşenlerin yanı sıra dinamik renk gibi Material You kişiselleştirme özellikleri 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 modeli ve durum yönetiminin temel yapı taşları ve Compose Compiler Eklentisi'nin hedeflemesi için temel çalışma zamanı.
compose.uiDüzen, çizim ve giriş de dahil olmak üzere cihazla etkileşimde bulunmak için gereken kullanıcı arayüzünün temel bileşenleri.

Bağımlılıkları bildirme

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

Uygulamanızın veya modülünüz için build.gradle dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:

Modern

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.10"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.10"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Bağımlılıklar hakkında daha fazla bilgi edinmek için Derleme bağımlılıkları ekleme konusuna bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sayı oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

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

Sürüm 1.0.0-beta01

29 Kasım 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 yayınlandı. 1.0.0-beta01 sürümü bu kayıtları içerir.

Sürüm 1.0.0-alpha05

15 Kasım 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Bağımlılıklar, desteklenen en düşük kararlı sürümlere (ör.yazma çalışma zamanı ve izleme-perfetto) sabitlendi. Oluşturulma-çalışma zamanı izleme özelliğinin uygulamaya, oluşturma çalışma zamanının daha yeni bir sürümünü getirmesi sorunu düzeltildi.

Sürüm 1.0.0-alpha04

23 Ağustos 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 yayınlandı. Sürüm 1.0.0-alpha04 bu kayıtları içerir.

Yeni Özellikler

  • Karşılaştırma ve İzleme Perfetto'nun en son sürümleriyle uyumludur. Bu özellik, AndroidX Benchmark ve Android Studio gibi uygulama başlatılırken (sıfır başlatma) Beste İzleme desteği sağlar (Hedgehog Beta 2'den itibaren).

API Değişiklikleri

  • androidx.tracing.perfetto.Trace, androidx.tracing.perfetto.PerfettoSdkTrace olarak yeniden adlandırıldı. (I44af8)
  • İzleme Perfetto SDK API'lerini android.os.Trace ile tutarlı hale getirme. (I73ba0, b/282199917)
  • Uygulama başlatılırken takiple ilgili ön koşullar. (Iad890)
  • Birleştirilen deneysel ve herkese açık API dosyaları (I0f2e1, b/278769092)

Sürüm 1.0.0-alpha02

8 Şubat 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 yayınlandı. Sürüm 1.0.0-alpha02 bu kayıtları içerir.

Yeni Özellikler

  • İşlevsel bir değişiklik yok. Satışa dönük bağımlılıklarda birden çok performans optimizasyonu androidx.tracing:tracing-perfetto*.

Sürüm 1.0.0-alpha01

7 Eylül 2022

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kayıtları içerir.

Yeni Özellikler

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

Sürüm 1.7

Sürüm 1.7.0-alpha03

21 Şubat 2024

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

API Değişiklikleri

  • Değişikliklerin tespit edilmesini iyileştirmek için değiştirme grupları kullanma (0941b5)

Performans iyileştirmeleri

  • Değişiklikleri algılarken bellek ayırmayı iyileştirme (53e7fd)
  • Oluşturucudaki bellek sızıntısını düzeltme (0e097d)
  • Yeniden oluşturma sırasında geçersiz kılma işlemlerini geçirmek için ScopeMap kullanın (e19a7e)
  • Geçersiz kılma eşlemesini, yalnızca türetilen durumları koruyacak şekilde optimize edin (f11c44)
  • IdentityArraySet kullanımlarını ScatterSet (db572e) ile değiştirin
  • ScopeMap içinde removeScope optimizasyonu (bb0530)

Sürüm 1.7.0-alpha02

7 Şubat 2024

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

Hata Düzeltmeleri

  • Aynı karedeki alt kompozisyonlarda composable lambda'ları geçersiz kılın. (98301c)
  • onRelease geri aramasını onForgotten ile aynı sırayla arayın. (2cd790)
  • snapshotFlow içinde gözlemlenmeyen değiştirilmiş durumları filtreleyin. (796b80)

Performans iyileştirmeleri

  • Anlık görüntü gözlemleyicisini zaten şeffaf olduğunda yerinde değiştirin. (f60f30)
  • SnapshotIdSet.lowest() optimizasyonu yapın. (7ae149)
  • SnapshotIdSet için tahsissiz bir fold() kullanın. (532b7d)
  • Yineleyici ayırmayı kaldır (83f96b)

Sürüm 1.7.0-alpha01

24 Ocak 2024

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

Performans Optimizasyonları

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

Hata Düzeltmeleri

  • İçsel hatırlamadaki varsayılan parametre meta verilerini dikkate alın (096665)
  • Daha fazla destek kaydı için currentCompoundHashKey benzersiz oluşturun (d4a872)
  • Satır içi işlev çağrısından çıkarken grupları fark etme (2a90fc)

Sürüm 1.6

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 kayıtları içerir.

Sürüm 1.6.1

7 Şubat 2024

androidx.compose.runtime:runtime-*:1.6.1 yayınlandı. 1.6.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • onRelease geri aramasını onForgotten ile aynı sırayla arayın. (2cd790)
  • snapshotFlow içinde gözlemlenmeyen değiştirilmiş durumları filtreleyin. (796b80)

Sürüm 1.6.0

24 Ocak 2024

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

1.5.0'dan sonraki önemli değişiklikler

Yeni Özellikler

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

Performans Optimizasyonları

  • Anlık görüntü durumlarının kayıt değişikliklerini optimize edin (28c3fe)
  • rememberSaveable (f01d79) optimizasyonu
  • Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)
  • Bileşim yerel değerlerini sağlama işlemini iyileştirin (a337ea)

Hata Düzeltmeleri

  • Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
  • Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
  • RememberObserver yaşam döngülerini yalnızca hatırlama hesaplamasına saklandığında tetikleyin. (f6b4dc)
  • $dirty yakalamasını satır içi lambda'larla sınırlandırın. (acfca0)
  • Bazen yanlış beste yerel olarak gönderilen taşınabilir içeriği düzeltin. (035cd6)

Sürüm 1.6.0-rc01

10 Ocak 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 yayınlandı. 1.6.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.6.0-beta03

13 Aralık 2023

androidx.compose.runtime:runtime-*:1.6.0-beta03 yayınlandı. 1.6.0-beta03 sürümü bu kayıtları içerir.

Sürüm 1.6.0-beta02

29 Kasım 2023

androidx.compose.runtime:runtime-*:1.6.0-beta02 yayınlandı. 1.6.0-beta02 sürümü bu kayıtları içerir.

Sürüm 1.6.0-beta01

15 Kasım 2023

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

API Değişiklikleri

  • Ek açıklamada Belirli kararlılık değerlerini yayın. (274a4c)

Hata Düzeltmeleri

  • Bağlam içinde bileşim yerel kapsam durumu için referans politikası kullanın. (83361c)
  • $dirty yakalamayı satır içi lambda'larla sınırlandırın. (acfca0)
  • Bazen yanlış beste yerel olarak gönderilen taşınabilir içeriği düzeltin. (035cd6)
  • RecomposeScopeImpl içinde ayırmadan daha hızlı karma eşlemeler kullanın. (d79494)
  • DerivedState uygulamasında ObjectIntMap kullanın. (21862e)
  • DerivedState içindeki SnapshotThreadLocal tamsayısı 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ı. Sürüm 1.6.0-alpha08 bu kayıtları içerir.

Hata Düzeltmeleri

  • RememberObserver yaşam döngülerini yalnızca hatırlama hesaplamasına saklandığında tetikleyin. (f6b4dc)
  • Geçersiz kılma listesi sıralamasında ayırmaları iyileştirin. (954d63)
  • SnapshotStateObserver içinde tahsis edilmeyen yeni haritaları kullanın. (4303ce)
  • Beste devre dışı bırakıldığında geçersiz kılmaları temizle. (e001be)

Sürüm 1.6.0-alpha07

4 Ekim 2023

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

API Değişiklikleri

  • SnapshotStateList, liste yardımcılarının doğrudan dizine ekleme sürümünün kullanılabilmesi için RandomAccess olarak işaretlendi. (I5210c, b/219554654)

Sürüm 1.6.0-alpha06

20 Eylül 2023

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

Sürüm 1.6.0-alpha05

6 Eylül 2023

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

Sürüm 1.6.0-alpha04

23 Ağustos 2023

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

Yeni Özellikler

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

API Değişiklikleri

  • ReusableComposition devre dışı bırakılması için bir yöntem eklendi. Gözlemler kaldırıldı ancak düğümler yerinde tutuldu. Devre dışı bırakılan besteyi setContent çağrısı yapılarak tekrar etkinleştirilebilir. (Ib7f31)
  • Alt bestelerin yaşam döngüsünü yönetmek ve yeniden kullanmak için ReusableComposition arayüzü ekleyin. (I812d1, b/252846775)

Sürüm 1.6.0-alpha03

9 Ağustos 2023

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

Hata Düzeltmeleri

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

Sürüm 1.6.0-alpha02

26 Temmuz 2023

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

Yeni Özellikler ve Performans Geliştirmeleri

  • rememberSaveable (f01d79) optimizasyonu
  • Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)
  • Bileşim yerel değerlerini sağlama işlemini iyileştirin (a337ea)
  • Grup oluşturulmaması için SideEffect, @ExplicitGroupsComposable olarak işaretlenir. (I74815)
  • Yeniden kullanım sırasında kompozisyon yerel haritalarını karşılaştırmaktan kaçının (782071)

API Değişiklikleri

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

Hata Düzeltmeleri

  • Yuva tablosu bellek sızıntısını düzeltme (73fcfe)
  • stateSaver null değerini döndürdüğünde (90748c) rememberSaveable öğesini geri yükleme şeklimizi düzeltin

Sürüm 1.6.0-alpha01

21 Haziran 2023

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

Hata Düzeltmeleri

  • Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
  • Anlık görüntüler uygulanırken azaltılmış ayırmalar. (I65c09)
  • Anlık görüntü değiştirilmediyse DerivedState içinde readableHash hesaplamasından kaçının (68c565)

Sürüm 1.5

Sürüm 1.5.4

18 Ekim 2023

androidx.compose.runtime:runtime-*:1.5.4 yayınlandı. 1.5.4 sürümü bu kayıtları içerir.

Sürüm 1.5.3

4 Ekim 2023

androidx.compose.runtime:runtime-*:1.5.3 yayınlandı. 1.5.3 sürümü bu kayıtları içerir.

Sürüm 1.5.2

27 Eylül 2023

androidx.compose.runtime:runtime-*:1.5.2 yayınlandı. 1.5.2 sürümü bu kayıtları içerir.

Sürüm 1.5.1

6 Eylül 2023

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

Sürüm 1.5.0

9 Ağustos 2023

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

API Değişiklikleri

  • Yeniden oluşturma, renk animasyonları ve AndroidComposeView kapsamındaki ayırmalar kaldırıldı. (Ib2bfa)
  • Durum oluşturan ve bir remember çağrısında sarmalanması gereken işlevleri işaretlemek için @StateFactoryMarker ek açıklaması eklendi. (I64550)
  • State ve MutableState (fb3d89) basit versiyonlarını ekleyin
  • Eklenen Snapshot.isApplyObserverNotificationPending (I672a5)
  • State API'sinin temel sürümleri eklendi. Bu sayede Int, Long, Float ve Çift değerlerinin otomatik kutulama için ceza uygulanmadan State nesnelerinde izlenmesine izin verildi. Bunları kullanmak için yeni fabrika yöntemleri mutableIntState(Int), mutableFloatStateOf(Float) vb. kullanın. (I48e43)

Hata Düzeltmeleri

  • Kaldırılacak alt kompozisyonların yeniden kompozisyonunu atlayın. (Ieeb99, b/254645321)
  • ComposerImpl (0206f7) içinde anlık görüntü referansını saklama
  • Kompozisyonu iki kez uygulama (f5791b)
  • Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
  • Besteyi yok etme işlemi sırasında onEndChanges numaralı telefonu arayın. (62cc8c)
  • Alt besteye taşınan içeriği düzeltme (4beb41)
  • Olası kilitlenmeleri düzeltin (c1a425 ve 8edce0)
  • Bir Android penceresi için oluşturulan yeniden düzenleyici, ON_STOP bildirimi aldığında artık tüm besteleri değil yalnızca withFrameNanos çağrılarını engelleyecektir. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği, ancak animasyonların veya withFrameNanos işleviyle ilişkili diğer tüm çağrıların engelleneceği anlamına gelir. (Id9e7f, b/240975572)
  • Efektleri atmadan önce LayoutNode için devre dışı bırakma geri çağırmalarını yürütün 3784073
  • Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
  • 73fd4d8 düğümlü Composable için canlı düzenleme regresyonunu düzeltin
  • ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
  • Türetilmeyen 84d9b1c durumları için SnapshotStateObserver kapsamı geçersiz kılın
  • Kompozisyonları atarken ortaya çıkabilecek kilitlenme sorununu düzeltme 28761fc
  • Alt besteye taşınan içeriği düzeltme 92d4156
  • Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltin (8a03e9)
  • Efektleri atmadan önce LayoutNode için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4)
  • Düğüm gruplarını sonlandırırken endToMarker() sorununu düzeltin. (d71d980)
  • Devre dışı bırakma kontrolü için mevcut SlotWriter grubunu kullan (a0b518b)
  • SlotTable.moveSlotGapTo() öğesindeki fill öğesini kaldırın ve kapatmak için taşıyın (81f9935)
  • Taşınabilir içerik taşınırken eksik olan geçersiz kılma işlemlerini düzeltme (1d7c024)
  • Taşınan taşınabilir içerik için derhal geçersiz kılma işlemlerini düzeltin (8676618)

Performans iyileştirmeleri

  • Anlık görüntü değiştirilmediyse DerivedState içinde readableHash hesaplaması yapmaktan kaçının. (307102)
  • Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
  • CoroutineScopes (a55362 ve bd382f) oluşturma işlemini hızlı bir şekilde iptal etme
  • Erişilemez durum kayıtları içeren durum nesneleri kayıtlarının üzerine yaz (c986960)
  • Grupları gerçekleştirirken doğru kapsamın oluşturucusunu kullanın (9a5e5b6)
  • Anlık görüntü geçersiz kılmalarını depolamak için IdentityArraySet kullanın (7f60cca)
  • Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)

Sürüm 1.5.0-rc01

26 Temmuz 2023

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

Hata Düzeltmeleri

  • Türetilen durumların yeniden okunmasını değişiklikler kaydedilene kadar ertele (f38099)

  • mutableStateOf() çağrılarının temel öğeler için karşılık gelen özel türlerine taşınmasını öneren isteğe bağlı bir denetim mevcuttur. lint kimliği: AutoboxingStateCreation. Daha önce bu inceleme tüm projeler için varsayılan olarak etkindi. Bu uyarıyı Android Studio'nun düzenleyicisinde ve projenizin lint çıkışlarında görmek için modülünüzün build.gradle veya build.gradle.kts yapılandırmasında gösterilen (I34f7e) içinde warning "AutoboxingStateCreation" öğesini belirterek önem derecesini bilgi amaçlı yerine uyarı (veya daha yüksek) olarak değiştirin:

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

Sürüm 1.5.0-beta03

28 Haziran 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 yayınlandı. 1.5.0-beta03 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

Sürüm 1.5.0-beta02

7 Haziran 2023

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

Performans iyileştirmeleri

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

Sürüm 1.5.0-beta01

24 Mayıs 2023

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

API Değişiklikleri

  • Yeniden oluşturma, renk animasyonları ve AndroidComposeView (Ib2bfa) kapsamındaki ayırmalar kaldırıldı
  • Durum oluşturan ve bir remember çağrısında sarmalanması gereken işlevleri işaretlemek için @StateFactoryMarker ek açıklaması eklendi. (I64550)
  • State ve MutableState (fb3d89) basit versiyonlarını ekleyin
  • Eklenen Snapshot.isApplyObserverNotificationPending (I672a5)

Hata Düzeltmeleri

  • Azaltılmış ayırmalar (I65c09, d7ea77, 727974 ve 445808)
  • ComposerImpl (0206f7) içinde anlık görüntü referansını saklama
  • CoroutineScopes (a55362 ve bd382f) oluşturma işlemini hızlı bir şekilde iptal etme
  • Kompozisyonu iki kez uygulama (f5791b)
  • Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlama (aa2a92)
  • Besteyi yok etme işlemi sırasında onEndChanges numaralı telefonu arayın. (62cc8c)
  • Alt besteye taşınan içeriği düzeltme (4beb41)
  • Olası kilitlenmeleri düzeltin (c1a425
  • ON_STOP, beste yerine kare saat yayınlarını duraklatmalıdır (f4a2d1)
  • Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltin (8a03e9)
  • Efektleri atmadan önce LayoutNode için devre dışı bırakma geri çağırmalarını yürütün (8b0fa4)

Harici Katkı

  • Eklenen Snapshot.isApplyObserverNotificationPending (I672a5)

Sürüm 1.5.0-alpha04

10 Mayıs 2023

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

API Değişiklikleri

  • State API'sinin temel sürümleri eklendi. Bu sayede Int, Long, Float ve Çift değerlerinin otomatik kutulama için ceza uygulanmadan State nesnelerinde izlenmesine izin verildi. Bunları kullanmak için yeni fabrika yöntemleri mutableIntState(Int), mutableFloatStateOf(Float) vb. kullanın. (I48e43)

Hata Düzeltmeleri

  • Besteyi yok etme işlemi sırasında onEndChanges numaralı telefonu arayın. Composition.dispose sırasında kaldırılan odak düğümleri, odağı sıfırlamak için onEndChanges hizmetine abone olur.(03d4a47)

  • Başlatılmamış türetilmiş durum değerlerinin geçersiz kılınmasını sağlayın. Türetilen her durum, SnapshotStateObserver içindeki bağımlılıklarının bir listesiyle ilişkilendirilir. Bu liste, bağımlılık değiştiğinde türetilen durumla ilişkili kapsamları geçersiz kılmak için kullanılır. Bağımlılık değişikliği, türetilen durum okunduktan sonra (Snapshot.notifyObjectsInitialized() çağrısına bağlı olarak) anlık görüntü ilerlemesine kaydedilir.

    SnapshotStateObserver için önceden türetilen durum gözlem mantığı, eski bağımlılıkları temizleyip yeni değeri okumaktı. Bu durum, bağımlılık geçersiz kılma işleminin kaydedilmediği temizlenmiş durumda gerçekleşen geçersiz kılma işlemine yol açan bir yarış durumuyla sonuçlandı.

    Bu değişiklik, türetilen durum okuma ve bağımlılık temizleme işlemlerini yeniden sıralayarak geçersiz kılma işleminin her zaman geçerli bir durumda olmasını sağlar. (c472be6)

Sürüm 1.5.0-alpha03

19 Nisan 2023

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

API Değişiklikleri

  • Bir Android penceresi için oluşturulan yeniden düzenleyici, ON_STOP bildirimi aldığında artık tüm besteleri değil yalnızca withFrameNanos çağrılarını engelleyecektir. Bu, durdurulan etkinliklerle ilişkili pencerelerin veri değişiklikleri için yeniden derlenmeye devam edeceği, ancak animasyonların veya withFrameNanos işleviyle ilişkili diğer tüm çağrıların engelleneceği anlamına gelir. (Id9e7f, b/240975572)

Hata Düzeltmeleri

  • Anlık görüntü listesinde ve haritasında olası kilitlenmeyi düzeltme 5c1a425
  • Efektleri atmadan önce LayoutNode için devre dışı bırakma geri çağırmalarını yürütün 3784073
  • Yeniden başlatılan lambda'lar için değiştirilen işaretleri düzeltme ea81df9
  • 73fd4d8 düğümlü Composable için canlı düzenleme regresyonunu düzeltin
  • ON_STOP, beste ae276f1 yerine kare saat yayınlarını duraklatmalıdır.
  • Türetilmeyen 84d9b1c durumları için SnapshotStateObserver kapsamı geçersiz kılın
  • Kompozisyonları atarken ortaya çıkabilecek kilitlenme sorununu düzeltme 28761fc
  • Alt besteye taşınan içeriği düzeltme 92d4156

Sürüm 1.5.0-alpha02

5 Nisan 2023

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

Yeni Özellikler

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

Hata Düzeltmeleri, Performans Geliştirmeleri

  • Erişilemez durum kayıtları içeren durum nesneleri kayıtlarının üzerine yaz (c986960)
  • Grupları gerçekleştirirken doğru kapsamın oluşturucusunu kullanın (9a5e5b6)
  • Düğüm gruplarını sonlandırırken endToMarker() sorununu düzeltin. (d71d980)
  • Devre dışı bırakma kontrolü için mevcut SlotWriter grubunu kullan (a0b518b)
  • Anlık görüntü geçersiz kılmalarını depolamak için IdentityArraySet kullanın (7f60cca)
  • SlotTable.moveSlotGapTo() öğesindeki fill öğesini kaldırın ve kapatmak için taşıyın (81f9935)
  • Taşınabilir içerik taşınırken eksik olan geçersiz kılma işlemlerini düzeltme (1d7c024)
  • Taşınan taşınabilir içerik için derhal geçersiz kılma işlemlerini düzeltin (8676618)
  • Anlık görüntü gözlemleri için ayırmaları azaltın (5bc535f)

Sürüm 1.5.0-alpha01

22 Mart 2023

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

Yeni Özellikler

  • Modifier.Nodes hizmetinin eş yordamları başlatmasına izin vermek iç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, hiçbir değişiklik yapılmadan serbest bırakıldı.

Sürüm 1.4.2

19 Nisan 2023

androidx.compose.runtime:runtime-*:1.4.2 yayınlandı. 1.4.2 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

  • Değişiklik işlemi, durum kaydına doğrudan yazma işlemiyle eş zamanlı olarak gerçekleştirilirse SnapshotStateList veya SnapshotStateMap öğesine içerik eklendiğinde kilitlenme meydana gelebilir. Bu durum, kullanılmayan kayıtları serbest bırakmak için doğrudan yazma kullanan 93fcae828b tarafından ortaya çıkan değişikliklerle karşılaşma olasılığını önemli ölçüde artırmıştır.

  • Kilitlerin sırası, harita veya liste kilidi basılı tutulduğunda anlık görüntü kilidinin asla alınmayacağı şekilde belirlenmiştir.

Sürüm 1.4.1

5 Nisan 2023

androidx.compose.runtime:runtime-*:1.4.1 yayınlandı. 1.4.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

Sürüm 1.4.0

22 Mart 2023

androidx.compose.runtime:runtime-*:1.4.0 yayınlandı. 1.4.0 sürümü bu kayıtları içerir.

1.3.0'dan sonraki önemli değişiklikler

  • İlk beste 3680e25 için LiveData değerindeki başlatılmış değeri kullanın
  • Oluşturma düğümlerinin yaşam döngüsünü gözlemlemek için ComposeNodeLifecycleCallback ekleyin. 8b6a258
  • parameterTypes özelliğini ComposableMethod 7b6c7ad öğesine ekleyin

Hata Düzeltmeleri ve Performans İyileştirmeleri

  • Her iki kapsam dizinini de SnapshotStateObserver 29f4a3e içinde temizle
  • Atlanamayan lambda'ların gövdesine gereken grupları ekleyin 7d06752
  • 93fcae8 anlık görüntüsünün bellek referans özelliklerini iyileştirin
  • Yerel beste aramalarında boks kaldırma 0875717
  • Yeniden kullanılamayan düğüm grupları için doğru anahtarı kullanın 6388d8d
  • SnapshotStateObserver öğesini yinelemeli ve eşzamanlı uygulananlardan koruyun 98cb6ba
  • IdentityArraySet "get" yöntemi 35a77d3'e bir kontrol dizini sınırı kontrolü eklendi
  • Oluşturma modülünü ViewTreeLifecycleOwner 21c2122 uzantılarını kullanacak şekilde güncelleyin
  • Recomposer kareyi bitirdikten sonra uygulama bildirimleri gönder. 98f2641
  • Recomposer 8f8656f iptal edilirken dizin sınırları dışındaki kilitlenme sorununu düzeltme
  • Bestenin üst sağlayıcıları 9526fcc'yi değiştirdiyse her zaman yeniden oluşturmayı zorunlu kıl
  • İptal edilen İşler için yeniden düzenleyen toleransı a55f7ed
  • Çok sayıda oluşturucu için geçersiz kılma işlemlerinin işlenmesini iyileştirme 9b7ed67
  • Yerel olmayan dönüşler 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ınlandı. 1.4.0-rc01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

Sürüm 1.4.0-beta02

22 Şubat 2023

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

Sürüm 1.4.0-beta01

8 Şubat 2023

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

API Değişiklikleri

  • Compose düğümlerinin yaşam döngüsünü gözlemlemeye olanak tanıyan ComposeNodeLifecycleCallback eklendi (I3731b)
  • Bu işlevin yalnızca testte çağrılması güvenli olduğundan Composer.disableSourceInformation() işlevine @TestOnly eklendi. (I896c8)

Hata Düzeltmeleri

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

Sürüm 1.4.0-alpha05

25 Ocak 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 ve androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 yayınlandı. Sürüm 1.4.0-alpha05 bu kayıtları içerir.

API Değişiklikleri

  • Satır içi/kullanımdan kaldırılan gizli işlevlerin daha fazla tür/boşluk değeri (I24f91)

Sürüm 1.4.0-alpha04

11 Ocak 2023

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

API Değişiklikleri

  • TestMonotonicFrameClock artık doğru deneysel ek açıklamayı kullanıyor. (I95c9e)

Hata Düzeltmeleri

  • SnapshotStateObserver öğesini yinelemeli ve eşzamanlı uygulamalardan koru (d902fb)

Sürüm 1.4.0-alpha03

7 Aralık 2022

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 1.4.0-alpha02

9 Kasım 2022

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

Sürüm 1.4.0-alpha01

24 Ekim 2022

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

API Değişiklikleri

  • SnapshotStateList ve SnapshotStateMap artık saygılı bir şekilde toList() ve toMap() uygulamalarını açık bir şekilde uyguluyor. Bu yöntemler, içeriklerini depolamak için kullanılan dahili sabit verileri döndürdüğünden, bir kopyasını oluşturmadan mevcut içeriklerini döndürür. Bu değer, örneğin, verilerin kopyalanmasını gerektirmeden snapshotFlow kullanarak bir değer akışı üretmek için kullanılabilir. (Ica2bd)

Sürüm 1.3

Sürüm 1.3.3

11 Ocak 2023

androidx.compose.runtime:runtime-*:1.3.3 yayınlandı. 1.3.3 sürümü bu kayıtları içerir.

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

Sürüm 1.3.2

7 Aralık 2022

androidx.compose.runtime:runtime-*:1.3.2 yayınlandı. 1.3.2 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

Sürüm 1.3.1

9 Kasım 2022

androidx.compose.runtime:runtime-*:1.3.1 yayınlandı. 1.3.1 sürümü bu kayıtları içerir.

Sürüm 1.3.0

24 Ekim 2022

androidx.compose.runtime:runtime-*:1.3.0 yayınlandı. 1.3.0 sürümü bu kayıtları içerir.

1.2.0'dan sonraki önemli değişiklikler

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

Beste İzleme

Düzenlenebilir 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ınlandı. 1.3.0-rc01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

Sürüm 1.3.0-beta03

21 Eylül 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 yayınlandı. 1.3.0-beta03 sürümü bu kayıtları içerir.

Davranış Kırıcı Değişikliği

  • remember ve rememberCoroutineScope parametreleri, crossinline olarak değiştirildi. Bu özellik, erken geri döndürmeye izin vermek yerine erken iadeler için bir hata bildirir. Bu da daha sonra oluşan dahili bir hatanın bildirilmesine neden olur.
  • Bu değişiklik, potansiyel olarak bu işlevlere aktarılan lambdalardan yerel olmayan dönüşlerin kaldırılmasını gerektiren yeni derleyici hatalarının bildirilmesine yol açabilir. (Ibea62)

Sürüm 1.3.0-beta02

7 Eylül 2022

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

Hata Düzeltmeleri

Sürüm 1.3.0-beta01

24 Ağustos 2022

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

API Değişiklikleri

  • Bu API'yi kullanan geliştirici araçlarının, bir bileşim alt grubunu kendi kimliğini kullanarak hızlı bir şekilde bulmasını sağlamak için CompositionData öğesine bir 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ınlandı. Sürüm 1.3.0-alpha03 bu kayıtları içerir.

Sürüm 1.3.0-alpha02

27 Temmuz 2022

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

API Değişiklikleri

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

Sürüm 1.3.0-alpha01

29 Haziran 2022

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

API Değişiklikleri

  • Yardımcı program işlevlerini çalışma zamanına taşıma (I4f729)

Sürüm 1.2

Sürüm 1.2.1

10 Ağustos 2022

androidx.compose.runtime:runtime-*:1.2.1 yayınlandı. 1.2.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Düzeltilen bellek sızıntısı: Şeffaf anlık görüntülerden oluşturulan iç içe yerleştirilmiş anlık görüntüleri ortadan kaldırma b/239603305

Sürüm 1.2.0

27 Temmuz 2022

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

1.1.0 tarihinden itibaren önemli değişiklikler

  • Compose Çalışma Zamanı'nın 1.2.0 sürümünde kullanıma sunulan birçok özelliğin yanı sıra sabitleme amaçlı birçok hata düzeltmesi de yapıldı. En önemli yeni özellik, paylaşılan öğe geçişleri gibi karmaşık kullanıcı deneyimini sağlamak için kullanılabilecek movableContentOfAPI'nin kullanıma sunulmasıydı. movableContentOf API'si, composable bir lambda'yı, durumunu ve karşılık gelen düğümleri çağrıldığı yeni konuma taşıyan bir lambdaya dönüştürür. Önceki çağrı bileşimden çıktığında, durum geçici olarak korunur ve lambdaya yeni bir çağrı besteye girerse durum ve ilişkili Düğümler yeni çağrının konumuna taşınır. Yeni bir arama eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.

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

  • Buna ve birkaç yeni özelliğe ek olarak, çalışma zamanı ve Enstantane durum sistemini kararlı hale getirmek için çok zaman harcadık. Çeşitli bellek sızıntıları kaldırıldı ve kod yolları optimize edildi.

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

1.2 Uygulamasındaki Yeni Özellikler

1.2 bölgesindeki performans

1.2 için Hata Düzeltmeleri

Sürüm 1.2.0-rc03

29 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 yayınlandı. 1.2.0-rc03 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Türetilmiş durum gözlemleri daha önce yeniden derleme kapsamından ve bileşimden koşulsuz olarak birlikte kaldırılmıştı. Bu da türetilmiş durumu gözlemliyor olabilecek diğer kapsamları bozuyordu. Bu değişiklik yalnızca artık başka kapsamlarda gözlemlenmeyen türetilmiş durum örneklerini kaldırır. (b/236618362)

Sürüm 1.2.0-rc02

22 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 yayınlandı. 1.2.0-rc02 sürümü bu kayıtları içerir.

Sürüm 1.2.0-rc01

15 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-rc01 yayınlandı. 1.2.0-rc01 sürümü bu kayıtları içerir.

API Değişiklikleri

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

Sürüm 1.2.0-beta03

1 Haziran 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 yayınlandı. 1.2.0-beta03 sürümü bu kayıtları içerir.

Sürüm 1.2.0-beta02

18 Mayıs 2022

androidx.compose.runtime:runtime-*:1.2.0-beta02 yayınlandı. 1.2.0-beta02 sürümü bu kayıtları içerir.

Sürüm 1.2.0-beta01

11 Mayıs 2022

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

Yeni Özellikler

  • Bu, 1.2'nin ilk beta sürümüdür!

API Değişiklikleri

  • Deneysel Snapshot.unsafeEnter/unsafeLeave eklendi (I108f3)
  • Deneysel Snapshot.asContextElement() API'si (Iff072) eklendi
  • @ComposableTargetMarker tarafından işaretlenen @ComposableTarget ek açıklaması ve ek açıklamaları artık @file önekiyle dosya kapsamında kullanılabilir. Dosya kapsamında bir hedef ek açıklama kullanmak, derleyicinin dosyadaki tüm composable işlevlerin ilişkili uygulamayı hedeflemeyi amaçladığını varsaymasına neden olur. Örneğin, @file:UiComposable kullanıldığında tüm @Composable işlevlerinin Compose kullanıcı arayüzü uygulayıcısını hedeflediği belirtilir. Başka bir uygulayıcıyı hedeflemesi gereken bir işlev, istenen uygulayıcı için hedef işaretçi ek açıklamasını açıkça sağlamalıdır. (I40804)

Sürüm 1.2.0-alpha08

20 Nisan 2022

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

API Değişiklikleri

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

Sürüm 1.2.0-alpha07

6 Nisan 2022

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

API Değişiklikleri

  • Yeni Snapshot.withoutReadObservation { ... } işlevi eklendi. Kullanıcıların bu blok sırasında okunan durum değerlerinde yapılan değişikliklere abone olmadan geçirilen lambda'yı çalıştırmasına olanak tanır. Anlık görüntü tabanlı iş parçacığı güvenli yazma/okuma işlemlerinden yararlanmak, ancak gereksiz yeniden oluşturma 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ı. Sürüm 1.2.0-alpha06 bu kayıtları içerir.

Sürüm 1.2.0-alpha05

9 Mart 2022

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

Harici Katkı

  • Kotlinx eş 1.6.0 (I3366d) sürümünü kullanacak şekilde güncellendi

Sürüm 1.2.0-alpha04

23 Şubat 2022

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

API Değişiklikleri

  • Bir composable işlevin, kullanmak üzere tasarlanmamış bir uygulamayı hedefleyen çağrıldığında derleme zamanı raporlamasını sağlayan ComposableTarget, ComposableTargetMarker ve ComposableOpenTarget eklendi.

    Çoğu durumda ek açıklamalar, oluşturucu derleyici eklentisi tarafından tahmin edilebilir. Dolayısıyla, bu ek açıklamaların doğrudan kullanılması nadir bir durumdur. Çıkarım yapılamayan durumlar arasında özel uygulayıcı, soyut composable işlevleri (arayüz yöntemleri gibi), alanlar veya composable lambda olan genel değişkenler (yerel değişkenler ve parametreler çıkarım yapılır) oluşturup kullanmak veya ComposeNode ya da ilgili composable işlevleri kullanmak yer alır.

    Özel uygulayıcılar için ComposeNode veya ReusableComposeNode çağıran composable işlevlerin, işlev ve tümcomposable lambda parametre türleri için CompoableTarget ek açıklaması eklemesi gerekir. Bununla birlikte, ComposableTargetMarker ek açıklaması içeren bir ek açıklama oluşturmanız ve daha sonra, işaretli ek açıklamanın doğrudan ComposableTarget yerine kullanılması önerilir. ComposableTargetMarker ile işaretlenmiş bir composable ek açıklama, applier parametresi olarak özellik sınıfının tam adına sahip ComposbleTarget özelliğine eşdeğerdir. ComposableTargetMarker kullanımına ilişkin örnek için anroidx.compose.ui.UiComposable sayfasını inceleyin. (I38f11)

Sürüm 1.2.0-alpha03

9 Şubat 2022

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

API Değişiklikleri

  • Oluşturulabilir bir lambdayı, durumunu hareket ettiren bir lambdaya ve karşılık gelen düğümleri çağrıldığı yeni konuma dönüştüren movableContentOf eklendi. Önceki çağrı besteden çıktığında durum geçici olarak korunur ve lambda'ya yeni bir çağrı besteye girerse durum ve ilişkili düğümler yeni çağrının konumuna taşınır. Yeni çağrı eklenmezse durum kalıcı olarak kaldırılır ve gözlemcilerin bilgilendirildiğini unutmayın.

    Bir movableContentOf lambda aynı bileşimde birden çok kez çağrılırsa her çağrı için yeni durum ve düğümler oluşturulur. Ayrıca, çağrılar besteden ayrıldıkça ve yeni çağrılar girdikçe durum, ilk ayrılan çağrılardan gelen çağrılara çağrıldıkları sırada taşınır. Yeni çağrılar tarafından talep edilmeyen tüm eyaletler kalıcı olarak kaldırılır. (Ib4850)

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

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

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Araçların yeniden kompozisyonlar sırasında bir composable'ı tanımlayabilmesi için InternalComposeScope ekleyin. (I07a3f)

Sürüm 1.2.0-alpha02

26 Ocak 2022

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

Sürüm 1.2.0-alpha01

12 Ocak 2022

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

API Değişiklikleri

  • Layout Inspector'da sabit kimlikler oluşturmaları için CompositionData öğesine identity alanı eklendi. (Ic116e)

Bağımlılık Güncellemeleri

  • Artık Kotlin 1.6.10 hizmetini kullanabilirsiniz.

Sürüm 1.1

Sürüm 1.1.1

23 Şubat 2022

androidx.compose.runtime:runtime-*:1.1.1 yayınlandı. 1.1.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList adresindeki NullPointerException sorununu düzeltin (aosp/1947059, b/206677462)
  • Android'de panodan okuma sırasında pano içeriğinin neden kilitlenmesi düzeltildi. (I06020, b/197769306)
  • LazyVerticalGrid içinde sabit RTL (aosp/1931080, b/207510535)

Sürüm 1.1.0

9 Şubat 2022

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

1.0.0'dan sonraki önemli değişiklikler

  • Android 12 Fazla kaydırma efekti için kararlı destek
  • Dokunma hedefi boyutlandırmasıyla ilgili iyileştirmeler
  • Compose 1.0'da Material bileşenlerinin düzen alanlarını, dokunma hedefi boyutu için Materyal erişilebilirlik yönergelerini karşılayacak şekilde genişleteceğini unutmayın. Örneğin, Düğmenin boyutunu daha küçük olarak ayarlasanız bile Düğme dokunma hedefi minimum 48x48dp boyutuna genişler. Bu işlem, Compose Materyalini Materyal Tasarım Bileşenleri ile aynı davranışla uyumlu hale getirir ve Görünümler ve Oluşturma öğelerini birlikte kullandığınızda tutarlı bir davranış sağlar. Bu değişiklik, kullanıcı arayüzünüzü Material Material bileşenlerini kullanarak oluşturduğunuzda, dokunma hedefi erişilebilirliği için minimum gereksinimlerin karşılanmasını da sağlar.
  • Navigasyon Rail için kararlı destek
  • Daha önce deneysel olan bazı API'leri kararlı sürüme geçirir
  • Kotlin'in yeni sürümleri için destek

Sürüm 1.1.0-rc03

26 Ocak 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 yayınlandı. 1.1.0-rc03 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Oluşturma Materyalini (1.1.0-rc03) desteklemek için güncellendi

Sürüm 1.1.0-rc01

15 Aralık 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 yayınlandı. 1.1.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.1.0-beta04

1 Aralık 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 yayınlandı. 1.1.0-beta04 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Kotlin 1.6.0 ile uyumlu olacak şekilde güncellendi

Sürüm 1.1.0-beta03

17 Kasım 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 yayınlandı. 1.1.0-beta03 sürümü bu kayıtları içerir.

Sürüm 1.1.0-beta02

3 Kasım 2021

androidx.compose.runtime:runtime-*:1.1.0-beta02 yayınlandı. 1.1.0-beta02 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Anlık görüntü kodu birden fazla dosyaya bölündü ancak hepsi aynı JVM sınıfında kalmaya devam ediyor. (Ic6c98)

Sürüm 1.1.0-beta01

27 Ekim 2021

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

Sürüm 1.1.0-alpha06

13 Ekim 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha06 yayınlandı. 1.1.0-alpha06 sürümü bu kayıtları içerir.

API Değişiklikleri

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

Sürüm 1.1.0-alpha05

29 Eylül 2021

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

Sürüm 1.1.0-alpha04

15 Eylül 2021

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

Sürüm 1.1.0-alpha03

1 Eylül 2021

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

Yeni Özellikler

  • Compose Derleyici artık Compose Çalışma Zamanının (1.0) eski sürümlerini destekliyor. Bu değişiklikten önce Compose Derleyici yalnızca aynı sürümün veya sonraki bir sürümün Compose Çalışma Zamanı ile uyumluydu. Bu değişiklikten sonra Compose Derleyicisi daha eski bir Compose Çalışma Zamanı sürümüyle (1.0) uyumlu hale gelir. (aosp/1796968)
  • 1.1.0-alpha03 oluşturma işlemi, Kotlin 1.5.30 biçimini temel alacak şekilde güncellendi. (I74545)

Sürüm 1.1.0-alpha02

18 Ağustos 2021

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

Sürüm 1.1.0-alpha01

4 Ağustos 2021

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

Sürüm 1.0

Sürüm 1.0.5

3 Kasım 2021

androidx.compose.runtime:runtime-*:1.0.5 yayınlandı. 1.0.5 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • türvedStateOf örneklerinin kilitlenmesini izlemeyle ilgili bir sorun düzeltildi. (aosp/1792247)

Sürüm 1.0.4

13 Ekim 2021

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

Bağımlılık Güncellemeleri

  • Kotlin 1.5.31 temel alınarak güncellendi

Sürüm 1.0.3

29 Eylül 2021

androidx.compose.runtime:runtime-*:1.0.3 yayınlandı. 1.0.3 sürümü bu kayıtları içerir.

Bağımlılık Güncellemeleri

  • Kotlin 1.5.30 temel alınarak güncellendi

Sürüm 1.0.2

1 Eylül 2021

androidx.compose.runtime:runtime-*:1.0.2 yayınlandı. 1.0.2 sürümü bu kayıtları içerir.

Compose 1.0.2 sürümünü desteklemek için güncellendi. 1.0.2 oluşturma işlemi, Kotlin 1.5.21 ile hâlâ uyumlu.

Sürüm 1.0.1

4 Ağustos 2021

androidx.compose.runtime:runtime-*:1.0.1 yayınlandı. 1.0.1 sürümü bu kayıtları içerir.

Bağımlılık Güncellemeleri

  • Kotlin 1.5.21 temel alınarak güncellendi.

Sürüm 1.0.0

28 Temmuz 2021

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

1.0.0'ın temel özellikleri

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

Bilinen Sorunlar

  • Android Studio Bumblebee Canary 4 veya AGP 7.1.0-alpha04/7.1.0-alpha05 kullanıyorsanız şu kilitlenmeyle karşılaşabilirsiniz:

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

    Sorunu düzeltmek için build.gradle dosyanızda minSdkVersion değerini geçici olarak 24+ sürümüne yükseltin. Bu sorun, Android Studio Bumblebee ve AGP 7.1 sürümünün bir sonraki sürümünde düzeltilecektir. (b/194289155)

Sürüm 1.0.0-rc02

14 Temmuz 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü bu kayıtları içerir.

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

Sürüm 1.0.0-rc01

1 Temmuz 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.0.0-beta09

16 Haziran 2021

androidx.compose.runtime:runtime-*:1.0.0-beta09 yayınlandı. 1.0.0-beta09 sürümü bu kayıtları içerir.

Eklenmiş Profil Kuralları

Bu sürümde aşağıdaki oluşturma modüllerine (I14ed6) profil kuralları eklenir:

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.temel
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-dalga
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Profil kuralları nedir?

  • Bir kitaplığa ilişkin profil kuralları, src/main veya eşdeğer dizinde bulunan baseline-prof.txt metin dosyasında belirtilir. Dosya, satır başına bir kural belirtir. Bu örnekte, bir kural kitaplıktaki yöntemler veya sınıflarla eşleştirme kalıbıdır. Bu kuralların söz dizimi, adb shell profman --dump-classes-and-methods ... kullanılırken kullanılan, kullanıcılar tarafından okunabilir ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.

  • Bir yöntem kuralı aşağıdaki kalıba sahip olur:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Bir sınıf kuralı aşağıdaki kalıba sahip olur:

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

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

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

  • Tek bir kuralın birden fazla yöntemi veya sınıfı kapsamasını sağlamak için bu kalıplar joker karakterler (**, * ve ?) içerebilir.

Kurallar ne işe yarar?

  • H işaretine sahip bir yöntem, bu yöntemin "sıcak" bir yöntem olduğunu ve önceden derlenmesi gerektiğini belirtir.

  • S işaretine sahip bir yöntem, bunun başlangıçta çağrılan bir yöntem olduğunu ve derleme ile yöntemi başlatma sırasında yorumlama maliyetinden kaçınmak için önceden derlenmesi gerektiğini belirtir.

  • P işaretine sahip bir yöntem, bunun başlatma sonrasında çağrılan bir yöntem olduğunu gösterir.

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

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ştirilen kurallar, uygulamaya özel kompakt bir ikili program ART profili oluşturmak için kullanılır. Uygulama cihazlara yüklendiğinde ART, uygulamanın performansını özellikle ilk çalıştırmada iyileştirmek için uygulamanın belirli bir alt kümesini önceden derlemek amacıyla bu profilden yararlanabilir. Bu işlemin hata ayıklaması yapılabilir uygulamalar üzerinde etkisi olmayacağını unutmayın.

Sürüm 1.0.0-beta08

2 Haziran 2021

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

API Değişiklikleri

  • State<T> artık State<out T> (I69049)
  • Değişiklikleri yeniden derleme tek geçişte yeniden oluşturmayı sağlayan ControlledComposition API değişikliği. (Iaafd1, b/184173932)

Sürüm 1.0.0-beta07

18 Mayıs 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 yayınlandı. 1.0.0-beta07 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Derleyici tarafından oluşturulan kaynak bilgilerinin kaynak küçültme sırasında kaldırılmasına olanak tanıyan yeni oluşturma derleyici API'leri eklendi. (Ia34e6)
  • Anahtar değiştirildiğinde düğümleri değiştirmek yerine içeriğinde yeniden kullanmayı deneyecek ReusableContent özelliğini sunar. Anahtar değiştirildiğinde, oluşturulan düğümler ve düğümleri güncellemek için kullanılan değerler hariç, içerik için alan tablosundaki önceki değerler yoksayılır.

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

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

Hata Düzeltmeleri

  • LazyColumn/Row artık, daha önce aşağı kaydırılmış olsalar bile önceden görünür olan en fazla 2 öğeyi etkin (atılmayan) tutacak. Bu, kaydırma performansını iyileştiren yeni bir öğe oluşturmamız gerektiğinde bileşenin etkin alt kompozisyonları yeniden kullanmasına olanak verir. (Ie5555)

Sürüm 1.0.0-beta06

5 Mayıs 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 yayınlandı. 1.0.0-beta06 sürümü bu kayıtları içerir.

API Değişiklikleri

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

Sürüm 1.0.0-beta05

21 Nisan 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 yayınlandı. 1.0.0-beta05 sürümü bu kayıtları içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

  • ui-test-manifest veui-tooling-data içindeki AndroidManifest dosyaları artık Android 12 (I6f9de, b/184718994) ile uyumlu.

Sürüm 1.0.0-beta04

7 Nisan 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 yayınlandı. 1.0.0-beta04 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Bu değişiklikten önce, yerel composable işlevler parametrelerine göre atlanabilirdi. Bu değişiklikten sonra hiçbir yerel composable işlev atlanmayacak. Bu değişiklik, yerel işlevlerin üst öğeden parametreleri yakalaması yaygın ve beklenen bir uygulama olduğu ve bunların atlanması yaygın bir hata kaynağı olduğu için yapılmaktadır.

    Özetlemek gerekirse:

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

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

  • rememberSaveable() öğesinin, giriş parametreleriyle (I1b110, b/182403380) birlikte kullanıldığında eski değeri geri yüklemesi sorunu düzeltildi

Sürüm 1.0.0-beta03

24 Mart 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 yayınlandı. 1.0.0-beta03 sürümü bu kayıtları içerir.

API Değişiklikleri

  • DefaultMonotonicFrameClock desteği sonlandırıldı. MonotonicFrameClock olmadan withFrameNanos veya Recomposer.runRecomposeAndApplyChanges araması, artık IllegalStateException bildirimine yol açacaktır. (I4eb0d)

Sürüm 1.0.0-beta02

10 Mart 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 yayınlandı. 1.0.0-beta02 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Deneysel API'lerin herkese açık kullanımında kısıtlamalar uygula (I6aa29, b/174531520)
  • Gezinme-oluşturma hedefinde kullanıldığında bozuk rememberSaveable { mutableStateOf(0) } sorununu düzeltme. (I1312b, b/180042685, b/180701630)

Sürüm 1.0.0-beta01

24 Şubat 2021

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

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

API Değişiklikleri

  • Geçersiz kılınan besteleri ana çerçeve döngüsünden yeniden derlemek için Recomposer.runRecomposeConcurrentlyAndApplyChanges deneysel API ekleyin. (I342d0)
  • @ReadOnlyComposable ile işaretlenen tüm composable'lar artık yalnızca diğer @ReadOnlyComposables (I58961) koduna çağrı yaptıklarından emin olmak için derleme zamanı açısından doğrulanıyor
  • compositionLocalOf ve staticCompositionLocalOf için artık isteğe bağlı yerine defaultFactory zorunludur.

    Bu değişiklik, varsayılan fabrikanın sağlanmadığı, boş değerli olmayan türler için olası tür hatasını ortadan kaldırır. Önceden bu, null yapılamayan bir tür için boş referans sağlıyordu.

    Boş değer atanabilen türler için varsayılan fabrika ayarı olarak { null } değerini sağlayın.

    Makul bir varsayılan sağlanmadığı sürece, null yapılamayan türlere sahip yerel halkın kullanılması önerilmez. Makul bir varsayılan yoksa defaultFactory lambda bir istisna atmalıdır. Bununla birlikte, istisna uygulamak yerel tüketicilerin, tür sistemi tarafından zorunlu kılınmayan, sağlanan dolaylı bir bağımlılığa sahip olacağı anlamına gelir. (Ifbd2a)

  • Kullanımdan kaldırılan simgeler, 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ı

    • Beste oluşturucu artık anahtar parametresi kabul etmediğinden kullanımdan kaldırıldı.
    • currentCompositeKeyHash, composable üst düzey işlev yerine composable üst düzey mülke dönüştürüldü.
    • CompositionData ve CompositionGroup, androidx.compose.runtime.tooling ad alanına taşındı
    • ComposableLambda, beton bir sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
    • ComposableLambdaN, beton bir sınıf yerine arayüz haline getirilmiştir ve artık tür parametrelerine sahip değildir.
    • SnapshotFlow işlevi androidx.compose.runtime ad alanına taşındı
    • SnapshotMutationPolicy'nin birleştirme yöntemi artık deneysel değildir.
    • @TestOnly üst düzey clearRoots işlevi kaldırıldı. Buna artık gerek yoktur.
    • keySourceInfoOf ve resetSourceInfo işlevleri kaldırıldı. Artık gerekli değildir.
    • Composer.collectKeySourceBilgileri kaldırıldı. Buna artık gerek yoktur.
    • isjoinedKey, birbirine katılmışKeyLeft vejoinKeyRight yöntemleri kaldırıldı. Artık gerekli değildir.
    • Çeşitli üst düzey API'ler taşındı ve farklı dosyalar halinde yeniden düzenlendi. Kotlin’in dosya sınıfı semantiği nedeniyle bu, ikili uyumluluğu keser ancak kaynak uyumluluğunu keser. Bu nedenle çoğu kullanıcı için sorun teşkil etmeyecektir.
    • (I99b7d, b/177245490)
  • SnapshotStateObserver artık Deneysel değil (Id2e6a)

  • Daha önce kullanımdan kaldırılmış bazı API'ler silindi (Ice5da, b/178633932)

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

    • Varsayılan dolgunun özelleştirilmesine olanak tanımak için Top/BottomAppBar'a contentPadding parametresi eklendi.
    • BackdropScaffold'daki parametreler, isteğe bağlı parametrelerden önce gelen zorunlu parametreler için API yönergelerine uygun olacak şekilde yeniden sıralandı.
    • BottomNavigasyonItem öğesindeki icon parametresi, selected ve onClick değerlerinin sonrasına taşındı.
    • BottomNavigasyonItem parametresindeki alwaysShowLabels parametresi alwaysShowLabel olarak yeniden adlandırıldı.
    • Birkaç bileşendeki bodyContent parametresi yalnızca content olarak yeniden adlandırıldı.
    • ButtonDefaults.buttonColors() içindeki parametreler yeniden sıralandı. Parametrelerin türü değişmediğinden, bunun kodunuzda bir hataya neden olmayacağını lütfen unutmayın. Lütfen adlandırılmış parametreler kullandığınızdan veya sıralamayı manuel olarak güncellediğinizden emin olun. Aksi takdirde, kodunuz öncekiyle aynı şekilde çalışmaz.
    • darkColors() adlı kampanyaya secondaryVariant parametresi eklendi. Bu renk, koyu temada genellikle secondary ile aynıdır, ancak tutarlılık ve daha fazla özelleştirme için eklenir.
    • Yaygın olarak kullanılmadığı / yararlı olmadığı için ElevationDefaults ve animasyonElevation() herkese açık API yüzeyinden kaldırıldı.
    • Slider içindeki onValueChangeEnd öğesi, onValueChangeFinished olarak yeniden adlandırıldı ve boş değerli hale getirildi.
    • Tutarlılık için Snackbar içindeki text parametresi content olarak yeniden adlandırıldı.
    • Varsayılan dolgunun özelleştirilmesine olanak tanımak için DropdownMenuItem öğesine contentPadding parametresi eklendi ve content, RowScope üzerinde bir uzantı oldu.
    • 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 kayıtları içerir.

API Değişiklikleri

  • ViewGroups desteği, UiApplier'den kaldırıldı. Kullanımdan kaldırılan emitView composable'ları kaldırıldı. (Ifb214)
  • CompositionReference, CompositionContext olarak yeniden adlandırıldı (I53fcb)
  • ComponentActivity.setContent, androidx.activity:activity-compose modülündeki androidx.activity.compose.setContent konumuna taşındı. (Icf416)
  • Snapshot API, dahili uygulama sınıflarını herkese açık API'den gizlemenin yanı sıra API yönergeleriyle daha tutarlı olacak şekilde güncellendi. (Id9e32)
  • Ambiyans, Ambiyans -> CompositionLocal yeniden adlandırmasıyla eşleşecek şekilde yeniden adlandırıldı. Eskiden AmbientFoo adı verilen ambiyanslar artık CompositionLocals olarak LocalFoo olarak adlandırılıyor. (I2d55d)
  • Ambient, CompositionLocal ve ambientOf / staticAmbientOf öğesi sırasıyla ComposerOf / staticCompositionLocalOf olarak yeniden adlandırıldı. Bu değişiklik, CompositionLocal'ın amacını daha net hale getirmeye yardımcı olur: beste için yerel değerler sağlama / alma mekanizması. CompositionLocal örneklerinde Local önekinin kullanılması gerekir; ör. val LocalFoo = isationLocalOf { Foo() }. (Ia55b6)
  • TakeMutableSnapshot ve TakeSnapshot, Snapshot’ın tamamlayıcı yöntemleri haline geldi. (I91f19)
  • @ComposableContract kullanımdan kaldırılmış ve üç spesifik ek açıklama kullanıma sunulmuştur.

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

  • emptyContent() ve (@Composable () -> Unit).orBlank() yardımcı programları, artık performans üzerinde herhangi bir olumlu etkisi veya değeri olmadığı için kullanımdan kaldırılmıştır (I0484d)

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

  • Yeniden toplayıcılar artık kapatılabilir. Kapalı yeniden düzenleyiciler, beste alt eş yordamları tamamlanana kadar yeniden oluşturma işlemine devam eder. Recomposer.shutDown, kapatma işlemiyle kontrast oluşturmak üzere iptal edilecek şekilde yeniden adlandırıldı. (Ib6d76)

  • compose:runtime-dispatch yapısı kullanımdan kaldırıldı. MonotonicFrameClock artık write:runtime'da, AndroidUiDispatcher ise Composer:ui'de bulunabilir. (Ib5c36)

  • Compose derleyici eklentisinin hedeflediği API, beton sınıf yerine arayüz kullanacak şekilde yeniden düzenlendi. Arayüz artık "type" parametresi kullanmamaktadır.

    Bu, kaynak kodu uyumluluğunu etkilememesi gereken dahili bir değişikliktir. Ancak ikili programlara zarar veren bir değişikliktir. (I3b922, b/169406779)

  • SnapshotMutableState kullanıma sunuldu (Icfd03)

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

  • Recomposer.current() kaldırıldı. [Abstract]ComposeView artık varsayılan olarak pencere için ViewTreeLifecycleOwner tarafından yönlendirilen, geç oluşturulmuş, pencere kapsamlı Recomposer'ları kullanıyor. Yeniden oluşturma ve withFrameNanos tabanlı animasyon onay işaretleri, ana makine Yaşam Döngüsü durdurulurken duraklatılır. (I38e11)

  • Recomposer.runningRecomposers artık süreçte devam eden beste durumunu gözlemlemek için küresel bir RecomposerInfo salt okunur StateFlow'u sunuyor. Artık kullanımdan kaldırılmış olan Recomposer.current() için bu API'yi tercih edin. (If8ebe)

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

Sürüm 1.0.0-alpha11

28 Ocak 2021

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

API Değişiklikleri

  • onCommit, onDispose ve onActive desteği sonlandırıldı ve yerini SideEffect ve DisposableEffect API'leri (If760e) aldı.
  • emit() API ve tüm aşırı yüklemeler kullanımdan kaldırıldı ve ComposeNode olarak yeniden adlandırıldı. API'ler aynıdır. Compose'un (I4137b) adlandırma kurallarına uyması için farklı bir adları vardır.
  • inverify ve engagementReference() işlevleri artık sırasıyla currentRecomposeScope ve remindersCompositionReference koduyla kullanımdan kaldırılmıştır. (I583a8)
  • ThankObserver, CompositionLifecycleObserver'ın yerini almıştır. CompositionLifecycleObserver için de destek sonlandırılmıştır.

    RememberObserver, CompositionLifecycleObserver yerine değiştirilmiş anlamlar ve yeniden adlandırılmış yöntemler kullanır. Yalnızca bir kez hatırlanan ve önerilen uygulama olmaya devam eden nesneler için mekanik olarak yeni API'ye geçiş yapılabilir. Bununla birlikte, bir referans bir bestede birden çok kez hatırlandıysa her bir referans için onRemembered çağrılır. Burada, onEnter yalnızca bir kez çağrılır. Nesne alt kompozisyonlarda kullanılmışsa onEnter birden çok kez çağrıldı (örneğin, WithConstraints ve Scaffold) tek onEnter çağrısı garantisini güvenilmez hale getiriyor ve RememberObserver için kaldırıldı.

    RememberObserver, RememberObserver örneğinin remember öğesine iletilen geri çağırmadan döndürülmesi durumunda çağrılan onAbandoned ifadesini ekler. Ancak bu işlev, bileşim durumunda hatırlanmaz ve bu nedenle, hiçbir zaman onRemembered çağrılmaz. Bu durum, beste tamamlanmadan önce bir istisnanın sonlandırılması veya bestenin artık güncel olmadığı ya da başka bir şekilde gerekli olmaması nedeniyle bestenin çıkarılması durumunda meydana gelebilir. Yukarıdaki tek referans önerisini izleyen RememberObserver örneğinin hem onForgotten hem de onAbandoned harici bir kaynağı izlemesi, kaynağa artık ihtiyaç duyulmadığını gösterir. Nesne, onRemembered çağrılırsa çağrılmayacağı için onAbandoned, başlatılan işleri veya onRemembered içinde ayrılan kaynakları izliyorsa yoksayılabilir. (I02c36)

  • collectAsState() işlevlerini satır içi olarak işaretleme (Ia73e4)

Hata Düzeltmeleri

  • WithConstraints, BoxWithConstraints olarak yeniden oluşturulması ve foundation.layout'a taşındı. (I9420b, b/173387208)
  • Testlerde TestCoroutineDispatcher'dan yararlanma (I532b6)

Sürüm 1.0.0-alfa10

13 Ocak 2021

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

Çarpıcı Değişim

  • Dahili derleyici API'sinin yeniden yapılandırılması, bileşim sonucunda oluşturulan düğümlerde tüm @Composable işlevleri tamamlandıktan sonra değişikliklerin "değişiklikleri uygula" bileşimi aşamasında toplu olarak işlenmesini sağlar.

    Bu, değişiklikler uygulanana kadar dahili ve deneysel API'lerde artık düğümler mevcut olmadığı için uygulama kodunu etkileyebilecek olumsuz bir davranış değişikliğidir. Bu, genellikle kodun yürütülmesini, düğümler oluşturulup başlatılıncaya kadar ertelemek için bir SideEffect composable'ında bu tür bağımlılıklarla kod yuvarlanarak çözülebilir. (I018da)

API Değişiklikleri

  • Toplayıcının değişiklikleri uygulayıp uygulamadığını izlemek için bir yol eklendi. (I1b3e2)
  • [Abstract]ComposeView API'lerini genişleterek Compose tabanlı görünümlerin geri dönüştürülmesini sağlayın ve bu görünümleri daha sonra yeniden oluşturmak üzere elden çıkarın. Alt besteler oluşturmak için pencere kapsamlı Recomposer ve CompositionReferences öğelerini yüklemek ve keşfetmek için API'ler ekleyin.

    [Abstract]ComposeViews öğelerinin beste yok etme stratejisini yapılandırmak için ViewCompositionStrategy'yi ekleyin. Varsayılan davranış pencere ayırmada yok etme şeklindedir. (I860ab)

Hata Düzeltmeleri

  • Recomposer artık geçerli durumunun bir Akışını sunarak etkinliğinin ve ilişkili efektlerin izlenmesine olanak tanıyor. (Ifb2b9)
  • Yerel keyEvent'e artık keyEvent.nativeKeyEvent üzerinden (I87c57, b/173086397) erişilebilir.

Sürüm 1.0.0-alpha09

16 Aralık 2020

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

API Değişiklikleri

  • Genel API'den SlotTable, SlotReader ve SlotWriter kaldırıldı. Bunlar daha önce InternalComposeAPI olarak işaretleniyordu. Artık oluşturma modülünün dahilindedirler.

    Kullanıcı arayüzü araçları API'sinin kompozisyon bilgilerini çıkarmak için kullanılması amacıyla CompositionData ve CompositionGroup eklendi. Bunlar herkese açıktır ancak kullanıcı arayüzü araçları API'sinin yorumladığı ham bilgileri sağladığı için (I31a9c) kullanıcı arayüzü araçları API'sinin dışında kullanılması amaçlanmamıştır.

  • Uygulamacı sınıfı artık (Id85b0) olarak kabul edilmiyor

  • Applier arayüzü, ağaç oluşturmayı yukarıdan aşağı değil, aşağıdan yukarıya basitleştirecek şekilde değiştirildi.

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

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

    Uygulama geliştiricileri, düzenlediği ağaca düğüm ekleme işlemi için hangisinin daha iyi performans gösterdiğine bağlı olarak insertTopDown() veya insertBottomUp() seçeneklerini kullanır.

    LayoutNode ve View gibi bazı ağaçlar, aşağıdan yukarıya doğru inşa etmekte yukarıdan aşağıya doğru çok daha etkilidir. Bu değişiklikten önce, performans için aşağıdan yukarıya yapı gerektiren her uygulamaya kopyalanan, aşağıdan yukarıya doğru bir ekleme yığını gerekiyordu. Bu değişiklikle birlikte bir Applier, ağacı aşağıdan yukarıya oluşturmak için insertBottomUp() öğesini, yukarıdan aşağıya doğru derlemek için de insertTopDown() politikasını geçersiz kılar. (Icbdc2)

  • Compose, composable çağrılar yapabilen mülk alıcılarını destekler. Bu konuyla ilgili destek kaldırılmıyor, ancak bir özellik alıcıyı @Composable olarak tanımlamak için kullanılan söz dizimi değişiyor.

    Bu işlemi gerçekleştirmek için kullanımdan kaldırılmış olan söz dizimi, özelliğin kendisine ek açıklama eklemekti:

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

    Bunu yapmak için şu an doğru olan söz dizimi, özelliğin getter'ine ek açıklama eklemektir:

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

    Her iki söz dizimi de bir süre çalışacaktır, ancak kullanımdan kaldırılan eski söz dizimi zaman içinde derleme hatası haline gelir. (Id9197)

Hata Düzeltmeleri

Sürüm 1.0.0-alpha08

2 Aralık 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 yayınlandı. 1.0.0-alpha08 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Oluşturma yönergeleriyle tutarlılığı kontrol etmek amacıyla, composable lambda parametresi adlandırma ve konumu için lint denetimi eklendi. Ayrıca, hata analizi ve yönlendirmelerine uygun şekilde, sonraki lambda'nın adı olarak children kullanan bazı API'leri content konumuna taşıdı. (Iec48e)
  • Recomposer artık EmbeddingContext kabul etmiyor. Gerekli planlama bağımlılıkları, efektCoroutineContext'ten alınır. FrameManager desteği sonlandırıldı; platform entegrasyonları kendi genel anlık görüntü işlemelerini başlatmalıdır. (I02369)
  • RestorableStateHolder.withRestorableState işlevi, RestorableStateProvider (I66640) olarak yeniden adlandırıldı

Hata Düzeltmeleri

  • Kullanımdan kaldırılmış Ambiyanslar ve Compose API kurallarına uyarak son eki Ambient olan Ambiyans sonekleri, ön ekinde Ambiyans olan yeni özelliklerle değiştirildi. (I33440)
  • Eski kullanıcı arayüzü testi modülünü ve saplamalarını kaldırın (I3a7cb)

Sürüm 1.0.0-alpha07

11 Kasım 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 yayınlandı. 1.0.0-alpha07 sürümü bu kayıtları içerir.

Yeni Özellikler

API Değişiklikleri

  • @UnionType ek açıklaması kullanımdan kaldırıldı (I57cde)
  • Ambiyans sağlama işlevi için alternatif olarak allowDefault eklendi ve yalnızca önceden bir ortam değeri sağlanmadığı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 LaunchedEfektine izin verilmez. (Ifd3d4)
  • Başvuru sahibinin, artık, Composer ağa değişiklik uygulamaya başladığında/bittiğinde çağrılan onBeginChanges/onEndChanges geri çağırmalarına sahiptir. Bunlar, gerekirse kaynak yönetiminin toplu olarak işlenmesi için kullanılabilir. (Icf476)
  • Recomposer artık yapım aşamasında CoroutineContext gerektirir (Ic4610)
  • Dahili SlotTable uygulamasında yapılan ve genel API'yi etkilememesi gereken değişiklikler. (If9828)
  • Başlangıç değerini almayan, kullanımdan kaldırılmış rxjava2 bağdaştırıcıları kaldırıldı (Idb72f)

Hata Düzeltmeleri

  • foundation.Text desteği sonlandırıldı ve text.Text ile değiştirildi. Temadaki değerleri kullanmayan, temel ve yorumsuz bir metin API'si için androidx.compose.foundation.BasicText adresine bakın. (If64cb)
  • BaseTextField desteği sonlandırıldı. Bunun yerine BasicTextField politikasını kullanın. (I896eb)
  • Düzenle ilgili çeşitli simgeler androidx.compose.ui'den androidx.compose.layout.ui konumuna taşındı. (I0fa98, b/170475424)

Harici Katkı

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

Sürüm 1.0.0-alpha06

28 Ekim 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha06 yayınlandı. 1.0.0-alpha06 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Recomposer artık bir CompositionReference ve geçerli bir beste üst öğesi. Açık Recomposer artık daha az yerde gerekli. (I4036f)
  • SideEffect'e DisposableEffect API'si eklenerek onCommit-with-params rolü zorunlu onDispose ile dolduruldu.
    • Yeniden oluşturma işleminden elde edilen verileri, DisposableEffects veya LaunchedTasks gibi devam eden ya da uzun ömürlü işlemlere yayınlamak için YesUpdatedState API eklendi.
    • (Id50b9)
  • MutableVector artık RandomAccess'ı uyguluyor (I85d73, b/170461551)
  • Bestenin yan efektlerini bestenin yönettiği nesnelere uygulamak için SideEffect composable eklendi. SideEffect'in onCommit composable'ın yerini alması amaçlanmıştır. (Ia77c2)
  • Yeni deneysel API RestorableStateHolder. Alt ağaç için [savedInstanceState] ve [rememberSavedInstanceState] ile tanımlanan durumun kaydedilmesine olanak tanır. Bu sayede, alt ağacın elden çıkarılmasından önce geri yüklenen durumla yeniden oluşturulur. (I66884, b/166586419)

Hata Düzeltmeleri

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

Sürüm 1.0.0-alpha05

14 Ekim 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 yayınlandı. 1.0.0-alpha05 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Deneysel Modifier.pointerInput askıya alma giriş değiştiricisi (Ia77d2)
  • LazyColumn/Row için kaydırma performansı, her kaydırmada alt kompozisyon üzerinde daha az işlem yapılarak iyileştirildi. Kompozisyon sınıfı için yeni hasClicks() yöntemi eklendi. Recomposer'daki hasPendingChanges() yöntemi has Invalidations() (Ib2f32, b/168293643, b/167972292, b/165028371) olarak yeniden adlandırıldı
  • Zaman içinde tek bir State<T> değerini güncelleyen bileşimden eş yordamlar başlatmak için generateState API'si ekleyin (Id4a57)
  • LaunchInComposition, Compose API yönergeleriyle eşleşmesi için LaunchedTask olarak yeniden adlandırılır (I99a8e)
  • Özel Düzenler'deki Place() çağrılarının sırası artık alt öğeler için çizim sırasını tanımlıyor (Ibc9f6)

Sürüm 1.0.0-alpha04

1 Ekim 2020

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

API Değişiklikleri

  • Artık geçerli olmadığında düzenin toplanmasına ve gözlem kapsamları çizimine izin vermek için OwnerScope eklendi. (Ic4cf8)
  • Diğer Durum nesnelerini (If758b) okuyabilen (ve bundan türetebilen) bir hesaplamaya dayalı Durum nesneleri oluşturmak için türvedStateOf API'si eklendi
  • SnapshotStateObserver için TestOnly API (I6e2a9) eklendi

Hata Düzeltmeleri

  • foundation.Box kullanımdan kaldırıldı. Lütfen bunun yerine foundation.layout.Box kullanın. (Ie5950, b/167680279)

Sürüm 1.0.0-alpha03

16 Eylül 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 yayınlandı. 1.0.0-alpha03 sürümü bu kayıtları içerir.

API Değişiklikleri

  • CompositionCoroutineScope artık MonotonicFrameClock uygulamasını kullanmıyor. withFrameNanos işlevini çağıranların üst düzey işlevi açıkça içe aktarması gerekir. (Icb642, b/166778123)

Hata Düzeltmeleri

  • onNode veya waitForIdle gibi küresel test işlevleri kullanımdan kaldırıldı. Lütfen ComposerTestRule'da (I7f45a) tanımlanan yeni eşdeğerlerine taşıyın
  • launchInComposition, artık gönderilmemiş eşleri kullanıma sunmamaktadır (Ief6af, b/166486000)

Sürüm 1.0.0-alpha02

2 Eylül 2020

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

API Değişiklikleri

  • Anlık görüntü veri değişikliklerini almak ve üretmek için snapshotFlow ve withMutableSnapshot API'leri ekleyin. (I3e722)
  • composable işlevler için çağrı kuralı değişti. Bu, zarar veren bir ikili değişimdir. Tüm kitaplıklar, oluşturma derleyici eklentisinin bu sürümüyle çalışacak şekilde yeniden derlenmelidir.

    Değişen tek API'ler açık bir etkinleştirmeye sahip derleyici API'leri olduğundan bu değişiklik kaynak düzeyinde zarar veren bir değişiklik oluşturmaz. (I7afd2, b/158123185)

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

  • onPreCommit kullanımdan kaldırıldı; onCommit artık onPreCommit davranışına sahiptir.

    onCommit ve onActive artık bir sonraki koreograf karesinin başında değil, bestenin kaydedildiği koreograf karesinde çalışıyor. (I70403)

Sürüm 1.0.0-alpha01

26 Ağustos 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 yayınlandı. 1.0.0-alpha01 sürümü bu kayıtları içerir.

Sürüm 0.1.0-dev

Sürüm 0.1.0-dev17

19 Ağustos 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 yayınlandı. 0.1.0-dev17 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Özel Emit'ler artık bir veya daha fazla ayarlayıcının emit'ten bağımsız olarak atlanıp yeniden derlenebileceğini bildirebiliyor. (İbbd13)
  • Kullanımdan kaldırılan FrameManager çağrıları kaldırıldı.

    Dahili oluşturma API'leri, mutableStateof() (I80ba6) gibi durum nesnelerini izlemek için kullanılan ek yük miktarını azaltacak şekilde değiştirildi

  • Artık state { ... } composable'ı kullanımdan kaldırılarak yerine açık remember { mutableStateOf(...) } çağrısı yapılması gerekiyor. Bu, genel API yüzeyini ve durum yönetimiyle ilgili kavramların sayısını azaltır ve sınıf özelliği yetkisi için by mutableStateOf() kalıbıyla eşleşir. (Ia5727)

  • Flow.collectAsState artık varsayılan olarak Dispatchers.Main'i kullanmak yerine bestenin kendisinden varsayılan görev dağıtıcıyı belirliyor. (I9c1d9)

  • For döngüsü içinde durumu kaydeden bir şey kullanıldığında kilitlenme. SaveInstanceState()'te aynı anahtara sahip olmaya artık izin veriliyor. UiSavedStateRegistry API'si artık bu yeni gereksinime göre ayarlanmıştır (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

Hata Düzeltmeleri

  • emitView desteği sonlandırıldı. Compose içinde Görünümler yayınlamak için mümkünse bunun yerine AndroidView kullanın. Görünüm ve Görünüm Gruplarının doğrudan oluşturulmasının, bunlar bile oluşturma ağacında bırakılmadığı sürece gelecekte desteklenmeyeceğini unutmayın. Bu işlem AndroidView kullanılarak yapılabilir. (I29b1e, b/163871221)

Sürüm 0.1.0-dev16

5 Ağustos 2020

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

API Değişiklikleri

  • mutableStateOf(), ambientOf() ve savedInstanceStateOf() öğelerinin varsayılan dönüşüm politikası referentialEqualityPolicy() yerine structuralEqualityPolicy() olarak değiştirildi.

    Bir mutableStateOf() örneğine atanan yeni bir değerin değişiklik olarak kabul edilip edilmeyeceğine karar vermek için kullanılan varsayılan değer, artık === yerine == kullanılır.

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

    ambientOf() ve savedInstanceStateOf(), mutableStateOf() ile tutarlı olması için uygulamalarında mutableStateOf() kullanıyor.

    Yapısal eşitlik, geliştiricilerin beklentileriyle daha iyi eşleşiyor.

    Örneğin,

    val state = mutableStateOf(1f)
    

    ardından,

    state.value = 1f
    

    artık state için bir değişiklik olarak kabul edilmez ve beste sırasında state kullanımının yeniden oluşturulması gerekmez.

    Bu, zarar veren bir değişikliktir ancak çoğu durumda (equals()'i geçersiz kılmayan sınıflar kullanılırken) uygulama üzerinde fark edilebilir bir etkisi olmaz.

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

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

  • Row ve Column artık satır içi işlevlerle bunları kullanmanın ek yükünü önemli ölçüde azaltıyor. (I75c10)

Hata Düzeltmeleri

  • setViewContent desteği sonlandırıldı. Bunun yerine setContent kullanılmalıdır. (I7e497, b/160335130)
  • Yeni eş yordam tabanlı saatler ile eski geri çağırmaya dayalı saatleri kullanmaya devam eden API'ler arasındaki boşluğu doldurmak için bir AnimationClockObservable olarak MonotonicFrameClock kullanmanızı sağlayan MonotonicFrameAnimationClock eklendi.

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

  • Modifier.stateDraggable tamamen yeniden düzenlendi ve Modifier.swipeable olarak yeniden adlandırıldı. Yeni bir ScrollableState sınıfı kullanıma sunuldu ve DrawerState ile BottomDrawerState sınıfını devralacak şekilde yeniden düzenlendi. [Modal/Bottom]DrawerLayout artık onStateChange parametresini kullanmıyor. (I72332, b/148023068)

  • Modifier.plus kullanımdan kaldırıldı, bunun yerine Modifier.then kullanın. "Ardından" daha güçlü bir sipariş sinyaline sahiptir. Ayrıca, zinciri bozan ve okunması daha zor olan Modifier.padding().background() + anotherModifier yazmayı da yasaklar (Iedd58, b/161529964)

  • SubcomposeLayout eklendi. Alt ağaç bileşimi ölçümü sırasında yalnızca daha sonra kullanılabilen bazı değerleri kullanmak istiyorsak ölçüm sırasında alt öğelerin oluşturulmasına olanak tanıyan düşük seviyeli bir temel öğedir. Örneğin, SubcomposeLayout kullanılarak WithConstraints uygulanmaz. (I25cc8)

  • Material FilledTextField, TextField olarak, temel TextField'in adı ise BaseTextField olarak değiştirildi. Böylece, istenen API'nin en basit şekilde keşfedilip kullanılmasını kolaylaştırdı (Ia6242, b/155482676)

  • Modifier.drawBackground, Modifier.background olarak yeniden adlandırıldı (I13677)

Sürüm 0.1.0-dev15

22 Temmuz 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 yayınlandı. 0.1.0-dev15 sürümü bu kayıtları içerir.

Bağımlılıkları Güncelleme

  • Compose'un 0.1.0-dev15 sürümünü kullanmak için bağımlılıklarınızı yukarıda Bağımlılık bildirme bölümünde gösterilen yeni kod snippet'lerine göre güncellemeniz gerekir.

API Değişiklikleri

  • @Model ek açıklaması kullanımdan kaldırıldı. Alternatif olarak state ve mutableStateOf alanını kullanın. Bu kullanımdan kaldırma kararı, ayrıntılı bir tartışma sonrasında alınmıştır.

    Gerekçe

    Gerekçe, bunlarla sınırlı olmamakla birlikte aşağıdakileri içerir:

    • API yüzey alanını ve öğretmemiz gereken kavramları azaltır
    • Diğer benzer araç setleriyle daha uyumludur (Swift UI, React, Flutter)
    • Geri alınabilir karar. @Model hizmetini daha sonra dilediğiniz zaman geri getirebiliriz.
    • @Model ürününün, özellikle ilgilenmemiz gereken durumlar olarak yapılandırılmasına ilişkin soruları ve cevaplanması zor soruları kaldırır.
    • @Model veri sınıfı, eşittir, karma kodu vb.
    • Bazı mülklerim "gözlemlenir"ken bazılarında nasıl olmaz?
    • Gözlemde kullanılacak yapısal ve referanssal eşitliği nasıl belirtirim?
    • Sistemdeki “sihri” azaltır. Bir kişinin sistemin olduğundan daha akıllı olduğunu (ör. bir listeyi nasıl farklılaştıracağını bildiği) varsayma olasılığını azaltır
    • Gözlem ayrıntı düzeyini daha sezgisel hâle getirir.
    • Sınıftaki değişken -> özelliğinden yeniden yapılandırılabilirliği iyileştirir
    • Duruma özel el yapımı optimizasyonlar yapma potansiyeli yaratır
    • Ekosistemin geri kalanıyla daha yakın uyum içindedir ve sabit durumumuz ya da bizim "değişken durumu benimseme" yönündeki belirsizliği azaltır

    Taşıma Notları

    Mevcut @Model kullanımlarının neredeyse tamamı, oldukça küçük çaplı bir şekilde iki ş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ı vardır ve bu sınıf bir composable'da kullanılmıştır.

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

    1. alternatif: State<OriginalClass> kullanarak kopya oluşturun.

    Kotlin'in veri sınıfları sayesinde bu yaklaşım daha kolay hale getirilmiştir. Temelde, önceki tüm var özelliklerini bir veri sınıfının val özelliklerinde yapın, ardından remember yerine state kullanın ve durum değerini, copy(...) veri sınıfı kolaylık yöntemini kullanarak orijinalin klonlanmış kopyalarına atayın.

    Bu yaklaşımın yalnızca, State örneğinin oluşturulduğu kapsamda söz konusu sınıf üzerinde yalnızca mutasyonlar yapıldığında işe yarayacağını unutmayın. Sınıf, kullanım kapsamı dışında kendi içinde kendi kendine dönüşüm gerçekleştiriyorsa ve bunun gözlemine güveniyorsanız, kullanacağınız yaklaşım bir sonraki yaklaşım olacaktır.

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

    2. Alternatif: mutableStateOf ve mülk delegelerini kullanın

    Bu yaklaşım, Kotlin’in mülk yetkilileri ve kompozisyon dışında MutableState örnekleri oluşturmanıza olanak tanıyan mutableStateOf API ile daha kolay hale getirildi. Esasen, orijinal sınıfın tüm var özelliklerini var mülkleriyle değiştirin ve mülk yetkisi verilen mutableStateOf mülklerini kullanın. Bu, sınıfın kullanımının hiçbir şekilde değişmeyecek; yalnızca dahili uygulamada değişiklik sağlaması gibi bir avantaja sahiptir. Bununla birlikte, her mülk artık ayrı ayrı gözlemlendiği/abone olduğu için davranış orijinal örnekle tamamen aynı değildir. Bu nedenle, bu yeniden düzenleme işleminden sonra göreceğiniz yeniden düzenlemeler daha dar kapsamlı olabilir (iyi bir şey).

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

    (I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/924}b/924}

  • Compose derleyicisinin kod oluşturma stratejisini değiştirir. Değişiklikten önce, oluşturma derleyicisi çağrıları composable işlevlere dönüştürüyordu. Bu değişiklikle birlikte, composable fonksiyonunun gövdesini dönüştürüp çağrı sitesini (çoğunlukla) değiştirmeden bırakıyoruz.

    Bu, yazma çalışma zamanıyla iletişim kuran mantığın büyük bölümünün, çağrı sitesi yerine işlev gövdesinin başlangıcında gerçekleştiği anlamına gelir.

    Bu, tüm oluşturma kullanımı için kaynakla uyumlu bir değişiklik olmalıdır. Bu değişikliğin ardından, yazma kullanıcılarının çoğunun herhangi bir kodu güncellemesi gerekmez.

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

    Oluştur özelliği artık varsayılan bağımsız değişkenleri de composable bir işleve dönüştürüyor. Bunu, işlevin kendisinin ek bir sentetik varsayılan aşırı yüklemesi olmadan yapar; böylece bu değişiklik daha az işlevin tanımlanmasına neden olur.

    Aşağıdaki durumlardan kaynaklanan bilinen kasıtlı davranış değişiklikleri:

    1. Bazı aramalar daha önce atlamadıkları noktalara atlanır
    2. Varsayılan bağımsız değişken ifadelerindeki composable ifadeler artık doğru şekilde abone olundu ve işlendi

    Bu çalışma kapsamında bazı optimizasyonlar yapıldı: 1. Parametre karşılaştırmalarının sonucu, çağrı grafiği aracılığıyla diğer composable fonksiyonlara aktarılır. Bu, çalışma zamanında daha az karşılaştırmaya neden olur, slot tablosu boyutunu küçültür ve daha önce atlanmamış composable işlevlerin daha fazla atlanmasını sağlar 2. Derleme zamanında "statik" olduğu belirlenen parametreler artık çalışma zamanında karşılaştırılmaz veya depolanmaz. Böylece karşılaştırma sayısını azaltıp slot tablosu boyutunu küçültebilirsiniz. 3. İşlevlerin gövdesinin kontrol akışı yapısı, oluşturulan grup sayısını en aza indirmek için kullanılır. Bu, slot tablosu boyutunu küçültür ve çalışma zamanında daha az iş yapılmasına neden olur 4. İşlevlere yönelik kullanılmayan gönderme ve alıcı parametreleri, işlevin gövdesinde kullanılmadıkları takdirde işlevin atlanabilirliğini belirlemeye dahil edilmez.

    Zarar veren değişikliklerin çoğu, derleyicinin doğrudan hedeflediği API'ler içindi ve tipik oluşturma kullanımı bu durumdan etkilenmeyecek: 1. Composer::startExpr kaldırıldı 2. Composer::endExpr kaldırıldı 3. Composer::call kullanımdan kaldırıldı 4. key öğesinin değişken olmayan aşırı yüklemeleri kaldırıldı. Bundan sonra vararg sürümünü kullanın. 5. Pivotal ek açıklaması kullanımdan kaldırıldı. Yedek olarak key kullanın. 6. ScopeUpdateScope::updateScope değeri, Function1 yerine bir Function3 öğesi beklenecek şekilde değiştirildi. 7. restartableFunction ve yeniden başlatılabilirFunctionN, ek derleme zamanı parametreleri içerecek şekilde güncellendi (I60756, b/143464846)

  • MutableVector'a SortWith ve removeRange eklendi (Icccf7)

  • CompositionLifecycleObserver için varsayılan yöntem uygulamaları eklendi (I24289)

  • Applier artık kompozisyonları atmak için clear() yöntemi gerektiriyor (Ibe697)

  • Tüm listenin kopyalanmasına gerek kalmadan herkese açık API'ye iletilmesine olanak tanımak için asMutableList(), MutableVector'a eklendi. (I298df)

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

  • MutableVector, standart Koleksiyon arayüzlerinin hiçbirini uygulamayan yeni bir koleksiyondur. Bu koleksiyon, diğer gereksinimlerin üzerinde hız sunar ve yalnızca şirket içi uygulamalarda kullanılmak üzere tasarlanmıştır. (I8ebd6)

  • Kotlin oluşturma sürümünde sorun olmaması 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 sunulacak.

    SnapshotStateList ve SnapshotStateMap şu anda herkese açık ancak StableMutableList ve StableMutableMap geri yüklendikten sonra kullanımdan kaldırılacak. (Ia7769)

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

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

  • RedirectableFunction ve ilişkili API'ler, ComposableLambda vb. olarak yeniden adlandırıldı. Bu API'ler yalnızca derleyici tarafından hedeflendiği için bu durum kaynak düzeyi uyumluluğunu normal şekilde etkilemeyecektir. Yeniden adlandırma esasen, bu sınıfın yığın izlemelerde gösterildiğinde hangi sınıfın daha iyi olduğunun bilinmesini sağlamak amacıyla yapılmıştır (I7eb25)

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

  • Ambient<T> artık @Immutable yerine @Kararlı oldu (I0b4bb)

  • Bu değişiklikten önce, bir @Composable işlevi (I5205a, b/158123804) varsa oluşturma derleyici eklentisi, bir @Composable işlevinin içindeki kuruculara yapılan çağrılarda önemsiz bir şekilde engelleniyordu.

  • Recompose composable artık yararlı bir soyutlama değil. Yeniden oluşturma işlemlerinin çoğu MutableState atamaları sonucunda gerçekleştirilmelidir. Bunun dışındaki her şey için geçerli kapsamın yeniden oluşturulmasını tetiklemek üzere invalidate işlevini kullanmanız önerilir. (Ifc992)

  • Gözlem artık yararlı bir soyutlama değil. Kodu çoğaltmanız gerekiyorsa, composable lambda parametresini yürüten composable bir işlev oluşturarak uygulanarak çoğaltılabilir. Örneğin, @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • @Direct kullanımdan kaldırılmış ve bunun yerine @ComposableContract(restartable=false) özelliği devreye alınmıştır (If4708)

  • Kısa süre önce kullanıma sunulan StateFlow için, döndürülen Durum'un null yapılamayan durumlarda başlangıç değerinin önceden doldurulmasına olanak tanıyan bir bağdaştırıcı eklendi (I61dd8, b/156233789)

  • Akış için bağdaştırıcı eklendi. Kullanım örneği: flow.collectAsState() tarafından kullanılan val değeri (If2198, b/153375923)

  • [Mutable]Eyalet mülk delege operatörleri, Kotlin 1.4 mülk yetkilendirmesi optimizasyonlarını desteklemek için uzantılara taşındı. Arayanların by state { ... } veya by mutableStateOf(...) kullanmaya devam etmek için içe aktarma işlemleri eklemeleri gerekir. (I5312c)

  • androidx.compose.ViewComposer, androidx.ui.node.UiComposer androidx.compose.Emittable'a taşındı. ComponentNode ile yedekliyordu. androidx.compose.ViewAdapters kaldırıldı. Bunlar artık desteklenen bir kullanım alanı değildir. Compose.composeInto kullanımdan kaldırıldı. Bunun yerine setContent veya setViewContent kullanın. Compose.disposeComposition kullanımdan kaldırıldı. Bunun yerine, setContent tarafından döndürülen Composition üzerindeki 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 ComponentNode#emitMode0 olarak yeniden adlandırıldıComponentNode#removeAt#emitMode0 olarak yeniden adlandırıldı

  • ComposeFlags.COMPOSER_PARAM işareti, oluşturma eklentisi için kod oluşturma stratejisini değiştirecek şekilde true olarak güncellendi. Yüksek düzeyde bu durum, @Composable işlevlerinin ek bir sentetik parametreyle oluşturulmasına neden olur. Bu parametre, çalışma zamanının yürütmeyi düzgün bir şekilde yönetebilmesi için sonraki @Composable çağrılarına geçirilir. Bu, ikili programlarda önemli bir bozulma değişikliği olsa da, onaylı tüm oluşturma işlemlerinde kaynak düzeyinde uyumluluğun korunması gerekir. (I7971c)

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

  • ui-livedata eklendi: LiveData için bağdaştırıcıya sahip yeni yapı. Kullanım örneği: liveData.observeAsState() tarafından kullanılan val değeri (Ie9e8c, b/150465596)

  • Açık bir başlangıç değeri olmayan Rx adaptörleri kullanımdan kaldırılmıştır. Null kullanmak her zaman en iyi varsayılan yöntem değildir. Örneğin, bir Listeniz varsa emptyList() veya başka bir makul varsayılan (I00025, b/161348384) ile başlamak daha iyidir.

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

  • savedInstanceState() artık null özellikli türlerle kullanılabilir (I6847f, b/153532190)

  • Özel Tasarrufu nesneleri yazmayı kolaylaştıran yeni listSaver() ve mapSaver() özellikleri (I8cf68, b/152331508)

  • Yeni işlevler: savedInstanceState() ve remindersSavedInstanceState(). Bunlar, state() ve reminders() işlevine benzerdir ancak şurada kaydedilmiş bir örnek durum desteği derlemesi içerir (If1987, b/152025209)

Hata Düzeltmeleri

  • runOnIdleCompose, runOnIdle (I83607) olarak yeniden adlandırıldı
  • LayoutNode deneysel API'sı yapıldı (I4f2e9)
  • androidx.ui.foundation.TextFieldValue ve androidx.ui.input.EditorValue kullanımdan kaldırıldı. Bu türü kullanan TextField,FilledTextField ve CoreTextField composable öğeleri de kullanımdan kaldırılmıştır. Lütfen bunun yerine androidx.ui.input.TextFieldValue kullanın (I4066d, b/155211005)
  • Modifier'dadrawArka Plan uzantı API'leri yerine, kullanımdan kaldırılan Drawbackground API'si kaldırıldı. Kod yollarını azaltmak için renk, fırça ve boya çizimiArka plan uygulamaları yeniden düzenlendi ve kompozisyonun bir parçası olarak Değiştirici'nin oluşturulması gerekliliği kaldırıldı. (I0343a)
  • Bunun yerine CanvasScope'u kullanıma sunmak için Tuval sunan daha üst düzey oluşturma API'leri güncellendi. Bu, tüketicilerin kendi Paint nesnelerini koruma ihtiyacını ortadan kaldırır. Hâlâ bir Tuval'e erişmesi gereken tüketiciler, çizim komutu vermek için alttaki Tuval'e geri çağırma sağlayandrawCanvas uzantı yöntemini kullanabilirler. (I80afd)
  • WithConstraints sondaki lambda API'si değiştirildi. Şimdi iki parametre yerine bir alıcı kapsamına sahiptir. Bu alıcı kapsamı, sınırlamalara ve layoutDirection'a ek olarak Dp'de minWidth, maxWidth, minHeight ve maxHeight özelliklerini sağlar (I91b9a, b/149979702)
  • Simetrik dolgu değiştiricisi eklendi. (I39840)
  • wrapContentWidth ve wrapContentHeight, herhangi bir Hizalama yerine dikey veya yatay Hizalama beklenecek şekilde güncellendi. Yerçekimi değiştiricisi, dikey veya yatay Hizalamayı kabul edecek şekilde güncellendi. Satır, Sütun ve Yığın, özel sürekli Hizalamaları destekleyecek şekilde güncellendi. (Ib0728)
  • kullanıcı arayüzü modülü, ui-text-core (I57dec) olarak yeniden adlandırıldı
  • DrawModifier API'yi iyileştirin:
    • Draw() ContentDrawScope için alıcı kapsamı oluşturuldu
    • Draw() üzerindeki tüm parametreler kaldırıldı
    • DrawScope, eski CanvasScope ile aynı arayüze sahip
    • ContentDrawScope'tadrawContent() yöntemi (Ibaced, b/152919067) bulunur
  • ColoredRect kullanımdan kaldırıldı. Bunun yerine Box(Modifier.preferredSize(width, height).drawBackground(color)) politikasını kullanın. (I499fa, b/152753731)
  • Değiştirici artı operatörü fabrika uzantı işlevleriyle değiştirildi (I225e4)
  • RowScope ve ColumnScope üyelerine artık Satır ve Sütun dışından erişilebilir. (I3a641)
  • LayoutEsnek, Layoutweight olarak yeniden adlandırıldı. Sıkı parametre, doldurulacak şekilde yeniden adlandırıldı. (If4738)
  • WithConstraints, LayoutDirection parametresini (I6d6f7) aldı
  • Arka plan, Drawbackground olarak yeniden adlandırıldı ve varsayılan olarak ezberlenmesi için 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ı

  • Compose Çalışma Zamanı bağlantı noktası katmanından (I6847d) Looper ve İşleyici gibi gereksiz API'leri kaldırın
  • Flow<T>.collectAsState() öğesini başlangıç değeri olmadan kullanımdan kaldırın. Bunun yerine StateFlow<T> kullanın veya açık bir başlangıç değeri iletin. (I63f98, b/157674865)