زمان اجرا را بنویسید

بلوک‌های بنیادی مدل برنامه‌نویسی Compose و مدیریت حالت، و زمان اجرا اصلی برای هدف قرار دادن افزونه Compose Compiler.
آخرین به روز رسانی انتشار پایدار نامزد انتشار نسخه بتا انتشار آلفا
24 جولای 2024 1.6.8 - 1.7.0-بتا06 -

ساختار

Compose ترکیبی از 7 شناسه گروه Maven در androidx است. هر گروه شامل یک زیرمجموعه هدفمند از عملکرد است که هر کدام مجموعه ای از یادداشت های انتشار خود را دارند.

این جدول گروه ها و پیوندهای هر مجموعه از یادداشت های انتشار را توضیح می دهد.

گروه شرح
آهنگسازی.انیمیشن انیمیشن هایی را در برنامه های Jetpack Compose خود بسازید تا تجربه کاربر را غنی تر کنید.
compose.compiler توابع @Composable را تغییر دهید و بهینه سازی ها را با افزونه کامپایلر Kotlin فعال کنید.
تألیف.بنیاد برنامه های Jetpack Compose را با بلوک های ساختمانی آماده بنویسید و پایه را گسترش دهید تا قطعات سیستم طراحی خود را بسازید.
آهنگسازی.مواد رابط کاربری Jetpack Compose را با اجزای طراحی مواد آماده برای استفاده بسازید. این نقطه ورود سطح بالاتر Compose است که برای ارائه مؤلفه هایی مطابق با آنچه در www.material.io توضیح داده شده است طراحی شده است.
نوشتن.مواد3 ایجاد رابط کاربری Jetpack Compose با 3 مؤلفه طراحی متریال، تکامل بعدی طراحی متریال. Material 3 شامل قالب‌ها و اجزای به‌روز شده و ویژگی‌های شخصی‌سازی Material You مانند رنگ پویا است و به گونه‌ای طراحی شده است که با سبک بصری جدید Android 12 و رابط کاربری سیستم هماهنگ باشد.
نوشتن. زمان اجرا بلوک‌های بنیادی مدل برنامه‌نویسی Compose و مدیریت حالت، و زمان اجرا اصلی برای هدف قرار دادن افزونه Compose Compiler.
compose.ui مؤلفه‌های اساسی نوشتن رابط کاربر برای تعامل با دستگاه، از جمله طرح‌بندی، طراحی، و ورودی مورد نیاز است.

اعلام وابستگی ها

برای افزودن وابستگی به Compose، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر ، مخزن Maven Google را بخوانید.

وابستگی‌های مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

کاتلین

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

برای اطلاعات بیشتر درباره وابستگی‌ها، به افزودن وابستگی‌های ساخت نگاه کنید.

بازخورد

بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.

یک شماره جدید ایجاد کنید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

Runtime Tracing نسخه 1.0

نسخه 1.0.0-beta01

29 نوامبر 2023

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 حاوی این تعهدات است.

نسخه 1.0.0-alpha05

15 نوامبر 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 حاوی این commit ها است.

رفع اشکال

  • وابستگی‌ها به پایین‌ترین نسخه‌های پایدار پشتیبانی‌شده (یعنی نوشتن زمان اجرا و ردیابی پرفتو) - رفع مشکلی که در آن ردیابی زمان اجرا، نسخه جدیدتری از زمان نوشتن را به برنامه وارد می‌کند.

نسخه 1.0.0-alpha04

23 آگوست 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 منتشر شد. نسخه 1.0.0-alpha04 حاوی این commit ها است.

ویژگی های جدید

  • سازگار با آخرین نسخه‌های Benchmark و Tracing Perfetto، پشتیبانی از Composition Tracing را هنگام راه‌اندازی برنامه (شروع سرد) به عنوان مثال در AndroidX Benchmark و Android Studio (شروع از Hedgehog Beta 2) فعال می‌کند.

تغییرات API

  • تغییر نام androidx.tracing.perfetto.Trace به androidx.tracing.perfetto.PerfettoSdkTrace . ( I44af8 )
  • سازگار کردن APIهای Tracing Perfetto SDK با android.os.Trace . ( I73ba0 , b/282199917 )
  • پیش نیازهای ردیابی هنگام راه اندازی برنامه. ( Iad890 )
  • فایل‌های API تجربی و عمومی ( I0f2e1 , b/278769092 ) ادغام شدند

نسخه 1.0.0-alpha02

8 فوریه 2023

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 حاوی این commit ها است.

ویژگی های جدید

  • بدون تغییر عملکردی بهینه سازی عملکرد چندگانه در وابستگی های پایین دست androidx.tracing:tracing-perfetto* .

نسخه 1.0.0-alpha01

7 سپتامبر 2022

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 حاوی این commit ها است.

ویژگی های جدید

  • androidx.compose.runtime:runtime-tracing کتابخانه ای است که - در صورت وجود ابزارهایی که از آن پشتیبانی می کنند (به زودی) - امکان ردیابی گسترده را در یک برنامه Compose فراهم می کند. این نسخه اولیه 1.0.0-alpha01 است.

نسخه 1.7

نسخه 1.7.0-beta06

24 جولای 2024

androidx.compose.runtime:runtime-*:1.7.0-beta06 منتشر شد. نسخه 1.7.0-beta06 حاوی این تعهدات است.

نسخه 1.7.0-beta05

10 جولای 2024

androidx.compose.runtime:runtime-*:1.7.0-beta05 منتشر شد. نسخه 1.7.0-beta05 حاوی این تعهدات است.

نسخه 1.7.0-beta04

26 ژوئن 2024

androidx.compose.runtime:runtime-*:1.7.0-beta04 منتشر شد. نسخه 1.7.0-beta04 حاوی این تعهدات است.

نسخه 1.7.0-beta03

12 ژوئن 2024

androidx.compose.runtime:runtime-*:1.7.0-beta03 منتشر شد. نسخه 1.7.0-beta03 حاوی این تعهدات است.

نسخه 1.7.0-beta02

29 مه 2024

androidx.compose.runtime:runtime-*:1.7.0-beta02 منتشر شد. نسخه 1.7.0-beta02 حاوی این تعهدات است.

نسخه 1.7.0-beta01

14 مه 2024

androidx.compose.runtime:runtime-*:1.7.0-beta01 منتشر شد. نسخه 1.7.0-beta01 حاوی این تعهدات است.

نسخه 1.7.0-alpha08

1 مه 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha08 منتشر شد. نسخه 1.7.0-alpha08 حاوی این commit ها است.

نسخه 1.7.0-alpha07

17 آوریل 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha07 منتشر شد. نسخه 1.7.0-alpha07 حاوی این تعهدات است.

ویژگی های جدید

  • قابلیت ارائه یک ترکیب محلی را اضافه کرد که بر اساس مقادیر دیگر محلی‌های ترکیب محاسبه می‌شود یا به‌طور پیش‌فرض، با استفاده از compositionLocalWithComputedDefault() یا با ارائه یک لامبدا برای محاسبه مقدار با استفاده از providesComputed به جای provides .
  • مقدار یک ترکیب محلی را می توان با استفاده از ویژگی currentValue از ترکیب محلی که از داخل لامبدا محاسبه می کند به دست آورد. این به جای current استفاده می شود که فقط در توابع @Composable قابل دسترسی است. ( Iadbc0 )

تغییرات API

  • اشیاء حالت جدید ایجاد شده بلافاصله از سایر عکس‌های فوری، از جمله عکس فوری سراسری، با وضعیت اولیه‌شان قابل دسترسی هستند. هر گونه تغییر بعدی تا زمانی که عکس فوری که در آن شی ایجاد شده اعمال نشود قابل مشاهده نیست.
  • حالت اولیه mutableStateOf() و همچنین نسخه های اولیه آنها مقداری است که به عنوان پارامتر به mutableStateOf() ارسال می شود. حالت اولیه mutableStateListOf() و mutableStateMapOf() خالی است.
  • Snapshot.isInSnapshot و Snapshot.PreexistingSnapshotId اضافه شد که برای فعال کردن یک شیء حالت برای پشتیبانی از دسترسی فوری از عکس فوری جهانی پس از ایجاد آن استفاده می‌شوند.
  • اشیاء حالت سفارشی می توانند با پیروی از الگوی تغییرات ایجاد شده در اشیاء عکس فوری داخلی، از دسترسی فوری پشتیبانی کنند. ( I84a17 )

رفع اشکال

  • ادغام readObserver در عکس‌های فوری تودرتو رفع شد. این باعث می‌شود که حالت‌های مشتق شده تو در تو در هنگام استفاده در داخل یک snapshotFlow نامعتبر شوند. ( IDF138 )

نسخه 1.7.0-alpha06

3 آوریل 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha06 منتشر شد. نسخه 1.7.0-alpha06 حاوی این تعهدات است.

رفع اشکال

  • رفع ارائه تک‌مقادیر مدیریت providesDefault ( 538f45 )
  • اجتناب از بن بست در Recomposer برای دسترسی به ساعت فریم ( 07e5c6 )

نسخه 1.7.0-alpha05

20 مارس 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha05 منتشر شد. نسخه 1.7.0-alpha05 حاوی این تعهدات است.

رفع اشکال

  • پاک کردن تغییرات دیرهنگام در ترکیب غیرفعال شده ( 5950bc )

نسخه 1.7.0-alpha04

6 مارس 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha04 منتشر شد. نسخه 1.7.0-alpha04 حاوی این تعهدات است.

بهبود عملکرد

  • Snapshot.current یک بار در هر ارزیابی وضعیت مشتق شده فراخوانی کنید ( ee7daf )
  • currentRecord یک بار در هر مشاهده در ترکیب بخوانید ( b882b2 )
  • حذف تخصیص تکرارکننده تصادفی در snapshotFlow ( 231e56 )
  • nonSkippingGroupOptimization را برای کتابخانه های نوشتن فعال کنید. این باعث می شود که کد تولید شده برای همه توابع غیر قابل تنظیم مجدد در androidx کارآمدتر باشد. در آینده قصد داریم این را به صورت پیش فرض فعال کنیم. I ( acbc08 )

نسخه 1.7.0-alpha03

21 فوریه 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha03 منتشر شد. نسخه 1.7.0-alpha03 حاوی این commit ها است.

تغییرات API

  • معرفی یک گروه جایگزین برای بهبود تشخیص تغییرات ( 0941b5 )

بهبود عملکرد

  • بهبود تخصیص حافظه هنگام تشخیص تغییرات ( 53e7fd )
  • رفع نشت حافظه در آهنگساز ( 0e097d )
  • از ScopeMap برای تصویب موارد باطل هنگام ترکیب مجدد استفاده کنید ( e19a7e )
  • نقشه ابطال ها را بهینه کنید تا فقط حالت های مشتق شده را حفظ کنید ( f11c44 )
  • کاربردهای IdentityArraySet با ScatterSet جایگزین کنید ( db572e )
  • بهینه سازی removeScope در ScopeMap ( bb0530 )

نسخه 1.7.0-alpha02

7 فوریه 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha02 منتشر شد. نسخه 1.7.0-alpha02 حاوی این commit ها است.

رفع اشکال

  • لامبداهای قابل ترکیب را در ترکیبات فرعی روی همان قاب باطل کنید. ( 98301c )
  • با همان ترتیبی که onForgotten ، در onRelease تماس بگیرید. ( 2cd790 )
  • حالت های تغییر یافته را فیلتر کنید که در snapshotFlow مشاهده نمی شود. ( 796b80 )

بهبود عملکرد

  • مشاهده گر عکس فوری را زمانی که از قبل شفاف است در محل خود تغییر دهید. ( f60f30 )
  • SnapshotIdSet.lowest() را بهینه کنید. ( 7ae149 )
  • از یک fold() بدون تخصیص در SnapshotIdSet استفاده کنید. ( 532b7d )
  • حذف تخصیص تکرارکننده ( 83f96b )

نسخه 1.7.0-alpha01

24 ژانویه 2024

androidx.compose.runtime:runtime-*:1.7.0-alpha01 منتشر شد. نسخه 1.7.0-alpha01 حاوی این commit ها است.

بهینه سازی عملکرد

  • قابلیت ایجاد اسلات ها را بعد از اضافه شدن یک گروه فرزند اضافه کنید ( b5960c )
  • بهینه سازی تغییرات ضبط حالت های عکس فوری ( 28c3fe )
  • فعال کردن حالت پرش قوی ( ed1766 )

رفع اشکال

  • محاسبه متای پارامتر پیش فرض در حافظه ذاتی ( 096665 )
  • currentCompoundHashKey در موارد بیشتر منحصر به فرد کنید ( d4a872 )
  • هنگام خروج از فراخوانی تابع درون خطی ( 2a90fc ) متوجه گروه ها شوید

نسخه 1.6

نسخه 1.6.8

12 ژوئن 2024

androidx.compose.runtime:runtime-*:1.6.8 منتشر شد. نسخه 1.6.8 شامل این commit ها است.

نسخه 1.6.7

1 مه 2024

androidx.compose.runtime:runtime-*:1.6.7 منتشر شد. نسخه 1.6.7 حاوی این commit ها است.

نسخه 1.6.6

17 آوریل 2024

androidx.compose.runtime:runtime-*:1.6.6 منتشر شد. از آخرین نسخه تغییری نکرده است.

نسخه 1.6.5

3 آوریل 2024

androidx.compose.runtime:runtime-*:1.6.5 منتشر شد. نسخه 1.6.5 حاوی این commit ها است.

نسخه 1.6.4

20 مارس 2024

androidx.compose.runtime:runtime-*:1.6.4 منتشر شد. نسخه 1.6.4 حاوی این commit ها است.

نسخه 1.6.3

6 مارس 2024

androidx.compose.runtime:runtime-*:1.6.3 منتشر شد. نسخه 1.6.3 شامل این commit ها است.

نسخه 1.6.2

21 فوریه 2024

androidx.compose.runtime:runtime-*:1.6.2 منتشر شد. نسخه 1.6.2 حاوی این commit ها است.

نسخه 1.6.1

7 فوریه 2024

androidx.compose.runtime:runtime-*:1.6.1 منتشر شد. نسخه 1.6.1 حاوی این commit ها است.

رفع اشکال

  • با همان ترتیبی که onForgotten ، در onRelease تماس بگیرید. ( 2cd790 )
  • حالت های تغییر یافته را فیلتر کنید که در snapshotFlow مشاهده نمی شود. ( 796b80 )

نسخه 1.6.0

24 ژانویه 2024

androidx.compose.runtime:runtime-*:1.6.0 منتشر شد. نسخه 1.6.0 حاوی این commit ها است.

تغییرات مهم از 1.5.0

ویژگی های جدید

  • پرتاب مجدد استثناهایی که در طول حلقه ترکیب مجدد بلعیده می شوند ( 4dff9a )

بهینه سازی عملکرد

  • بهینه سازی تغییرات ضبط حالت های عکس فوری ( 28c3fe )
  • بهینه سازی rememberSaveable ( f01d79 )
  • بازخوانی حالت های مشتق شده را تا ثبت تغییرات به تعویق بیندازید ( f38099 )
  • بهبود ارائه مقادیر محلی ترکیب ( a337ea )

رفع اشکال

  • رفع نشت حافظه میز اسلات ( 73fcfe )
  • از ترکیب مجدد ترکیبات فرعی که حذف خواهند شد صرفنظر کنید. ( Ieeb99 , b/254645321 )
  • فقط زمانی چرخه های عمر RememberObserver را فعال کنید که در محاسبه یادآوری ذخیره شود. ( f6b4dc )
  • $dirty capture را به لامبداهای درون خطی محدود کنید. ( acfca0 )
  • رفع محتوای متحرک گاهی اوقات دریافت اشتباه ترکیب محلی. ( 035cd6 )

نسخه 1.6.0-rc01

10 ژانویه 2024

androidx.compose.runtime:runtime-*:1.6.0-rc01 منتشر شد. نسخه 1.6.0-rc01 حاوی این commit ها است.

نسخه 1.6.0-beta03

13 دسامبر 2023

androidx.compose.runtime:runtime-*:1.6.0-beta03 منتشر شد. نسخه 1.6.0-beta03 حاوی این تعهدات است.

نسخه 1.6.0-beta02

29 نوامبر 2023

androidx.compose.runtime:runtime-*:1.6.0-beta02 منتشر شد. نسخه 1.6.0-beta02 حاوی این تعهدات است.

نسخه 1.6.0-beta01

15 نوامبر 2023

androidx.compose.runtime:runtime-*:1.6.0-beta01 منتشر شد. نسخه 1.6.0-beta01 حاوی این تعهدات است.

تغییرات API

  • مقادیر خاصی از ثبات را در حاشیه نویسی منتشر کنید. (274a4c)

رفع اشکال

  • از خط مشی ارجاعی برای حالت قلمرو محلی ترکیب در متن استفاده کنید. (83361c)
  • $dirty capture را به لامبداهای درون خطی محدود کنید. (acfca0)
  • رفع محتوای متحرک گاهی اوقات دریافت اشتباه ترکیب محلی. (035cd6)
  • در RecomposeScopeImpl از هشمپ های غیر تخصیص سریعتر استفاده کنید. (d79494)
  • از ObjectIntMap در DerivedState استفاده کنید. (21862e)
  • از IntRef برای int SnapshotThreadLocal در DerivedState استفاده کنید. (04eaf4)

نسخه 1.6.0-alpha08

18 اکتبر 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha08 منتشر شد. نسخه 1.6.0-alpha08 حاوی این commit ها است.

رفع اشکال

  • فقط زمانی چرخه های عمر RememberObserver را فعال کنید که در محاسبه یادآوری ذخیره شود. ( f6b4dc )
  • بهبود تخصیص در مرتب‌سازی فهرست‌های باطل. ( 954d63 )
  • از نقشه های جدید غیر اختصاصی در SnapshotStateObserver استفاده کنید. ( 4303ce )
  • هنگامی که ترکیب غیرفعال می شود، موارد نامعتبر را پاک کنید. ( e001be )

نسخه 1.6.0-alpha07

4 اکتبر 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha07 منتشر شد. نسخه 1.6.0-alpha07 حاوی این commit ها است.

تغییرات API

  • SnapshotStateList اکنون به‌عنوان RandomAccess علامت‌گذاری شده است تا از نسخه نمایه‌سازی مستقیم فهرست کمک‌کنندگان استفاده شود. ( I5210c , b/219554654 )

نسخه 1.6.0-alpha06

20 سپتامبر 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha06 منتشر شد. نسخه 1.6.0-alpha06 حاوی این commit ها است.

نسخه 1.6.0-alpha05

6 سپتامبر 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha05 منتشر شد. نسخه 1.6.0-alpha05 حاوی این commit ها است.

نسخه 1.6.0-alpha04

23 آگوست 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha04 منتشر شد. نسخه 1.6.0-alpha04 حاوی این commit ها است.

ویژگی های جدید

  • پرتاب مجدد استثناهایی که در طول حلقه ترکیب مجدد بلعیده می شوند ( 4dff9a )

تغییرات API

  • روشی برای غیرفعال کردن ReusableComposition ، حذف مشاهدات اما نگه داشتن گره‌ها در محل اضافه شده است. ترکیب غیرفعال شده را می توان با تماس با setContent دوباره فعال کرد. ( Ib7f31 )
  • افزودن رابط کاربری ReusableComposition برای مدیریت چرخه عمر و استفاده مجدد از ترکیبات فرعی. ( I812d1 , b/252846775 )

نسخه 1.6.0-alpha03

9 آگوست 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha03 منتشر شد. نسخه 1.6.0-alpha03 حاوی این commit ها است.

رفع اشکال

  • اصلاح بهینه سازی جدید CompositionLocalProvider ( 3118e88 )
  • نحوه جداسازی گره های محتوای متحرک را تصحیح کنید. ( 5e3d59b )

نسخه 1.6.0-alpha02

26 جولای 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha02 منتشر شد. نسخه 1.6.0-alpha02 حاوی این commit ها است.

ویژگی های جدید و بهبود عملکرد

  • بهینه سازی rememberSaveable ( f01d79 )
  • بازخوانی حالت های مشتق شده را تا ثبت تغییرات به تعویق بیندازید ( f38099 )
  • بهبود ارائه مقادیر محلی ترکیب ( a337ea )
  • SideEffect به عنوان @ExplicitGroupsComposable علامت گذاری شده است تا از ایجاد گروه جلوگیری شود. ( I74815 )
  • از مقایسه نقشه های محلی ترکیب در استفاده مجدد خودداری کنید ( 782071 )

تغییرات API

  • اضافه‌بار ویژه‌ای برای CompositionLocalProviders اضافه شده است که از سربار استفاده شده برای ارائه سریع‌تر مقادیر اجتناب می‌کند، اما هنگام ارائه یک مقدار، سربار است. ( I6d640 , b/288169379 )

رفع اشکال

  • رفع نشت حافظه میز اسلات ( 73fcfe )
  • وقتی stateSaver null را برمی‌گرداند، نحوه بازیابی rememberSaveable برطرف کنید ( 90748c )

نسخه 1.6.0-alpha01

21 ژوئن 2023

androidx.compose.runtime:runtime-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 حاوی این commit ها است.

رفع اشکال

  • از ترکیب مجدد ترکیبات فرعی که حذف خواهند شد صرفنظر کنید. ( Ieeb99 , b/254645321 )
  • کاهش تخصیص هنگام اعمال عکس های فوری. ( I65c09 )
  • اگر عکس فوری اصلاح نشده بود، از محاسبه readableHash در DerivedState خودداری کنید ( 68c565 )

نسخه 1.5

نسخه 1.5.4

18 اکتبر 2023

androidx.compose.runtime:runtime-*:1.5.4 منتشر شد. نسخه 1.5.4 حاوی این commit ها است.

نسخه 1.5.3

4 اکتبر 2023

androidx.compose.runtime:runtime-*:1.5.3 منتشر شد. نسخه 1.5.3 حاوی این commit ها است.

نسخه 1.5.2

27 سپتامبر 2023

androidx.compose.runtime:runtime-*:1.5.2 منتشر شد. نسخه 1.5.2 حاوی این commit ها است.

نسخه 1.5.1

6 سپتامبر 2023

androidx.compose.runtime:runtime-*:1.5.1 منتشر شد. نسخه 1.5.1 حاوی این commit ها است.

نسخه 1.5.0

9 آگوست 2023

androidx.compose.runtime:runtime-*:1.5.0 منتشر شد. نسخه 1.5.0 حاوی این commit ها است.

تغییرات API

  • تخصیص‌ها در ترکیب مجدد، انیمیشن‌های رنگی و AndroidComposeView حذف شدند. ( Ib2bfa )
  • یک حاشیه نویسی @StateFactoryMarker برای علامت گذاری توابعی که حالت ها را ایجاد می کنند و باید در یک فراخوانی به remember بسپارند اضافه شده است. ( I64550 )
  • اضافه کردن نسخه های اولیه State و MutableState ( fb3d89 )
  • Snapshot.isApplyObserverNotificationPending ( I672a5 ) اضافه شد
  • نسخه‌های ابتدایی State API اضافه شده است که به مقادیر Int، Long، Float و Double اجازه می‌دهد در اشیاء State بدون اعمال جریمه برای اتوباکسینگ ردیابی شوند. برای استفاده از آنها از متدهای کارخانه جدید mutableIntState(Int) ، mutableFloatStateOf(Float) و غیره استفاده کنید. ( I48e43 )

رفع اشکال

  • از ترکیب مجدد ترکیبات فرعی که حذف خواهند شد صرفنظر کنید. ( Ieeb99 , b/254645321 )
  • مرجع عکس فوری در ComposerImpl حفظ نشود ( 0206f7 )
  • ترکیب را دوبار اعمال نکنید ( f5791b )
  • اطمینان از بی اعتباری برای مقادیر حالت مشتق شده اولیه ( aa2a92 )
  • در حین از بین بردن ترکیب، با onEndChanges تماس بگیرید. ( 62cc8c )
  • تغییر محتوا در یک ترکیب فرعی ( 4beb41 )
  • رفع بن بست های احتمالی ( c1a425 و 8edce0 )
  • بازسازنده ایجاد شده برای یک پنجره Android اکنون تنها زمانی که اعلان ON_STOP را دریافت می کند، به جای تمام ترکیب بندی، تماس های مربوط به withFrameNanos را مسدود می کند. این بدان معناست که پنجره‌های مرتبط با فعالیت‌های متوقف شده برای تغییرات داده‌ها به ترکیب مجدد ادامه می‌دهند، اما انیمیشن‌ها یا هر تماس‌گیرنده دیگری از withFrameNanos مسدود می‌شوند. ( Id9e7f , b/240975572 )
  • قبل از حذف افکت‌ها، تماس‌های غیرفعال‌سازی را برای LayoutNode اجرا کنید 3784073
  • پرچم های تغییر یافته را برای لامبداهای راه اندازی مجدد ea81df9 برطرف کنید
  • اصلاح رگرسیون ویرایش زنده برای Composable با گره‌های 73fd4d8
  • ON_STOP باید پخش ساعت فریم را به جای ترکیب بندی ae276f1 متوقف کند
  • باطل کردن دامنه SnapshotStateObserver برای حالت های مشتق شده بدون تغییر 84d9b1c
  • رفع بن بست احتمالی هنگام دفع ترکیبات 28761fc
  • تغییر محتوا در یک ترکیب فرعی 92d4156
  • اصلاح پرچم های تغییر یافته برای لامبداهای راه اندازی مجدد ( 8a03e9 )
  • قبل از حذف افکت‌ها، تماس‌های غیرفعال‌سازی را برای LayoutNode اجرا کنید ( 8b0fa4 )
  • هنگام پایان دادن به گروه‌های گره endToMarker() را برطرف کنید. ( d71d980 )
  • از گروه SlotWriter فعلی برای بررسی غیرفعال کردن استفاده کنید ( a0b518b )
  • fill در SlotTable.moveSlotGapTo() را بردارید و آن را به بسته شدن منتقل کنید ( 81f9935 )
  • رفع ابطال‌های از دست رفته هنگام حرکت محتوای متحرک ( 1d7c024 )
  • رفع بی اعتباری فوری محتوای متحرک منتقل شده ( 8676618 )

بهبود عملکرد

  • اگر عکس فوری اصلاح نشده است، از محاسبه readableHash در DerivedState خودداری کنید. ( 307102 )
  • تخصیص های کاهش یافته ( I65c09 ، d7ea77 ، 727974 ، و 445808 )
  • لغو سریع نوشتن CoroutineScopes ( a55362 و bd382f )
  • بازنویسی سوابق اشیاء حالت با سوابق حالت غیرقابل دسترسی ( c986960 )
  • هنگام اجرای گروه ها از آهنگساز دامنه صحیح استفاده کنید ( 9a5e5b6 )
  • استفاده از IdentityArraySet برای ذخیره موارد باطل عکس فوری ( 7f60cca )
  • کاهش تخصیص برای مشاهدات فوری ( 5bc535f )

نسخه 1.5.0-rc01

26 جولای 2023

androidx.compose.runtime:runtime-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 حاوی این commit ها است.

رفع اشکال

  • بازخوانی حالت های مشتق شده را تا ثبت تغییرات به تعویق بیندازید ( f38099 )

  • یک بازرسی اختیاری برای توصیه مهاجرت فراخوانی mutableStateOf() به انواع تخصصی مربوطه آنها برای primitive ها در دسترس است. شناسه لینت آن AutoboxingStateCreation است. قبلاً این بازرسی به صورت پیش فرض برای همه پروژه ها فعال بود. برای مشاهده این اخطار در ویرایشگر Android Studio و خروجی های پرز پروژه خود، شدت آن را از اطلاعاتی به هشدار (یا بالاتر) با اعلام warning "AutoboxingStateCreation" در پیکربندی build.gradle یا build.gradle.kts ماژول خود مطابق شکل تغییر دهید ( I34f7e ):

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

نسخه 1.5.0-beta03

28 ژوئن 2023

androidx.compose.runtime:runtime-*:1.5.0-beta03 منتشر شد. نسخه 1.5.0-beta03 حاوی این تعهدات است.

رفع اشکال

  • از ترکیب مجدد ترکیبات فرعی که حذف خواهند شد صرفنظر کنید. ( Ieeb99 , b/254645321 )

نسخه 1.5.0-beta02

7 ژوئن 2023

androidx.compose.runtime:runtime-*:1.5.0-beta02 منتشر شد. نسخه 1.5.0-beta02 حاوی این تعهدات است.

بهبود عملکرد

  • اگر عکس فوری اصلاح نشده است، از محاسبه readableHash در DerivedState خودداری کنید. ( 307102 )

نسخه 1.5.0-beta01

24 مه 2023

androidx.compose.runtime:runtime-*:1.5.0-beta01 منتشر شد. نسخه 1.5.0-beta01 حاوی این تعهدات است.

تغییرات API

  • تخصیص‌های حذف شده در ترکیب مجدد، انیمیشن‌های رنگی و AndroidComposeView ( Ib2bfa )
  • یک حاشیه نویسی @StateFactoryMarker برای علامت گذاری توابعی که حالت ها را ایجاد می کنند و باید در یک فراخوانی به remember بسپارند اضافه شده است. ( I64550 )
  • اضافه کردن نسخه های اولیه State و MutableState ( fb3d89 )
  • Snapshot.isApplyObserverNotificationPending ( I672a5 ) اضافه شد

رفع اشکال

  • تخصیص های کاهش یافته ( I65c09 ، d7ea77 ، 727974 ، و 445808 )
  • مرجع عکس فوری در ComposerImpl حفظ نشود ( 0206f7 )
  • لغو سریع نوشتن CoroutineScopes ( a55362 و bd382f )
  • ترکیب را دوبار اعمال نکنید ( f5791b )
  • اطمینان از بی اعتباری برای مقادیر حالت مشتق شده اولیه ( aa2a92 )
  • در حین از بین بردن ترکیب، با onEndChanges تماس بگیرید. ( 62cc8c )
  • تغییر محتوا در یک ترکیب فرعی ( 4beb41 )
  • رفع بن بست های احتمالی ( c1a425
  • ON_STOP باید پخش ساعت فریم را به جای ترکیب بندی متوقف کند ( f4a2d1 )
  • اصلاح پرچم های تغییر یافته برای لامبداهای راه اندازی مجدد ( 8a03e9 )
  • قبل از حذف افکت‌ها، تماس‌های غیرفعال‌سازی را برای LayoutNode اجرا کنید ( 8b0fa4 )

مشارکت خارجی

  • Snapshot.isApplyObserverNotificationPending ( I672a5 ) اضافه شد

نسخه 1.5.0-alpha04

10 مه 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha04 منتشر شد. نسخه 1.5.0-alpha04 حاوی این commit ها است.

تغییرات API

  • نسخه‌های ابتدایی State API اضافه شده است که به مقادیر Int، Long، Float و Double اجازه می‌دهد در اشیاء State بدون اعمال جریمه برای اتوباکسینگ ردیابی شوند. برای استفاده از آنها از متدهای کارخانه جدید mutableIntState(Int) ، mutableFloatStateOf(Float) و غیره استفاده کنید. ( I48e43 )

رفع اشکال

  • در حین از بین بردن ترکیب، با onEndChanges تماس بگیرید. گره‌های فوکوس حذف شده در طول Composition.dispose برای بازنشانی فوکوس در onEndChanges مشترک می‌شوند. ( 03d4a47 )

  • از عدم اعتبار برای مقادیر حالت مشتق شده اولیه اولیه اطمینان حاصل کنید. هر حالت مشتق شده با لیستی از وابستگی های خود در SnapshotStateObserver مرتبط است که برای باطل کردن دامنه های مرتبط با حالت مشتق شده هر زمان که وابستگی تغییر می کند استفاده می شود. تغییر وابستگی در پیشبرد snapshot ثبت می‌شود، که می‌تواند پس از خواندن حالت مشتق شده اتفاق بیفتد (به دلیل فراخوانی Snapshot.notifyObjectsInitialized() ).

    منطق مشاهدات حالت مشتق شده قبلی در SnapshotStateObserver ، وابستگی های قدیمی را پاک می کرد، سپس مقدار جدید را می خواند. این منجر به یک شرایط مسابقه با عدم اعتبار در یک حالت پاکسازی شده، که در آن عدم اعتبار وابستگی ثبت نشده بود، رخ داد.

    این تغییر مرتب‌سازی مجدد خواندن وضعیت مشتق شده و پاکسازی وابستگی را انجام می‌دهد و تضمین می‌کند که عدم اعتبار همیشه در یک وضعیت معتبر اتفاق می‌افتد. ( c472be6 )

نسخه 1.5.0-alpha03

19 آوریل 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha03 منتشر شد. نسخه 1.5.0-alpha03 حاوی این commit ها است.

تغییرات API

  • بازسازنده ایجاد شده برای یک پنجره Android اکنون تنها زمانی که اعلان ON_STOP را دریافت می کند، به جای تمام ترکیب بندی، تماس های مربوط به withFrameNanos را مسدود می کند. این بدان معناست که پنجره‌های مرتبط با فعالیت‌های متوقف شده برای تغییرات داده‌ها به ترکیب مجدد ادامه می‌دهند، اما انیمیشن‌ها یا هر تماس‌گیرنده دیگری از withFrameNanos مسدود می‌شوند. ( Id9e7f , b/240975572 )

رفع اشکال

  • رفع بن بست احتمالی در لیست عکس فوری و نقشه 5c1a425
  • قبل از حذف افکت‌ها، تماس‌های غیرفعال‌سازی را برای LayoutNode اجرا کنید 3784073
  • پرچم های تغییر یافته را برای لامبداهای راه اندازی مجدد ea81df9 برطرف کنید
  • اصلاح رگرسیون ویرایش زنده برای Composable با گره‌های 73fd4d8
  • ON_STOP باید پخش ساعت فریم را به جای ترکیب بندی ae276f1 متوقف کند
  • باطل کردن دامنه SnapshotStateObserver برای حالت های مشتق شده بدون تغییر 84d9b1c
  • رفع بن بست احتمالی هنگام دفع ترکیبات 28761fc
  • تغییر محتوا در یک ترکیب فرعی 92d4156

نسخه 1.5.0-alpha02

5 آوریل 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha02 منتشر شد. نسخه 1.5.0-alpha02 حاوی این commit ها است.

ویژگی های جدید

  • اپراتور getValue کاتلین اکنون می تواند قابل تنظیم باشد ( f174f6e )

رفع اشکال، بهبود عملکرد

  • بازنویسی سوابق اشیاء حالت با سوابق حالت غیرقابل دسترسی ( c986960 )
  • هنگام اجرای گروه ها از آهنگساز دامنه صحیح استفاده کنید ( 9a5e5b6 )
  • هنگام پایان دادن به گروه‌های گره endToMarker() را برطرف کنید. ( d71d980 )
  • از گروه SlotWriter فعلی برای بررسی غیرفعال کردن استفاده کنید ( a0b518b )
  • استفاده از IdentityArraySet برای ذخیره موارد باطل عکس فوری ( 7f60cca )
  • fill در SlotTable.moveSlotGapTo() را بردارید و آن را به بسته شدن منتقل کنید ( 81f9935 )
  • رفع ابطال‌های از دست رفته هنگام حرکت محتوای متحرک ( 1d7c024 )
  • رفع بی اعتباری فوری محتوای متحرک منتقل شده ( 8676618 )
  • کاهش تخصیص برای مشاهدات فوری ( 5bc535f )

نسخه 1.5.0-alpha01

22 مارس 2023

androidx.compose.runtime:runtime-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 حاوی این commit ها است.

ویژگی های جدید

  • Modifier.Node#coroutineScope را اضافه می کند تا به Modifier.Nodes اجازه دهد تا کوروتین ها را راه اندازی کنند ( I76ef9 )
  • با اجرای رابط CompositionLocalConsumerModifierNode به Modifier.Nodes اجازه دهید CompositionLocals بخوانند. ( IB44df )

نسخه 1.4

نسخه 1.4.3

3 مه 2023

androidx.compose.runtime:runtime-*:1.4.3 بدون هیچ تغییری منتشر شد.

نسخه 1.4.2

19 آوریل 2023

androidx.compose.runtime:runtime-*:1.4.2 منتشر شد. نسخه 1.4.2 حاوی این commit ها است.

رفع اشکال

  • رفع بن بست احتمالی در لیست اسنپ شات و نقشه 2eb6570

  • افزودن محتوا به SnapshotStateList یا SnapshotStateMap در صورتی که اصلاح همزمان با نوشتن مستقیم در رکورد حالت باشد، ممکن است با بن بست مواجه شود. با تغییرات ایجاد شده توسط 93fcae828b که از نوشتن مستقیم برای انتشار رکوردهای استفاده نشده استفاده می کند، به طور قابل توجهی با این احتمال مواجه شدیم.

  • قفل‌ها اکنون مرتب شده‌اند به این صورت که وقتی نقشه یا قفل لیست نگه داشته می‌شود، هرگز سعی نمی‌شود قفل عکس فوری گرفته شود.

نسخه 1.4.1

5 آوریل 2023

androidx.compose.runtime:runtime-*:1.4.1 منتشر شد. نسخه 1.4.1 حاوی این commit ها است.

رفع اشکال

  • هنگام پایان دادن به گروه‌های گره endToMarker() را برطرف کنید. d71d980

نسخه 1.4.0

22 مارس 2023

androidx.compose.runtime:runtime-*:1.4.0 منتشر شد. نسخه 1.4.0 حاوی این commit ها است.

تغییرات مهم از 1.3.0

  • برای اولین ترکیب 3680e25 از مقدار اولیه LiveData استفاده کنید
  • ComposeNodeLifecycleCallback را برای مشاهده چرخه عمر گره های نوشتن اضافه کنید. 8b6a258
  • ویژگی parameterTypes را به ComposableMethod 7b6c7ad اضافه کنید

رفع اشکال و بهبود عملکرد

  • هر دو شاخص دامنه را در SnapshotStateObserver 29f4a3e پاک کنید
  • گروه های مورد نیاز را در بدنه لامبداهای غیرقابل ردیابی 7d06752 اضافه کنید
  • بهبود ویژگی های مرجع حافظه Snapshot state 93fcae8
  • حذف بوکس در ترکیب جستجوهای محلی 0875717
  • از کلید صحیح برای گروه های گره های غیرقابل استفاده مجدد 6388d8d استفاده کنید
  • محافظت از SnapshotStateObserver از بازگشتی و همزمان 98cb6ba
  • یک بررسی check-index-bounds در روش IdentityArraySet "get" 35a77d3 اضافه شد
  • ماژول نوشتن را برای استفاده از پسوندهای ViewTreeLifecycleOwner 21c2122 به روز کنید
  • پس از اتمام فریم Recomposer، اعلان‌های اعمال را ارسال کنید. 98f2641
  • رفع خرابی ایندکس خارج از محدوده هنگام لغو Recomposer 8f8656f
  • اگر ارائه‌دهنده‌های اصلی Composition 9526fcc را تغییر داده‌اند، همیشه دوباره ترکیب را مجبور کنید
  • تحمل Recomposer برای Jobs لغو شده a55f7ed
  • بهبود مدیریت عدم اعتبار برای تعداد زیادی از آهنگسازان 9b7ed67
  • ایجاد گروه های بسته برای بازده های غیر محلی b6f590c را رفع کنید

نسخه 1.4.0-rc01

8 مارس 2023

androidx.compose.runtime:runtime-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-rc01 حاوی این commit ها است.

رفع اشکال

نسخه 1.4.0-beta02

22 فوریه 2023

androidx.compose.runtime:runtime:1.4.0-beta02 و androidx.compose.runtime:runtime-saveable:1.4.0-beta02 منتشر شدند. نسخه 1.4.0-beta02 حاوی این تعهدات است.

نسخه 1.4.0-beta01

8 فوریه 2023

androidx.compose.runtime:runtime-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.

تغییرات API

  • ComposeNodeLifecycleCallback اضافه شد که امکان مشاهده چرخه عمر گره های Compose را فراهم می کند ( I3731b )
  • @TestOnly به Composer.disableSourceInformation() اضافه شد زیرا این تابع فقط برای فراخوانی در یک آزمایش امن است. ( I896c8 )

رفع اشکال

  • حذف بوکس در جستجوهای محلی ترکیب ( 62f66a )
  • بهبود ویژگی های مرجع حافظه در وضعیت Snapshot ( dfb451 )

نسخه 1.4.0-alpha05

25 ژانویه 2023

androidx.compose.runtime:runtime:1.4.0-alpha05 و androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 منتشر شدند. نسخه 1.4.0-alpha05 حاوی این commit ها است.

تغییرات API

  • نوع/خالی پذیری بیشتر توابع درون خطی/منسوخ شده-مخفی ( I24f91 )

نسخه 1.4.0-alpha04

11 ژانویه 2023

androidx.compose.runtime:runtime-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 حاوی این commit ها است.

تغییرات API

  • TestMonotonicFrameClock اکنون از حاشیه نویسی آزمایشی صحیح استفاده می کند. ( I95c9e )

رفع اشکال

  • محافظت از SnapshotStateObserver از اعمال بازگشتی و همزمان ( d902fb )

نسخه 1.4.0-alpha03

7 دسامبر 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 حاوی این commit ها است.

تغییرات API

  • افزودن یک متد عمومی جدید به کلاس ComposableMethod مشابه java.lang.reflect.Method#getParameterTypes() ( Iab0c3 )

رفع اشکال

  • اعلان‌های اعمال Snapshot اکنون پس از اتمام اعمال تغییرات توسط Recomposer ارسال می‌شوند. ( Iad6c0 , b/222093277 )

نسخه 1.4.0-alpha02

9 نوامبر 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 حاوی این commit ها است.

نسخه 1.4.0-alpha01

24 اکتبر 2022

androidx.compose.runtime:runtime-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 حاوی این commit ها است.

تغییرات API

  • SnapshotStateList و SnapshotStateMap اکنون پیاده سازی های واضحی از toList() و toMap() دارند. این روش‌ها محتوای فعلی خود را بدون ایجاد کپی برمی‌گردانند زیرا داده‌های تغییرناپذیر داخلی مورد استفاده برای ذخیره محتوای خود را برمی‌گردانند. این مقدار را می توان به عنوان مثال برای تولید جریانی از مقادیر با استفاده از snapshotFlow بدون نیاز به کپی کردن داده ها استفاده کرد. ( Ica2bd )

نسخه 1.3

نسخه 1.3.3

11 ژانویه 2023

androidx.compose.runtime:runtime-*:1.3.3 منتشر شد. نسخه 1.3.3 حاوی این commit ها است.

  • بدون تغییر از 1.3.2

نسخه 1.3.2

7 دسامبر 2022

androidx.compose.runtime:runtime-*:1.3.2 منتشر شد. نسخه 1.3.2 حاوی این commit ها است.

رفع اشکال

  • به روز شده برای پشتیبانی از androidx.compose.ui 1.3.2

نسخه 1.3.1

9 نوامبر 2022

androidx.compose.runtime:runtime-*:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این commit ها است.

نسخه 1.3.0

24 اکتبر 2022

androidx.compose.runtime:runtime-*:1.3.0 منتشر شد. نسخه 1.3.0 حاوی این commit ها است.

تغییرات مهم از 1.2.0

مدیریت استثناها / پشتیبانی از ویرایش زنده

ردیابی ترکیب

Composable Reflection APIs

رفع زمان اجرا

سیستم عکس فوری

نسخه 1.3.0-rc01

5 اکتبر 2022

androidx.compose.runtime:runtime-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 حاوی این commit ها است.

رفع اشکال

  • ArrayIndexOutOfBoundsException ثابت از جدول شکاف ( b/249076084 )

نسخه 1.3.0-beta03

21 سپتامبر 2022

androidx.compose.runtime:runtime-*:1.3.0-beta03 منتشر شد. نسخه 1.3.0-beta03 حاوی این تعهدات است.

تغییر رفتار

  • پارامتر به remember و rememberCoroutineScope به crossinline تغییر کرد. این به جای اجازه دادن به بازگشت زودهنگام که باعث می شود یک خطای داخلی بعدی گزارش شود، یک خطا را برای بازده های اولیه گزارش می دهد.
  • این تغییر به طور بالقوه می تواند منجر به گزارش خطاهای کامپایلر جدید شود که نیاز به حذف بازده های غیر محلی از لامبداهای ارسال شده به این توابع دارد. ( Ibea62 )

نسخه 1.3.0-beta02

7 سپتامبر 2022

androidx.compose.runtime:runtime-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 حاوی این تعهدات است.

رفع اشکال

  • API به روز شده ( I64ca0 )

نسخه 1.3.0-beta01

24 آگوست 2022

androidx.compose.runtime:runtime-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.

تغییرات API

  • یک روش find به CompositionData اضافه شد تا به ابزارهای توسعه‌دهنده با استفاده از این API اجازه دهد تا به سرعت یک زیر گروه از ترکیب را با استفاده از هویت آن پیدا کنند. ( I5794f )

نسخه 1.3.0-alpha03

10 آگوست 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این commit ها است.

نسخه 1.3.0-alpha02

27 جولای 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این commit ها است.

تغییرات API

  • ComposerKt.traceEventStart(Int, String) برای سازگاری با عقب ( I6e6de ) دوباره اضافه کرد

نسخه 1.3.0-alpha01

29 ژوئن 2022

androidx.compose.runtime:runtime-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این commit ها است.

تغییرات API

  • انتقال عملکرد ابزار به زمان اجرا ( I4f729 )

نسخه 1.2

نسخه 1.2.1

10 آگوست 2022

androidx.compose.runtime:runtime-*:1.2.1 منتشر شد. نسخه 1.2.1 حاوی این commit ها است.

رفع اشکال

  • رفع نشت حافظه: عکس‌های فوری تودرتو ایجاد شده از عکس‌های فوری شفاف b/239603305 را حذف کنید

نسخه 1.2.0

27 جولای 2022

androidx.compose.runtime:runtime-*:1.2.0 منتشر شد. نسخه 1.2.0 حاوی این commit ها است.

تغییرات مهم از 1.1.0

  • Compose Runtime دارای تعداد انگشت شماری از ویژگی های معرفی شده در 1.2.0 به همراه بسیاری از رفع اشکالات تثبیت کننده بود. مهم ترین ویژگی جدید ، معرفی movableContentOf API بود که می تواند برای فعال کردن UX پیچیده مانند انتقال عناصر مشترک استفاده شود. movableContentOf API یک لامبدای قابل ترکیب را به یک لامبدا تبدیل می کند که حالت آن و گره های مربوطه را به هر مکان جدیدی که فراخوانی می شود منتقل می کند. هنگامی که فراخوانی قبلی از ترکیب خارج می شود، وضعیت به طور موقت حفظ می شود و اگر یک فراخوان جدید به لامبدا وارد ترکیب شود، وضعیت و گره های مرتبط به محل فراخوانی جدید منتقل می شوند. اگر تماس جدیدی اضافه نشود، وضعیت برای همیشه حذف می شود و به یاد داشته باشید که ناظران مطلع می شوند.

  • اگر یک movableContentOf لامبدا چندین بار در یک ترکیب فراخوانی شود، حالت و گره‌های جدیدی برای هر فراخوانی ایجاد می‌شود و با خروج فراخوان‌ها از ترکیب و ورود فراخوان‌های جدید، وضعیت از اولین تماس‌های خروجی به تماس‌های ورودی به ترتیب منتقل می‌شود. آنها نامیده می شوند. تمام وضعیتی که توسط تماس های جدید ادعا نشده است برای همیشه حذف می شود.

  • علاوه بر این و چند ویژگی جدید دیگر، زمان زیادی برای تثبیت زمان اجرا و سیستم حالت Snapshot صرف شد. نشت حافظه های مختلف برداشته شد و مسیرهای کد بهینه شد.

  • لیست خلاصه ای از تغییرات را می توان در زیر یافت:

ویژگی های جدید در 1.2

عملکرد در 1.2

رفع اشکال در 1.2

نسخه 1.2.0-RC03

29 ژوئن 2022

androidx.compose.runtime:runtime-*:1.2.0-rc03 منتشر می شود. نسخه 1.2.0-RC03 شامل این تعهدات است.

رفع اشکال

  • مشاهدات وضعیتی مشتق شده قبلاً بدون قید و شرط از دامنه و ترکیب مجدد با هم جدا شده بود ، که دامنه های دیگری را که ممکن است هنوز هم وضعیت مشتق شده را مشاهده کنند ، شکستند. این تغییر فقط در صورتی که دیگر توسط سایر دامنه ها مشاهده نشود ، نمونه های دولتی مشتق شده را از بین می برد. ( b/236618362 )

نسخه 1.2.0-RC02

22 ژوئن 2022

androidx.compose.runtime:runtime-*:1.2.0-rc02 منتشر می شود. نسخه 1.2.0-RC02 شامل این تعهدات است.

نسخه 1.2.0-rc01

15 ژوئن 2022

androidx.compose.runtime:runtime-*:1.2.0-rc01 منتشر می شود. نسخه 1.2.0-rc01 حاوی این commit ها است.

تغییرات API

  • رابط در کتابخانه های آهنگسازی اکنون با استفاده از روش های رابط پیش فرض JDK8 ( I5BCF1 ) ساخته شده است

نسخه 1.2.0-beta03

1 ژوئن 2022

androidx.compose.runtime:runtime-*:1.2.0-beta03 منتشر می شود. نسخه 1.2.0-beta03 شامل این تعهدات است.

نسخه 1.2.0-beta02

18 مه 2022

androidx.compose.runtime:runtime-*:1.2.0-beta02 منتشر می شود. نسخه 1.2.0-beta02 حاوی این تعهدات است.

نسخه 1.2.0-beta01

11 مه 2022

androidx.compose.runtime:runtime-*:1.2.0-beta01 منتشر می شود. نسخه 1.2.0-beta01 حاوی این تعهدات است.

ویژگی های جدید

  • این اولین نسخه بتا از 1.2 است!

تغییرات API

  • اضافه شده Snapshot.unsafeEnter/unsafeLeave ( I108F3 )
  • اضافه شده Snapshot.asContextElement() API ( IFF072 )
  • حاشیه نویسی @ComposableTarget و حاشیه نویسی های مشخص شده توسط @ComposableTargetMarker اکنون می توانید با استفاده از پیشوند File در دامنه @file استفاده کنید. استفاده از حاشیه نویسی هدف در دامنه پرونده باعث می شود کامپایلر فرض کند که تمام عملکردهای سازنده موجود در پرونده در نظر گرفته شده است که به عنوان Applier همراه هدف قرار گیرد. به عنوان مثال ، با استفاده از @file:UiComposable اعلام می کند که همه توابع @Composable Applier UI آهنگساز را هدف قرار می دهند. تابعی که نیاز به هدف قرار دادن یک کاربرد دیگر دارد ، باید صریحاً حاشیه نویسی نشانگر هدف را برای اپلیکیشن مورد نظر تأمین کند. ( i40804 )

نسخه 1.2.0-alpha08

20 آوریل 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha08 منتشر شده است. نسخه 1.2.0-alpha08 شامل این تعهدات است.

تغییرات API

  • TracingInProgress به رابط CompositionTracer اضافه شد. ( IC6F12 )
  • recomposeScopeIdentity به آهنگساز اضافه کنید ( I0C873 )
  • API های ردیابی محدود (Composer.SetTracer) به OptIn(InternalComposeTracingApi) . ( i9187f )
  • اضافه شده ResuableContentHost که امکان کنترل بهتر در طول عمر دولت ایجاد شده برای محتوای قابل استفاده مجدد را فراهم می کند. به عنوان مثال ، اگر یک ترکیب فرعی به طور موقت مورد استفاده قرار نگیرد ، می توان محتوا را غیرفعال کرد و باعث می شود تمام حالت به یاد داشته باشید که در ترکیب فراموش شده است ، به عنوان مثال ، تمام اثرات یکبار مصرف. ( I2C0F2 ، B/220322704 )

نسخه 1.2.0-alpha07

6 آوریل 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha07 منتشر می شود. نسخه 1.2.0-alpha07 شامل این تعهدات است.

تغییرات API

  • عملکرد جدید Snapshot.withoutReadObservation { ... } اضافه شد. این امکان را به کاربران می دهد تا بدون عضویت در تغییرات مقادیر حالت خوانده شده در این بلوک ، لامبدا منتقل شده را اجرا کنند. در مواردی که می خواهید از موضوع مبتنی بر عکس مبتنی بر عکس ایمن استفاده کنید ، می توانید آن را در موارد استفاده مفید بدانید ، اما می خواهید بدون ایجاد مجدداً یا اندازه گیری مجدد غیر ضروری ، بتوانید این مقدار را بخوانید. ( i9f365 ، b/214054486 )

نسخه 1.2.0-alpha06

23 مارس 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha06 منتشر می شود. نسخه 1.2.0-alpha06 شامل این تعهدات است.

نسخه 1.2.0-alpha05

9 مارس 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha05 منتشر می شود. نسخه 1.2.0-alpha05 شامل این تعهدات است.

مشارکت خارجی

  • به روز شده برای استفاده از Kotlinx Coroutines 1.6.0 ( I3366D )

نسخه 1.2.0-alpha04

23 فوریه 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha04 منتشر شده است. نسخه 1.2.0-alpha04 شامل این تعهدات است.

تغییرات API

  • اضافه شده ComposableTarget ، ComposableTargetMarker و ComposableOpenTarget که امکان تهیه زمان کامپایل را فراهم می کند که یک تابع آهنگسازی را هدف قرار می دهد ، هدفمند است که از آن استفاده می شود.

    در بیشتر موارد ، حاشیه نویسی ها را می توان با افزونه کامپایلر کامپوزیت استنباط کرد ، بنابراین استفاده از این حاشیه نویسی به طور مستقیم باید نادر باشد. مواردی که نمی توانند استنباط نشوند شامل ایجاد و استفاده از یک کاربردی سفارشی ، عملکردهای انتزاعی (مانند روش های رابط) ، زمینه ها یا متغیرهای جهانی که لامبدهای سازنده هستند (متغیرها و پارامترهای محلی استنباط می شوند) ، یا هنگام استفاده از ComposeNode یا توابع مربوط به آهنگساز مرتبط .

    برای کاربردهای سفارشی ، توابع سازنده ای که ComposeNode یا ReusableComposeNode فراخوانی می کنند ، نیاز به اضافه کردن حاشیه نویسی CompoableTarget برای عملکرد و هر نوع پارامتر Lambda قابل استفاده دارند. با این وجود توصیه می شود حاشیه نویسی ایجاد کنید که با ComposableTargetMarker حاشیه نویسی شود و سپس حاشیه نویسی مشخص شده به جای ComposableTarget به طور مستقیم استفاده شود. حاشیه نویسی ترکیب شده با ComposableTargetMarker معادل یک ComposbleTarget با نام کاملاً واجد شرایط کلاس ویژگی به عنوان پارامتر Applier است. برای نمونه ای از استفاده از ComposableTargetMarker به anroidx.compose.ui.UiComposable مراجعه کنید. ( i38f11 )

نسخه 1.2.0-alpha03

9 فوریه 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha03 منتشر می شود. نسخه 1.2.0-alpha03 شامل این تعهدات است.

تغییرات API

  • movableContentOf اضافه شده است که یک لامبدا قابل ترکیب را به یک لامبدا تبدیل می کند که آن را به حالت و گره های مربوطه منتقل می کند و به هر مکان جدیدی که آن را نامیده می شود. هنگامی که تماس قبلی ترکیب را ترک می کند ، دولت به طور موقت حفظ می شود و اگر تماس جدیدی به لامبدا وارد ترکیب شود ، دولت و گره های مرتبط به محل تماس جدید منتقل می شوند. در صورت عدم افزودن تماس جدید ، دولت به طور دائم برداشته می شود و به یاد داشته باشید که ناظران به آنها اطلاع داده می شوند.

    اگر یک Lambda movableContentOf چندین بار در همان ترکیب خوانده شود ، حالت جدید و گره ها برای هر تماس ایجاد می شوند و با ترک تماس ها ترکیب و تماس های جدید وارد می شوند ، دولت از اولین تماس های ترک به تماس های وارد شده به ترتیب منتقل می شود. آنها خوانده می شوند. کلیه ایالتی که با تماس های جدید ادعا نمی شوند به طور دائم حذف می شوند. ( IB4850 )

  • یک API ردیابی را به ترکیب اضافه کرد تا ابزارهایی را برای ارائه ردیابی دقیق تر از توابع سازنده فراهم کند. این کامپایلر اکنون تماس هایی با API ردیابی ایجاد می کند که شامل اطلاعات منبع است. ( IB0EB5 )

    برای حذف این تماس ها و اطلاعات منبع مرتبط از یک نسخه انتشار ، قانون Proguard زیر را اضافه کنید:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • InternalComposeScope را اضافه کنید که به ابزارهایی امکان شناسایی یک ترکیب را در هنگام استفاده مجدد می دهد. ( i07a3f )

نسخه 1.2.0-alpha02

26 ژانویه 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha02 منتشر می شود. نسخه 1.2.0-alpha02 شامل این تعهدات است.

نسخه 1.2.0-alpha01

12 ژانویه 2022

androidx.compose.runtime:runtime-*:1.2.0-alpha01 منتشر می شود. نسخه 1.2.0-alpha01 شامل این تعهدات است.

تغییرات API

  • زمینه identity اضافه شده به CompositionData برای تولید شناسه های ثابت در بازرس طرح. ( IC116E )

به روز رسانی های وابستگی

  • اکنون به Kotlin 1.6.10 بستگی دارد.

نسخه 1.1

نسخه 1.1.1

23 فوریه 2022

androidx.compose.runtime:runtime-*:1.1.1 منتشر می شود. نسخه 1.1.1 شامل این تعهدات است.

رفع اشکال

  • رفع NullPointerException در androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList ( AOSP/1947059 ، b/206677462 )
  • تصادف ناشی از محتوای کلیپ بورد را هنگام خواندن از کلیپ بورد در Android رفع کنید. ( I06020 ، b/197769306 )
  • RTL ثابت در LazyVerticalGrid ( AOSP/1931080 ، B/207510535 )

نسخه 1.1.0

9 فوریه 2022

androidx.compose.runtime:runtime-*:1.1.0 منتشر می شود. نسخه 1.1.0 شامل این تعهدات است.

تغییرات مهم از 1.0.0

  • پشتیبانی پایدار از اثر Overscroll Android 12
  • پیشرفت برای لمس اندازه هدف
  • توجه داشته باشید که ، با توجه به آهنگسازی 1.0 ، اجزای مواد فضای طرح خود را برای تحقق دستورالعمل های دسترسی به مواد برای اندازه هدف لمسی گسترش می دهند. به عنوان مثال ، Touch Touch Target به حداقل اندازه 48x48dp گسترش می یابد ، حتی اگر اندازه دکمه را کوچکتر کنید. این تراز مواد را با همان رفتار اجزای طراحی مواد تشکیل می دهد و در صورت مخلوط کردن و آهنگسازی ، رفتار مداوم را ارائه می دهد. این تغییر همچنین تضمین می کند که وقتی UI خود را با استفاده از اجزای مواد مرکب ایجاد می کنید ، حداقل شرایط لازم برای دسترسی به هدف لمسی برآورده می شود.
  • پشتیبانی پایدار از راه آهن ناوبری
  • فارغ التحصیلان تعدادی از API های آزمایشی قبلاً تا پایدار
  • پشتیبانی از نسخه های جدیدتر کوتلین

نسخه 1.1.0-RC03

26 ژانویه 2022

androidx.compose.runtime:runtime-*:1.1.0-rc03 منتشر می شود. نسخه 1.1.0-RC03 شامل این تعهدات است.

رفع اشکال

  • برای پشتیبانی از ترکیب مواد 1.1.0-rc03 به روز شده است

نسخه 1.1.0-RC01

15 دسامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-rc01 منتشر می شود. نسخه 1.1.0-RC01 شامل این تعهدات است.

نسخه 1.1.0-beta04

1 دسامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-beta04 منتشر می شود. نسخه 1.1.0-beta04 شامل این تعهدات است.

ویژگی های جدید

  • به روز شده تا با Kotlin 1.6.0 سازگار باشد

نسخه 1.1.0-beta03

17 نوامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-beta03 منتشر می شود. نسخه 1.1.0-beta03 شامل این تعهدات است.

نسخه 1.1.0-beta02

3 نوامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-beta02 منتشر می شود. نسخه 1.1.0-beta02 شامل این تعهدات است.

تغییرات API

  • کد Snapshot به چندین پرونده تقسیم شد ، اما همه در کلاس JVM یکسان زندگی می کنند. ( IC6C98 )

نسخه 1.1.0-beta01

27 اکتبر 2021

androidx.compose.runtime:runtime-*:1.1.0-beta01 منتشر شده است. نسخه 1.1.0-beta01 شامل این تعهدات است.

نسخه 1.1.0-alpha06

13 اکتبر 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha06 منتشر می شود. نسخه 1.1.0-alpha06 شامل این تعهدات است.

تغییرات API

  • حذف InternalCompilerApi از روش های آهنگساز که لازم است به نام ماژول متقابل ( I1AA0B ) نامیده شوند
  • Recomposer.state توسط Recomposer.currentState مستهلک شده و جایگزین شده است تا نوع خود را به یک جریان دولتی تغییر دهد ( IC2AB3 ، B/197773820 )

نسخه 1.1.0-alpha05

29 سپتامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha05 منتشر می شود. نسخه 1.1.0-alpha05 شامل این تعهدات است.

نسخه 1.1.0-alpha04

15 سپتامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha04 منتشر شده است. نسخه 1.1.0-alpha04 شامل این تعهدات است.

نسخه 1.1.0-alpha03

1 سپتامبر 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha03 منتشر می شود. نسخه 1.1.0-alpha03 شامل این تعهدات است.

ویژگی های جدید

  • کامپایلر آهنگساز اکنون از نسخه های قدیمی تر از زمان اجرا (1.0) پشتیبانی می کند. قبل از این تغییر ، کامپایلر آهنگساز فقط با زمان اجرای آهنگ همان نسخه یا بعد از آن سازگار بود. پس از این تغییر ، کامپایلر آهنگساز با نسخه قدیمی تر از زمان اجرا (1.0) سازگار است. ( AOSP/1796968 )
  • آهنگسازی 1.1.0-alpha03 به روز شده به Kotlin 1.5.30 بستگی دارد. ( i74545 )

نسخه 1.1.0-alpha02

18 آگوست 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha02 منتشر می شود. نسخه 1.1.0-alpha02 شامل این تعهدات است.

نسخه 1.1.0-alpha01

4 آگوست 2021

androidx.compose.runtime:runtime-*:1.1.0-alpha01 منتشر شده است. نسخه 1.1.0-alpha01 شامل این تعهدات است.

نسخه 1.0

نسخه 1.0.5

3 نوامبر 2021

androidx.compose.runtime:runtime-*:1.0.5 منتشر می شود. نسخه 1.0.5 شامل این تعهدات است.

رفع اشکال

  • رفع یک ردیابی تصادف نمونه های مشتق شده. ( AOSP/1792247 )

نسخه 1.0.4

13 اکتبر 2021

androidx.compose.runtime:runtime-*:1.0.4 منتشر می شود. نسخه 1.0.4 شامل این تعهدات است.

به روز رسانی های وابستگی

  • به روز شده به Kotlin 1.5.31 بستگی دارد

نسخه 1.0.3

29 سپتامبر 2021

androidx.compose.runtime:runtime-*:1.0.3 منتشر می شود. نسخه 1.0.3 شامل این تعهدات است.

به روز رسانی های وابستگی

  • به روز شده به Kotlin 1.5.30 بستگی دارد

نسخه 1.0.2

1 سپتامبر 2021

androidx.compose.runtime:runtime-*:1.0.2 منتشر می شود. نسخه 1.0.2 شامل این تعهدات است.

برای پشتیبانی از نسخه 1.0.2 آهنگسازی به روز شده است. آهنگسازی 1.0.2 هنوز با Kotlin 1.5.21 سازگار است.

نسخه 1.0.1

4 آگوست 2021

androidx.compose.runtime:runtime-*:1.0.1 منتشر می شود. نسخه 1.0.1 شامل این تعهدات است.

به روز رسانی های وابستگی

  • به روز شده به Kotlin 1.5.21 بستگی دارد.

نسخه 1.0.0

28 ژوئیه 2021

androidx.compose.runtime:runtime-*:1.0.0 منتشر می شود. نسخه 1.0.0 شامل این تعهدات است.

ویژگی های اصلی 1.0.0

این اولین نسخه پایدار آهنگسازی است. لطفاً برای اطلاعات بیشتر به وبلاگ رسمی انتشار آهنگسازی مراجعه کنید!

مشکلات شناخته شده

  • اگر از Android Studio Bumblebee Canary 4 یا AGP 7.1.0-alpha04 / 7.1.0-alpha05 استفاده می کنید ، ممکن است به تصادف زیر ضربه بزنید:

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

    برای رفع آن ، به طور موقت minsdkversion خود را به 24+ در پرونده build.gradle خود افزایش دهید. این شماره در نسخه بعدی Android Studio Bumblebee و AGP 7.1 برطرف خواهد شد. ( b/194289155 )

نسخه 1.0.0-RC02

14 جولای 2021

androidx.compose.runtime:runtime-*:1.0.0-rc02 منتشر می شود. نسخه 1.0.0-RC02 شامل این تعهدات است.

  • شرایط مسابقه ثابت در SnapShotStateObserver باعث ایجاد NullPointerExceptions Spurratic می شود. ( 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 . ( b/193006595 ، b/192570897 )

نسخه 1.0.0-rc01

1 ژوئیه 2021

androidx.compose.runtime:runtime-*:1.0.0-rc01 منتشر می شود. نسخه 1.0.0-RC01 شامل این تعهدات است.

نسخه 1.0.0-beta09

16 ژوئن 2021

androidx.compose.runtime:runtime-*:1.0.0-beta09 منتشر می شود. نسخه 1.0.0-beta09 شامل این تعهدات است.

قوانین پروفایل اضافه شده

این نسخه قوانین پروفایل را به ماژول های آهنگسازی زیر اضافه می کند ( I14ED6 ):

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

قوانین پروفایل چیست؟

  • قوانین پروفایل برای یک کتابخانه در یک پرونده متنی baseline-prof.txt واقع در فهرست src/main یا معادل آن مشخص شده است. پرونده یک قانون در هر خط را مشخص می کند ، جایی که یک قانون در این مورد الگویی برای تطبیق با روش ها یا کلاس های موجود در کتابخانه است. نحو این قوانین یک سوپراست از فرمت پروفایل هنری قابل خواندن انسان است که هنگام استفاده از adb shell profman --dump-classes-and-methods ... این قوانین یکی از دو شکل را برای هدف قرار دادن روش ها یا کلاس ها می گیرد.

  • یک قانون روش الگوی زیر را خواهد داشت:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • و یک قانون کلاس الگوی زیر را خواهد داشت:

    <CLASS_DESCRIPTOR>
    
  • در اینجا <FLAGS> یک یا چند شخصیت H ، S و P است که نشان می دهد آیا این روش باید به عنوان "داغ" ، "راه اندازی" یا "شروع راه اندازی" پرچم گذاری شود یا خیر.

  • <CLASS_DESCRIPTOR> توصیف کننده ای برای کلاس است که روش هدفمند به آن تعلق دارد. به عنوان مثال ، کلاس androidx.compose.runtime.SlotTable دارای توصیف کننده Landroidx/compose/runtime/SlotTable; .

  • <METHOD_SIGNATURE> امضای روش است و شامل نام ، انواع پارامترها و انواع بازگشت روش است. به عنوان مثال ، روش fun isPlaced(): Boolean on LayoutNode دارای امضای isPlaced()Z است.

  • این الگوهای می توانند دارای کارتهای وحشی ( ** ، * و ? ) باشند تا یک قاعده واحد شامل چندین روش یا کلاس باشد.

قوانین چه کاری انجام می دهند؟

  • روشی که دارای پرچم H است ، نشان می دهد که این روش یک روش "داغ" است و باید قبل از زمان گردآوری شود.

  • روشی که دارای پرچم S است ، نشان می دهد که این روشی است که در هنگام راه اندازی نامیده می شود و باید قبل از زمان گردآوری شود تا از هزینه تدوین و تفسیر روش در زمان راه اندازی جلوگیری شود.

  • روشی که دارای پرچم P است ، نشان می دهد که این روشی است که پس از راه اندازی نامیده می شود.

  • کلاس که در این پرونده وجود دارد نشان می دهد که از آن در هنگام راه اندازی استفاده می شود و باید در پشته از قبل اختصاص داده شود تا از هزینه بارگذاری کلاس جلوگیری شود.

این چطوری کار میکنه؟

  • كتابخانه ها می توانند این قوانین را كه در آثار باستانی AAR بسته بندی می شود ، تعریف كنند. هنگامی که یک برنامه ساخته می شود که شامل این آثار باستانی است ، این قوانین با هم ادغام می شوند و از قوانین ادغام شده برای ساختن یک پروفایل هنری باینری جمع و جور که مخصوص برنامه است استفاده می شود. سپس هنر می تواند هنگام نصب برنامه بر روی دستگاه ها به منظور تهیه یک زیر مجموعه خاص از برنامه برای بهبود عملکرد برنامه ، به ویژه اولین اجرا ، از این نمایه استفاده کند. توجه داشته باشید که این هیچ تاثیری در برنامه های اشکال زدایی نخواهد داشت.

نسخه 1.0.0-beta08

2 ژوئن 2021

androidx.compose.runtime:runtime-*:1.0.0-beta08 منتشر می شود. نسخه 1.0.0-beta08 شامل این تعهدات است.

تغییرات API

  • State<T> اکنون State<out T> ( i69049 ) است
  • کنترل API ControlledComposition برای فعال کردن تغییرات بازخوانی در یک پاس تک بازپرداخت. ( IAAFD1 ، B/184173932 )

نسخه 1.0.0-beta07

18 مه 2021

androidx.compose.runtime:runtime-*:1.0.0-beta07 منتشر می شود. نسخه 1.0.0-beta07 شامل این تعهدات است.

تغییرات API

  • API های کامپایلر جدید افزود که به اطلاعات منبع تولید شده توسط کامپایلر در حین کوچک سازی منبع حذف می شود. ( ia34e6 )
  • ReusableContent معرفی می کند که به جای تعویض آنها هنگام تغییر کلید ، سعی در استفاده مجدد از گره ها در محتوای آن خواهد داشت. هنگامی که کلید تغییر می کند ، مقادیر قبلی در جدول شکاف برای محتوا به جز گره هایی که تولید شده اند و مقادیر استفاده شده برای به روزرسانی گره ها نادیده گرفته می شوند.

    ReusableComposeNode معرفی می کند که به جای تعویض آن ، همانطور که برای ComposeNode انجام می شود ، از گره ساطع شده استفاده مجدد می کند. ( i1dd86 )

  • @ComposeCompilerApi دیگر @RequiresOptIn ( IAB690 )

رفع اشکال

  • LazyColumn/Row اکنون حداکثر 2 مورد قبلاً قابل مشاهده را فعال (دفع نمی شود) حتی اگر قبلاً آنها را پیمایش کنید. این امر به مؤلفه اجازه می دهد تا از زیر مجموعه های فعال استفاده مجدد کند ، هنگامی که ما نیاز به تهیه یک مورد جدید داریم که عملکرد پیمایش را بهبود می بخشد. ( IE5555 )

نسخه 1.0.0-beta06

5 مه 2021

androidx.compose.runtime:runtime-*:1.0.0-beta06 منتشر می شود. نسخه 1.0.0-beta06 شامل این تعهدات است.

تغییرات API

  • @ComposeCompilerApi دیگر @RequiresOptIn ( IAB690 )

نسخه 1.0.0-beta05

21 آوریل 2021

androidx.compose.runtime:runtime-*:1.0.0-beta05 منتشر می شود. نسخه 1.0.0-beta05 شامل این تعهدات است.

تغییرات API

  • حذف شده @InternalComposeApi برای ضبط عکس فوری خوانده شده و می نویسد ( id134d )

رفع اشکال

  • پرونده های AndroidManifest از UI-Test-Manifest و Ui-Tooling-Data اکنون با Android 12 سازگار است ( I6F9DE ، B/184718994 )

نسخه 1.0.0-beta04

7 آوریل 2021

androidx.compose.runtime:runtime-*:1.0.0-beta04 منتشر می شود. نسخه 1.0.0-beta04 شامل این تعهدات است.

رفع اشکال

  • قبل از این تغییر ، توابع سازنده محلی بر اساس پارامترهای آنها قابل کاهش بودند. پس از این تغییر ، هیچ عملکردی در ترکیب محلی پرش نخواهد کرد. این تغییر به دلیل معمول و انتظار می رود که عملکردهای محلی پارامترهای والدین را ضبط کنند و پرش آنها منبع مشترک اشکالات است.

    به طور خلاصه ، مثال را در نظر بگیرید:

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

    قبل از این تغییر ، عملکرد نمایشگر ShowCount همیشه از بین می رود ، حتی پس از به روزرسانی پارامتر count . موضوع دیگه این نیست. ( i5648a )

  • رفع مشکل هنگام rememberSaveable() بازگرداندن مقدار قدیمی هنگام استفاده از پارامترهای ورودی ( I1B110 ، B/182403380 )

نسخه 1.0.0-beta03

24 مارس 2021

androidx.compose.runtime:runtime-*:1.0.0-beta03 منتشر می شود. نسخه 1.0.0-beta03 شامل این تعهدات است.

تغییرات API

  • DefaultMonotonicFrameClock کاهش می یابد. فراخوانی withFrameNanos یا Recomposer.runRecomposeAndApplyChanges بدون هیچگونه MonotonicFrameClock اکنون IllegalStateException است. ( i4eb0d )

نسخه 1.0.0-beta02

10 مارس 2021

androidx.compose.runtime:runtime-*:1.0.0-beta02 منتشر می شود. نسخه 1.0.0-beta02 شامل این تعهدات است.

رفع اشکال

  • اجرای محدودیت در استفاده عمومی از API های آزمایشی ( I6AA29 ، B/174531520 )
  • برای Broken rememberSaveable { mutableStateOf(0) } هنگام استفاده در یک مقصد از ناوبری. ( i1312b ، b/180042685 ، b/180701630 )

نسخه 1.0.0-beta01

24 فوریه 2021

androidx.compose.runtime:runtime-*:1.0.0-beta01 منتشر می شود. نسخه 1.0.0-beta01 شامل این تعهدات است.

این اولین نسخه از آهنگسازی 1.0.0 بتا است.

تغییرات API

  • Recomposer.runRecomposeConcurrentlyAndApplyChanges API تجربی را برای بازپرداخت ترکیبات بی اعتبار از حلقه فریم اصلی اضافه کنید. ( i342d0 )
  • هر آهنگسازی که با readonlycompable مشخص شده است اکنون زمان کامپایل شده است تا اطمینان حاصل شود که آنها فقط با سایر readonlycomposable تماس می گیرند ( i58961 )
  • defaultFactory for compositionLocalOf و staticCompositionLocalOf اکنون به جای اختیاری مورد نیاز است.

    این تغییرات خطای نوع بالقوه را برای انواع غیر قابل کنترل که در آن هیچ کارخانه پیش فرض ارائه نشده است ، حذف می کند. پیش از این ، این یک مرجع تهی برای یک نوع غیر قابل تهی فراهم می کند.

    برای انواع قابل برگشت ، تهیه { null } را به عنوان کارخانه پیش فرض در نظر بگیرید.

    ما استفاده از افراد محلی با انواع غیر قابل قبول را توصیه نمی کنیم مگر اینکه پیش فرض معقول ارائه شود. اگر هیچ پیش فرض معقولی وجود نداشته باشد ، لامبدا defaultFactory باید یک استثنا را پرتاب کند. با این حال ، پرتاب یک استثنا بدان معنی است که مصرف کنندگان محلی وابستگی ضمنی به ارائه آن دارند که توسط سیستم نوع اجرا نمی شود. ( IFBD2a )

  • نمادهای مستهلک شده از زمان اجرا ( I3252C ) حذف شدند

  • emptyContent() حذف می شود. در عوض از {} ​​استفاده کنید. ( IDB33F ، B/179432510 )

  • ارائه دهندگان به ComposionLocalProvider تغییر نام داده اند

    • سازنده ترکیب دیگر یک پارامتر کلیدی را نمی پذیرد و از بین رفته است.
    • CurrentCompositeKeyHash به جای یک عملکرد سطح بالایی ، به یک ویژگی سطح بالایی تبدیل شده است.
    • ComposionData و ComposionGroup به Androidx.compose.runtime.tooling namespace منتقل شده اند
    • ComposableLambda به جای کلاس بتونی یک رابط ساخته شده است و دیگر پارامترهای نوع ندارد.
    • ComposableLambdan به جای کلاس بتونی یک رابط کاربری ساخته شده است و دیگر پارامترهای نوع ندارد.
    • عملکرد SnapshotFlow به Androidx.compose.runtime namespace منتقل شده است
    • روش ادغام SnapshotmittionPolicy دیگر آزمایشی نیست
    • عملکرد ClearRoots سطح بالا Testonly حذف شده است. دیگر لازم نیست.
    • توابع keysourceinfoof و resetsourceinfo برداشته شده است. آنها دیگر لازم نیستند.
    • Composer.CollectKeySourceInformation حذف شده است. دیگر لازم نیست.
    • isjoinedkey ، پیوستن به KeyLeft ، و به روش های پیوستن به روش های پیوسته برداشته شده است. آنها دیگر لازم نیستند.
    • API های مختلف سطح بالا منتقل شده و به پرونده های مختلف سازماندهی شده اند. با توجه به معناشناسی کلاس پرونده Kotlin ، این باعث می شود سازگاری باینری اما سازگاری با منبع باشد ، بنابراین نباید برای اکثر کاربران مسئله ای باشد.
    • ( i99b7d ، b/177245490 )
  • SnapshotStateObserver دیگر تجربی نیست ( id2e6a )

  • برخی از API های قبلاً مستهلک را حذف کردند ( ICE5DA ، B/178633932 )

  • تغییرات API مواد زیر را ایجاد کرد:

    • پارامتر ContentPadding را به بالا/bottomAppbar اضافه کرد تا امکان سفارشی کردن بالشتک پیش فرض فراهم شود.
    • پارامترهای مرتب شده در پس زمینه برای پیروی از دستورالعمل های API برای پارامترهای مورد نیاز قبل از پارامترهای اختیاری.
    • پارامتر icon در BottomNavigationItem جابجا شده است تا بعد از selected و onClick باشد.
    • تغییر نام پارامتر alwaysShowLabels در bottomNavigationItem به alwaysShowLabel .
    • پارامترهای bodyContent در چند مؤلفه به content تغییر نام داد.
    • پارامترهای مرتب شده در ButtonDefaults.buttonColors() . لطفاً توجه داشته باشید که از آنجا که نوع پارامترها تغییر نکرده است ، این خطایی در کد شما ایجاد نمی کند - لطفاً اطمینان حاصل کنید که از پارامترهای نامگذاری شده استفاده می کنید یا سفارش را به صورت دستی به روز می کنید ، در غیر این صورت کد شما مانند گذشته کار نمی کند.
    • پارامتر secondaryVariant به darkColors() اضافه شد. این رنگ به طور معمول همانند secondary در موضوع تاریک است ، اما برای قوام و سفارشی سازی بیشتر اضافه می شود.
    • ElevationDefaults و AnimateElevation () از سطح API عمومی حذف شده است زیرا معمولاً مورد استفاده قرار نمی گرفتند / مفید.
    • با نام onValueChangeEnd در Slider به onValueChangeFinished تغییر نام داد و آن را باطل کرد.
    • تغییر نام پارامتر text در Snackbar به content برای قوام.
    • پارامتر contentPadding به DropdownMenuItem اضافه شده است تا امکان سفارشی کردن بالشتک پیش فرض و ساخته شده content در RowScope فراهم کند.
    • با نام ModalDrawerLayout به ModalDrawer تغییر نام داد.
    • تغییر نام داد به BottomDrawerLayout به BottomDrawer .
    • ( i1cc66 )

نسخه 1.0.0-alpha12

10 فوریه 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha12 منتشر می شود. نسخه 1.0.0-alpha12 شامل این تعهدات است.

تغییرات API

  • پشتیبانی از گروههای دیدنی از UIApplier حذف شد. ترکیبات emitView مستهلک حذف شدند. ( IFB214 )
  • ComposionReference به ComposionContext تغییر نام داده شده ( I53FCB )
  • ComponentActivity.SetContent به Androidx.activity.compose.setContent در Androidx.Activity: ماژول فعالیت-ترکیب منتقل شده است. ( ICF416 )
  • API Snapshot به روز شد تا با راهنمای API و همچنین مخفی کردن کلاس های اجرای داخلی از API عمومی سازگارتر باشد. ( id9e32 )
  • برای تغییر نام Ambient -> ComposionLocal تغییر نام داد. محیط هایی که قبلاً به نام Ambientfoo نامگذاری شده بودند ، اکنون ترکیبات Composions نامیده می شوند. ( i2d55d )
  • به ترتیب به ComposionLocal ، و Ambientof / staticambientof به ComposionLocalof / StaticcompositionLocalof تغییر نام داد. این تغییر کمک می کند تا هدف از ComposionLocal واضح تر شود: مکانیسمی برای تأمین / بازیابی مقادیر محلی به یک ترکیب. نمونه های ComposionLocal باید با Local پیشوند شوند ، مانند Val LocalFoo = CompositionLocalOf {foo (). ( IA55B6 )
  • TakemutablesNapShot و TakeNapShot به روش های همراه با عکس فوری حرکت کرده اند. ( i91f19 )
  • @ComposableContract به نفع سه حاشیه نویسی خاص دیگر کاهش یافته است.

    @ComposableContract(restartable = false) تبدیل شده است @NonRestartableComposable @ComposableContract(readonly = true) تبدیل شده است @ReadOnlyComposable @ComposableContract(preventCapture = true) تبدیل شده است @DisallowComposableCalls @ComposableContract(tracked = true) حذف شده است. ( i60a9d )

  • OptalContent () و (composable () -> واحد) .ORempty () برنامه های کاربردی کاهش یافته است زیرا آنها دیگر تأثیر عملکرد مثبت یا ارزش ندارند ( I0484D )

  • snapshotFlow و withMutableSnapshot دیگر آزمایشی نیستند ( i6a45f )

  • اکنون می توان بسته بندی کرد. بازپرداختهای بسته تا زمانی که ترکیبات کودک ترکیب شود ، بازپرداخت خود را ادامه می دهند. recomposer.shutdown تغییر نام داد تا با نزدیک شدن به کنسرو شود. ( IB6D76 )

  • The compose:runtime-dispatch Artifact اکنون کاهش یافته است. MonotonicFrameclock اکنون می توانید در آهنگسازی یافت: زمان اجرا و Androiduidispatcher را می توان در آهنگسازی یافت: UI. ( IB5C36 )

  • اهداف افزونه کامپایلر API برای استفاده از یک رابط به جای کلاس بتونی ، مجدداً مورد استفاده قرار گرفته است. رابط نیز دیگر از یک پارامتر نوع استفاده نمی کند.

    این یک تغییر داخلی است که نباید سازگاری کد منبع را تحت تأثیر قرار دهد بلکه یک تغییر شکستن باینری است. ( i3b922 ، b/169406779 )

  • SnapshotMutablestate معرفی شد ( ICFD03 )

  • یکبار مصرف یکبار مصرف به Disposaleefectresult تغییر نام داد ( ICA7C6 )

  • recomposer.current () حذف شده است. [چکیده] ComposeView اکنون به طور پیش فرض به recomposer های پر از پنجره که توسط ViewTreeLifecycleLowner برای پنجره هدایت می شود ، ساخته شده است. در حالی که چرخه عمر میزبان متوقف می شود ، کنه های انیمیشن مبتنی بر Framenanos متوقف می شوند. ( i38e11 )

  • recomposer.RunningRecomposers اکنون یک جریان دولتی جهانی از Readposerinfo را برای مشاهده وضعیت ترکیب مداوم در این فرآیند ارائه می دهد. این API را به recomposer.current () ترجیح دهید ، که اکنون کاهش یافته است. ( if8ebe )

  • یکبار مصرف یکبار مصرف به Disposaleefectresult تغییر نام داد ( I3EA68 )

نسخه 1.0.0-alpha11

28 ژانویه 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha11 منتشر می شود. نسخه 1.0.0-alpha11 شامل این تعهدات است.

تغییرات API

  • OnCommit ، Ondispose و Onactive به نفع API های جانبی و یکبار مصرف ( IF760E ) کاهش یافته است
  • API منتشر شده () و تمام بارهای اضافه شده به Composeode کاهش یافته و تغییر نام داده است. API ها یکسان هستند ، فقط یک نام متفاوت برای دنبال کردن کنوانسیون های نامگذاری آهنگسازی ( I4137B )
  • بی اعتبار و ترکیب () اکنون به ترتیب به نفع جریان فعلی و به یاد داشته باشید که به یاد داشته باشید. ( i583a8 )
  • به یاد داشته باشید که ComposionLifecyCleoBserver را جایگزین کنید و ComposionLifecyCleoBserver اکنون کاهش یافته است.

    RememberObserver جایگزینی برای CompositionLifecycleObserver با معناشناسی اصلاح شده و روش های تغییر نام است. تغییر به API جدید می تواند به صورت مکانیکی برای اشیاء انجام شود که فقط یک بار به خاطر سپرده می شوند و همچنان ادامه می یابد ، و همچنان ادامه دارد. با این حال ، اگر یک مرجع بیش از یک بار در یک ترکیب به یاد داشته باشید onRemembered ، برای هر مرجع که در آن onEnter فقط یک بار خوانده می شود ، فراخوانی می شود. در صورت استفاده onEnter شیء در زیرمجموعه‌ها ، مانند WithConstraints و Scaffold ضمانت تماس تک onEnter را غیرقابل اعتماد و برای RememberObserver حذف می کرد.

    onAbandoned RememberObserver که اگر RememberObserver که به یاد داشته باشید که remember ، اما در حالت ترکیب به یاد نمی آید ، به یاد داشته باشید که اگر نمونه به یاد داشته باشید ، در صورت بازگشت به یاد داشته باشید ، اما در حالت ترکیب به یاد نیامده است و بنابراین ، هرگز onRemembered نیامده است. این ممکن است در صورتی رخ دهد که یک استثنا قبل از تکمیل یا ترکیب آن را دور بیندازد زیرا حالت در حال تولید یک ترکیب است زیرا دیگر جریان ندارد یا در غیر این صورت دیگر نیازی به آن نیست. اگر نمونه ای از RememberObserver به دنبال توصیه مرجع واحد در بالا ، ردیابی یک منبع خارجی هر دو onForgotten و onAbandoned نشان می دهد که دیگر منبع لازم نیست. اگر شیء در حال ردیابی کار آغاز شده باشد یا منابعی که در onRemembered اختصاص داده شده است ، می توان onAbandoned نادیده گرفت زیرا در صورت فراخوانی onRemembered ، از آن فراخوانی نمی شود. ( I02C36 )

  • توابع collectAsState() را به صورت خطی علامت گذاری نکنید ( IA73E4 )

رفع اشکال

  • WithConstraints به عنوان BoxwithConstraints دوباره کار کرد و به Foundation.Layout منتقل شد. ( i9420b ، b/173387208 )
  • اهرم تست coroutinedispatcher در آزمایش ( i532b6 )

نسخه 1.0.0-alpha10

13 ژانویه 2021

androidx.compose.runtime:runtime-*:1.0.0-alpha10 منتشر شده است. نسخه 1.0.0-alpha10 شامل این تعهدات است.

تغییر تغییر

  • بازسازی API کامپایلر داخلی اجازه می دهد تا تغییر در گره های ایجاد شده در نتیجه ترکیب در مرحله "اعمال تغییرات" ترکیب ، پس از اتمام تمام توابع @Composable انجام شود.

    این یک تغییر رفتاری است که ممکن است کد برنامه را تحت تأثیر قرار دهد زیرا گره ها دیگر از API های داخلی و آزمایشی در دسترس نیستند تا بعد از اعمال تغییرات. این معمولاً می تواند توسط کد اطراف با چنین وابستگی هایی در یک ترکیب SideEffect که برای تعویق اجرای کد تا بعد از ایجاد گره ها و اولیه سازی انجام می شود ، انجام شود. ( I018DA )

تغییرات API

  • راهی برای ردیابی در صورتی که گیرنده تغییرات اعمال کرده باشد ، اضافه کرد. ( i1b3e2 )
  • گسترش [چکیده] API های ComposeView برای اجازه بازیافت بازیافت مبتنی بر آهنگسازی ، ترکیب آنها را برای بازآفرینی بعداً دفع می کند. API ها را برای نصب و کشف بازپرداختهای پنجره ای و بازپرداختهای ترکیب برای ایجاد ترکیبات کودک اضافه کنید.

    افزودن ViewCompositionStrategy برای پیکربندی استراتژی دفع ترکیب [چکیده] ComposeViews ؛ رفتار پیش فرض در جدا شدن از پنجره دفع می شود. ( i860ab )

رفع اشکال

  • recomposer اکنون جریان وضعیت فعلی خود را در معرض دید قرار می دهد و امکان نظارت بر فعالیت آن و فعالیت اثرات مرتبط را فراهم می کند. ( IFB2B9 )
  • Keyevent بومی اکنون می توانید از طریق keyevent.nativeyevent ( i87C57 ، b/173086397 ) قابل دسترسی باشید

نسخه 1.0.0-alpha09

16 دسامبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha09 منتشر می شود. نسخه 1.0.0-alpha09 شامل این تعهدات است.

تغییرات API

  • slottable ، slotreader و slotwriter را از API عمومی حذف کرد. اینها قبلاً به عنوان داخلی composeapi مشخص شده بودند. اکنون آنها در ماژول آهنگسازی داخلی هستند.

    CompositionData و ComposionGroup به عنوان جایگزینی برای API ابزار UI برای استفاده برای استخراج اطلاعات ترکیب اضافه شدند. اینها عمومی هستند اما برای استفاده در خارج از API UI-TOOLING در نظر گرفته نشده اند زیرا اطلاعات خام API UI را ارائه می دهند ( I31A9C )

  • کلاس Applier دیگر ( ID85B0 ) در نظر گرفته نمی شود

  • رابط Applier برای ساده کردن ساختمان درختان از پایین به جای از بالا به پایین تغییر کرده است.

    روش insert() به insertTopDown() تغییر نام داده شده است.

    یک روش جدید ، insertBottomUp() اضافه شد.

    یک وسیله نقلیه یا گره هایی را در درختی که در حال ویرایش است با استفاده از insertTopDown() یا insertBottomUp() بسته به نوع عملکرد بهتر درج می کند.

    برخی از درختان ، مانند LayoutNode و View ، برای ساخت از پایین به بالا از بالا به پایین بسیار کارآمدتر هستند. قبل از این تغییر ، برای اجرای از پایین به بالا که لازم بود برای هر کاربردی که نیاز به ساخت پایین به بالا برای عملکرد داشت ، کپی شود. با استفاده از این تغییر ، یک Applier insertBottomUp() برای ساختن درختی از پایین به بالا و insertTopDown() برای ساخت درخت از بالا به پایین ، غلبه می کند. ( ICBDC2 )

  • Compose supports property getters that can make composable invocations. Support for this is not going away, but the syntax for declaring a property getter as being @Composable is changing.

    The now-deprecated syntax for doing this was by annotating the property itself:

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

    The now-correct syntax for doing this is by annotating the getter of the property:

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

    Both syntaxes will work for some time, but the former deprecated syntax will eventually become a compile error. ( Id9197 )

رفع اشکال

Version 1.0.0-alpha08

2 دسامبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

تغییرات API

  • Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using children as the name for their trailing lambda to content , according to the lint check and guidance. ( Iec48e )
  • Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
  • RestorableStateHolder.withRestorableState function was renamed to RestorableStateProvider ( I66640 )

رفع اشکال

  • Deprecated Ambients named with Ambient as their suffix, and replaced them with new properties prefixed with Ambient, following other Ambients and Compose API guidelines. ( I33440 )
  • Remove old ui-test module and its stubs ( I3a7cb )

نسخه 1.0.0-alpha07

11 نوامبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

ویژگی های جدید

تغییرات API

  • The @UnionType annotation has been deprecated ( I57cde )
  • provideDefault was added as an alternative to provide for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
  • LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
  • Applier now has onBeginChanges/onEndChanges callbacks that are invoked when a Composer begins/is finished applying changes to the tree. These may be used for batching resource management if needed. ( Icf476 )
  • Recomposer now requires a CoroutineContext at construction ( Ic4610 )
  • Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
  • Deprecated rxjava2 adapters which does not take the initial value were removed ( Idb72f )

رفع اشکال

  • foundation.Text has been deprecated and replaced with material.Text. For a basic, unopinionated text API that does not consume values from a theme, see androidx.compose.foundation.BasicText. ( If64cb )
  • BaseTextField has been deprecated. Use BasicTextField instead. ( I896eb )
  • Several layout related symbols were moved from androidx.compose.ui to androidx.compose.layout.ui. ( I0fa98 , b/170475424 )

مشارکت خارجی

  • Added runtime-rxjava3 module for compose. Similar to runtime-rxjava2 ( I02cbf )

نسخه 1.0.0-alpha06

28 اکتبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha06 is released. نسخه 1.0.0-alpha06 حاوی این commit ها است.

تغییرات API

  • Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
  • Added DisposableEffect counterpart API to SideEffect, filling the role of onCommit-with-params but with a required onDispose.
    • Added rememberUpdatedState API to publish data from recomposition to ongoing or long-lived processes such as DisposableEffects or LaunchedTasks.
    • ( Id50b9 )
  • MutableVector now implements RandomAccess ( I85d73 , b/170461551 )
  • Added SideEffect composable for applying side effects of composition to objects managed by the composition. SideEffect is intended to replace the onCommit composable. ( Ia77c2 )
  • New experimental api RestorableStateHolder. It allows to save the state defined with [savedInstanceState] and [rememberSavedInstanceState] for the subtree before disposing it to make it possible to compose it back next time with the restored state. ( I66884 , b/166586419 )

رفع اشکال

  • Enable transitions in ComposeTestRule; remove option to enable the blinking cursor from ComposeTestRule. ( If0de3 )

نسخه 1.0.0-alpha05

14 اکتبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha05 is released. نسخه 1.0.0-alpha05 حاوی این commit ها است.

تغییرات API

  • Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
  • The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
  • Add produceState API for launching coroutines from composition that update a single State<T> value over time ( Id4a57 )
  • launchInComposition renamed to LaunchedTask to match Compose API guidelines ( I99a8e )
  • The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )

نسخه 1.0.0-alpha04

1 اکتبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha04 is released. نسخه 1.0.0-alpha04 حاوی این commit ها است.

تغییرات API

  • Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
  • Added derivedStateOf API to create State objects based on a calculation which may read (and derive from) other State objects ( If758b )
  • Added TestOnly API for SnapshotStateObserver ( I6e2a9 )

رفع اشکال

  • foundation.Box was deprecated. Please use foundation.layout.Box instead. ( Ie5950 , b/167680279 )

نسخه 1.0.0-alpha03

16 سپتامبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha03 is released. نسخه 1.0.0-alpha03 حاوی این commit ها است.

تغییرات API

  • CompositionCoroutineScope no longer implements MonotonicFrameClock . Callers of withFrameNanos should import the top-level function explicitly. ( Icb642 , b/166778123 )

رفع اشکال

  • Global testing functions such as onNode or waitForIdle are now deprecated, please migrate to their new counterparts that are defined on ComposeTestRule ( I7f45a )
  • launchInComposition no longer launches coroutines undispatched ( Ief6af , b/166486000 )

نسخه 1.0.0-alpha02

2 سپتامبر 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha02 is released. نسخه 1.0.0-alpha02 حاوی این commit ها است.

تغییرات API

  • Add snapshotFlow and withMutableSnapshot APIs for consuming and producing Snapshot data changes. ( I3e722 )
  • The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.

    This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )

  • Removed scheduling methods from EmbeddingContext ( I7b9be )

  • onPreCommit is deprecated; onCommit now has onPreCommit's behavior.

    onCommit and onActive now run in the same choreographer frame that the composition changes committed in rather than at the beginning of the next choreographer frame. ( I70403 )

نسخه 1.0.0-alpha01

26 آگوست 2020

androidx.compose.runtime:runtime-*:1.0.0-alpha01 is released. نسخه 1.0.0-alpha01 حاوی این commit ها است.

Version 0.1.0-dev

Version 0.1.0-dev17

19 آگوست 2020

androidx.compose.runtime:runtime-*:0.1.0-dev17 is released. Version 0.1.0-dev17 contains these commits.

تغییرات API

  • Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
  • Removed deprecated FrameManager calls.

    Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as mutableStateof() ( I80ba6 )

  • The state { ... } composable is now deprecated in favor of explicit calls to remember { mutableStateOf(...) } for clarity. This reduces the overall API surface and number of concepts for state management, and matches the by mutableStateOf() pattern for class property delegation. ( Ia5727 )

  • Flow.collectAsState now determines the default dispatcher from the composition itself rather than defaulting to Dispatchers.Main. ( I9c1d9 )

  • Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )

رفع اشکال

  • emitView was deprecated. Use AndroidView instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 )

Version 0.1.0-dev16

5 آگوست 2020

androidx.compose.runtime:runtime-*:0.1.0-dev16 is released. Version 0.1.0-dev16 contains these commits.

تغییرات API

  • The default mutation policy of mutableStateOf() , ambientOf() and savedInstanceStateOf() has changed to be structuralEqualityPolicy() instead of referentialEqualityPolicy() .

    The default for deciding if a new value assigned to a mutableStateOf() instance is considered a change now defaults to using == instead of using === .

    See https://kotlinlang.org/docs/reference/equality.html

    ambientOf() and savedInstanceStateOf() use mutableStateOf() in their implementations so they were changed to be consistent with mutableStateOf() .

    Using structural equality more closely matches developer expectations.

    مثلا،

    val state = mutableStateOf(1f)
    

    به دنبال،

    state.value = 1f
    

    will no longer be consider a change to state and uses of state during composition will no longer need to be recomposed.

    This is a breaking change but, in most cases (such when using classes that do not override equals() ), this will not have a noticeable effect on an application.

    Classes that do override equals() , such as data classes, might see a performance degradation as their equals() methods are now, by default, called when assigned to a mutableStateOf() .

    The previous behavior can be restored by adding the policy parameter policy = referentialEqualityPolicy() to calls to mutableStateOf() , ambientOf() and savedInstanceStateOf() . ( Ic21a7 )

  • Row and Column are now inline function significantly reducing the overhead of using them. ( I75c10 )

رفع اشکال

  • setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
  • Added MonotonicFrameAnimationClock that enables you to use a MonotonicFrameClock as an AnimationClockObservable to bridge the gap between the new coroutines based clocks and APIs that still use the old callback based clocks.

    The MonotonicFrameClock equivalent of ManualAnimationClock is now ManualFrameClock. ( I111c7 , b/161247083 )

  • Modifier.stateDraggable was completely reworked and renamed to Modifier.swipeable. A new SwipeableState class was introduced, and DrawerState and BottomDrawerState were refactored to inherit from it. [Modal/Bottom]DrawerLayout no longer take an onStateChange parameter. ( I72332 , b/148023068 )

  • Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type Modifier.padding().background() + anotherModifier , which breaks the chain and harder to read ( Iedd58 , b/161529964 )

  • SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )

  • Material FilledTextField was renamed to TextField and foundational TextField was renamed to BaseTextField to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 )

  • Modifier.drawBackground has been renamed to Modifier.background ( I13677 )

Version 0.1.0-dev15

22 جولای 2020

androidx.compose.runtime:runtime-*:0.1.0-dev15 is released. Version 0.1.0-dev15 contains these commits.

Dependencies Update

  • To use the 0.1.0-dev15 version of Compose, you will need to update your dependencies according to the new code snippets shown above in Declaring dependencies .

تغییرات API

  • @Model annotation is now deprecated. Use state and mutableStateOf as alternatives. This deprecation decision was reached after much careful discussion.

    توجیه

    Rationale includes but is not limited to:

    • Reduces API surface area and concepts we need to teach
    • More closely aligns with other comparable toolkits (Swift UI, React, Flutter)
    • Reversible decision. We can always bring @Model back later.
    • Removes corner-case usage and difficult to answer questions about configuring @Model as things we need to handle
    • @Model data classes, equals, hashcode, etc.
    • How do I have some properties “observed” and others not?
    • How do I specify structural vs. referential equality to be used in observation?
    • Reduces “magic” in the system. Would reduce the likelihood of someone assuming system was smarter than it is (ie, it knowing how to diff a list)
    • Makes the granularity of observation more intuitive.
    • Improves refactorability from variable -> property on class
    • Potentially opens up possibilities to do hand-crafted State-specific optimizations
    • More closely aligns with the rest of the ecosystem and reduces ambiguity towards immutable or us “embracing mutable state”

    Migration Notes

    Almost all existing usages of @Model are fairly trivially transformed in one of two ways. The example below has a @Model class with two properties just for the sake of example, and has it being used in a composable.

    @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 }
     )
    }
    

    Alternative 1: Use State<OriginalClass> and create copies.

    This approach is made easier with Kotlin's data classes. Essentially, make all previously var properties into val properties of a data class, and then use state instead of remember , and assign the state value to cloned copies of the original using the data class copy(...) convenience method.

    It's important to note that this approach only works when the only mutations to that class were done in the same scope that the State instance is created. If the class is internally mutating itself outside of the scope of usage, and you are relying on the observation of that, then the next approach is the one you will want to use.

    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: از mutableStateOf و نماینده های ویژگی استفاده کنید

    This approach is made easier with Kotlin's property delegates and the mutableStateOf API which allows you to create MutableState instances outside of composition. Essentially, replace all var properties of the original class with var properties with mutableStateOf as their property delegate. This has the advantage that the usage of the class will not change at all, only the internal implementation of it. The behavior is not completely identical to the original example though, as each property is now observed/subscribed to individually, so the recompositions you see after this refactor could be more narrow (a good thing).

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

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

  • Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).

    This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.

    This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.

    In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.

    Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.

    Known intentional behavioral changes resulting from this:

    1. Some calls will skip where they wouldn't have previously
    2. Composable expressions in default argument expressions are now correctly subscribed to and handled

    This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the زمان اجرا This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.

    Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of key have been removed. Use the vararg version going forward. 5. The Pivotal annotation was deprecated. Use key as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )

  • Added sortWith and removeRange to MutableVector ( Icccf7 )

  • Added default method implementations for CompositionLifecycleObserver ( I24289 )

  • Applier now requires a clear() method for disposing compositions ( Ibe697 )

  • Added asMutableList() to MutableVector to allow it to be passed to public API without having to copy the entire list. ( I298df )

  • Added rememberCoroutineScope() to obtain a managed CoroutineScope in composition for launching jobs in response to events. ( I0e264 )

  • MutableVector is a new collection that does not implement any of the standard Collection interface. This collection offers speed above other requirements and is intended to only be used in internal implementations. ( I8ebd6 )

  • Temporarily removed StableMutableList and StableMutableMap to avoid an issue in the version of Kotlin compose requires. These interfaces will be reintroduced once compose is updated to a version of Kotlin that doesn't have the issue.

    SnapshotStateList and SnapshotStateMap are now public but they will be deprecated once StableMutableList and StableMutableMap are restored. ( Ia7769 )

  • add top-level withFrameNanos function for animation timing ( Ie34c5 )

  • @Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )

  • RestartableFunction and associated APIs have been renamed to ComposableLambda, etc. These APIs were targeted only by the compiler so this should not affect source level compatibility normally. The rename was done primarily to communicate what this class is better when it shows up in stack traces ( I7eb25 )

  • @Composable annotation is no longer valid on classes ( Ia5f02 )

  • Ambient<T> is now @Stable instead of @Immutable ( I0b4bb )

  • Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )

  • The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the invalidate function to trigger a recomposition of the current scope. ( Ifc992 )

  • Observe is no longer a useful abstraction. If you need to replicate it, its implementation can be replicated by just creating a composable function which executes a composable lambda parameter. For example, @Composable fun Observe(body: @Composable () -> Unit) = body() ( I40d37 )

  • @Direct was deprecated in favor of @ComposableContract(restartable=false) ( If4708 )

  • Added an adapter for the recently introduced StateFlow which allows as to pre-populate the initial value so the returned State is non-nullable ( I61dd8 , b/156233789 )

  • Added an adapter for Flow. Example of the usage: val value by flow.collectAsState() ( If2198 , b/153375923 )

  • [Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Callers must add imports to continue using by state { ... } or by mutableStateOf(...) . ( I5312c )

  • androidx.compose.ViewComposer has been moved to androidx.ui.node.UiComposer androidx.compose.Emittable has been removed. It was redundant with ComponentNode. androidx.compose.ViewAdapters has been removed. They are no longer a supported use case. Compose.composeInto has been deprecated. Use setContent or setViewContent instead. Compose.disposeComposition has been deprecated. Use the dispose method on the Composition returned by setContent instead. androidx.compose.Compose.subcomposeInto has moved to androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt has been renamed to ComponentNode#insertAt ComponentNode#emitRemoveAt has been renamed to ComponentNode#removeAt ComponentNode#emitMode has been renamed to ComponentNode#move ( Idef00 )

  • Updated the ComposeFlags.COMPOSER_PARAM flag to be true , which will change the code generation strategy for the compose plugin. At a high level, this causes @Composable functions to be generated with an additional synthetic parameter, which is passed through to subsequent @Composable calls in order for the runtime to properly manage execution. This is a significant binary breaking change, however, should preserve source-level compatibility in all sanctioned usage of compose. ( I7971c )

  • Breaking changes to the ambients API. See log and Ambient<T> documentation for details ( I4c7ee , b/143769776 )

  • Added ui-livedata - new artifact with an adapter for LiveData. Example of the usage: val value by liveData.observeAsState() ( Ie9e8c , b/150465596 )

  • Rx adapters without explicit initial value are deprecated. Using null is not always the best default, for example when you have a List it is better to start with emptyList() or any other reasonable default ( I00025 , b/161348384 )

  • Added ui-rxjava2 - new artifact with adapters for RxJava2. Example of the usage: val value by observable.subscribeAsState() ( Ifab4b , b/153369097 )

  • savedInstanceState() can now be used with nullable types ( I6847f , b/153532190 )

  • New listSaver() and mapSaver() to make it easier to write custom Saver objects ( I8cf68 , b/152331508 )

  • New functions: savedInstanceState() and rememberSavedInstanceState(). They are similar to state() and remember() but have a saved instance state support build in ( If1987 , b/152025209 )

رفع اشکال

  • runOnIdleCompose renamed to runOnIdle ( I83607 )
  • Made LayoutNode experimental API ( I4f2e9 )
  • androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
  • Removed deprecated DrawBackground API in favor of drawBackground extension APIs on Modifier. Refactored color, brush and paint drawBackground implementations to reduce code paths as well as remove requirement for Modifier to be created as part of composition. ( I0343a )
  • Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. For consumers that still require access to a Canvas they can use the drawCanvas extension method which provides a callback to issue drawing commands with the underlying Canvas. ( I80afd )
  • WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
  • Added symmetric padding modifier. ( I39840 )
  • Updated wrapContentWidth and wrapContentHeight to expect vertical or horizontal Alignment rather than any Alignment. The gravity modifier was updated to accept vertical or horizontal Alignment. Row, Column and Stack were updated to support custom continuous Alignments. ( Ib0728 )
  • ui-text module is renamed as ui-text-core ( I57dec )
  • Improve DrawModifier API:
    • Made the receiver scope for draw() ContentDrawScope
    • Removed all parameters on draw()
    • DrawScope has same interface as former CanvasScope
    • ContentDrawScope has drawContent() method ( Ibaced , b/152919067 )
  • ColoredRect has been deprecated. Use Box(Modifier.preferredSize(width, height).drawBackground(color)) instead. ( I499fa , b/152753731 )
  • Replaced Modifier plus operator with factory extension functions ( I225e4 )
  • RowScope and ColumnScope members are now accessible outside Row and Column. ( I3a641 )
  • Renamed LayoutFlexible to LayoutWeight. Renamed tight parameter to fill. ( If4738 )
  • WithConstraints got LayoutDirection parameter ( I6d6f7 )
  • Renamed background to DrawBackground and make it to be memorized by default ( Ia0bd3 )
  • Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
  • runOnIdleCompose and runOnUiThread are now global functions instead of methods on ComposeTestRule. ( Icbe8f )

مشارکت خارجی

  • Remove unneeded API such as Looper and Handler from Compose Runtime porting layer ( I6847d )
  • Deprecate Flow<T>.collectAsState() with no initial value. Use StateFlow<T> or pass an explicit initial value instead. ( I63f98 , b/157674865 )