زمان اجرا را بنویسید
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
( به اسناد مرجع API برای همه بسته های نوشتن مراجعه کنید )
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
13 نوامبر 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
ساختار
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.7.5" implementation "androidx.compose.runtime:runtime-livedata:1.7.5" implementation "androidx.compose.runtime:runtime-rxjava2:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
کاتلین
dependencies { implementation("androidx.compose.runtime:runtime:1.7.5") implementation("androidx.compose.runtime:runtime-livedata:1.7.5") implementation("androidx.compose.runtime:runtime-rxjava2:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
Runtime Tracing نسخه 1.7
نسخه 1.7.0-rc01
18 سپتامبر 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01
منتشر شد. نسخه 1.7.0-rc01 حاوی این commit ها است.
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.8
نسخه 1.8.0-alpha06
13 نوامبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06
منتشر شد. نسخه 1.8.0-alpha06 حاوی این تعهدات است.
تغییرات API
- تغییرات در
PausableComposition
API. این شکستگیها نسبت به نسخههای قبلی 1.8.0-alpha (از 1.8.0-alpha02) تغییر میکنند، اما، از آنجایی که این APIهای جدید در 1.8.0 هستند، سازگاری با نسخههای قبلی حفظ نمیشود زیرا APIها هنوز در آلفا هستند. ( I39819 ) - API های ابزار را برای مشاهده ایجاد ترکیبات جدید در یک Recomposer اضافه می کند ( Iaeb7e )
-
snapshotId
از نوعLong
بهSnapshot
وid
منسوخ اضافه شد. شناسه یک عکس فوری ازInt
بهLong
تغییر کرد تا از سرریز شدن شناسه عکس فوری در سیستمهایی با نرخ فریم بسیار بالا و انیمیشنهای طولانی جلوگیری شود. این نوع انتظار/واقعی ساخته شده است که اجازه می دهد این نوعInt
یا نوع دیگری در پلتفرم هایی که نوعLong
بومی ندارند باشد. پلتفرمهایی کهLong
بومی ندارند، مانند جاوا اسکریپت، باید از نرخ فریم بالا (بیش از 1000 فریم در ثانیه) اجتناب کنند که تقریباً هر 24 روز یک بار برایInt
سرریز میشود. ( I38ac3 , b/374821679 )
رفع اشکال
- ثابت
providesDefault
برای یکprovides
. ( aosp/3318540 b/374263387 ) - بهینه سازی
ChangeList
( 3318538 )
نسخه 1.8.0-alpha05
30 اکتبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05
منتشر شد. نسخه 1.8.0-alpha05 حاوی این commit ها است.
رفع اشکال
- رفع سرریز پشته با افزودن
Int.MAX_VALUE
بهSnapshotIdSet
. ( b/370536104 , Ic4179f6 ) - میکرو بهینهسازیهای زمان اجرا ( I50c60 )
- به R8 اجازه دهید تا تماسهای زمان اجرای اشکالزدایی را حذف کند ( I8c44 )
- به جای بازگشتی،
compoundKeyOf
تکراری کنید ( I5817f )
مشارکت خارجی
- پیاده سازی پشته ها با لیست های مجموعه ( I7d47c )
نسخه 1.8.0-alpha04
16 اکتبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04
منتشر شد. نسخه 1.8.0-alpha04 حاوی این تعهدات است.
بهبود عملکرد
- ارائه شناسه عکس فوری برای رکوردهای حالت در سازنده ( 85c00f )
- Refactor
SnapshotState***
برای جلوگیری از خطاهای تأیید کلاس ( 6ee4a6 ) - اصلاح قوانین R8 برای جلوگیری از پرتاب درون خطی ( 5beb92 )
- عملیات میکرو بهینه سازی ( d73c5c )
- بهینه سازی تخصیص
SynchronizedObject
در JVM ( 2b043f )
نسخه 1.8.0-alpha03
2 اکتبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03
منتشر شد. نسخه 1.8.0-alpha03 حاوی این commit ها است.
بهبود عملکرد
- ایجاد تنبلی زمینه فرزند برای
rememberCoroutineScope
( f61464 )-
rememberCoroutineScope
معمولاً برای راهاندازی کوروتینها در پاسخ به رویدادهایی که پس از ترکیب اتفاق میافتند استفاده میشود. در برخی از سناریوها، این رویدادها ممکن است هرگز رخ ندهند، که منجر به افزایش هزینه های ایجاد شغل و لغو بدون هیچ سودی می شود. - محدوده بازگردانده شده توسط
rememberCoroutineScope
را ایجاد کنید که در صورت دسترسی به آن،coroutineContext
خود را با تنبلی ایجاد کند، از ایجاد شغل و لغو کامل در صورت عدم استفاده از scope جلوگیری کنید.
-
نسخه 1.8.0-alpha02
18 سپتامبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02
منتشر شد. نسخه 1.8.0-alpha02 حاوی این تعهدات است.
ویژگی های جدید
-
PausableComposition
اضافه شده است که اجازه می دهد تا یک ترکیب فرعی ایجاد کنید که می تواند در طول ترکیب متوقف شود و به صورت ناهمزمان در ترکیب اعمال شود. برای مکثی که در حال حاضر در حال توسعه است، پشتیبانی کامپایلر مورد نیاز است. ( I3394b )
نسخه 1.8.0-alpha01
4 سپتامبر 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01
منتشر شد. نسخه 1.8.0-alpha01 حاوی این تعهدات است.
نسخه 1.7
نسخه 1.7.5
30 اکتبر 2024
androidx.compose.runtime:runtime-*:1.7.5
منتشر شد. نسخه 1.7.5 حاوی این commit ها است.
نسخه 1.7.4
16 اکتبر 2024
androidx.compose.runtime:runtime-*:1.7.4
منتشر شد. نسخه 1.7.4 حاوی این commit ها است.
نسخه 1.7.3
2 اکتبر 2024
androidx.compose.runtime:runtime-*:1.7.3
منتشر شد. نسخه 1.7.3 شامل این commit ها است.
نسخه 1.7.2
18 سپتامبر 2024
androidx.compose.runtime:runtime-*:1.7.2
منتشر شد. نسخه 1.7.2 شامل این commit ها است.
نسخه 1.7.1
10 سپتامبر 2024
- بدون تغییر در مصنوعات اندروید. آرتیفکت های
-desktop
حذف شدند و مصنوعات-jvmStubs
و-linuxx64Stubs
اضافه شدند. هیچ یک از این اهداف قرار نیست مورد استفاده قرار گیرند، آنها مکان هایی هستند که به تلاش های Jetbrains Compose کمک می کنند.
نسخه 1.7.0
4 سپتامبر 2024
androidx.compose.runtime:runtime-*:1.7.0
منتشر شد. نسخه 1.7.0 شامل این commit ها است.
تغییرات مهم از 1.6.0
- قابلیت ارائه یک ترکیب محلی را اضافه کرد که بر اساس مقادیر دیگر محلیهای ترکیب محاسبه میشود یا بهطور پیشفرض، با استفاده از
compositionLocalWithComputedDefault()
یا با ارائه یک لامبدا برای محاسبه مقدار با استفاده ازprovidesComputed
به جایprovides
. - مقدار یک ترکیب محلی را می توان با استفاده از ویژگی
currentValue
از ترکیب محلی که از داخل لامبدا محاسبه می کند به دست آورد. این به جایcurrent
استفاده می شود که فقط در توابع@Composable
قابل دسترسی است. ( Iadbc0 ) - اشیاء حالت جدید ایجاد شده بلافاصله از سایر عکسهای فوری، از جمله عکس فوری سراسری، با وضعیت اولیهشان قابل دسترسی هستند. هر گونه تغییر بعدی تا زمانی که عکس فوری که در آن شی ایجاد شده اعمال نشود قابل مشاهده نیست.
- حالت اولیه
mutableStateOf()
و همچنین نسخه های اولیه آنها مقداری است که به عنوان پارامتر بهmutableStateOf()
ارسال می شود. حالت اولیهmutableStateListOf()
وmutableStateMapOf()
خالی است. -
Snapshot.isInSnapshot
وSnapshot.PreexistingSnapshotId
اضافه شد که برای فعال کردن یک شیء حالت برای پشتیبانی از دسترسی فوری از عکس فوری جهانی پس از ایجاد آن استفاده میشوند. - اشیاء حالت سفارشی می توانند با پیروی از الگوی تغییرات ایجاد شده در اشیاء عکس فوری داخلی، از دسترسی فوری پشتیبانی کنند. ( I84a17 )
-
nonSkippingGroupOptimization
برای کتابخانه های نوشتن فعال کنید. این باعث می شود که کد تولید شده برای همه توابع غیر قابل تنظیم مجدد در androidx کارآمدتر باشد. در آینده قصد داریم این را به صورت پیش فرض فعال کنیم. I ( acbc08 ) - لامبداهای قابل ترکیب را در ترکیبات فرعی روی همان قاب باطل کنید. ( 98301c )
- با همان ترتیبی که
onForgotten
درonRelease
تماس بگیرید. ( 2cd790 ) - فعال کردن حالت پرش قوی ( ed1766 )
-
currentCompoundHashKey
در موارد بیشتر منحصر به فرد کنید ( d4a872 )
نسخه 1.7.0-rc01
21 آگوست 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01
منتشر شد. نسخه 1.7.0-rc01 حاوی این commit ها است.
نسخه 1.7.0-beta07
7 آگوست 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07
منتشر شد. نسخه 1.7.0-beta07 حاوی این تعهدات است.
نسخه 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
برای intSnapshotThreadLocal
در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
اضافه شد که امکان مشاهده چرخه عمر گره های آهنگسازی را فراهم می کند ( I3731B ) -
@TestOnly
بهComposer.disableSourceInformation()
اضافه شد زیرا این عملکرد فقط برای تماس با یک آزمایش بی خطر است. ( i896c8 )
رفع اشکال
- بوکس را در ترکیبات محلی ترکیب کنید ( 62F66A )
- ویژگی های مرجع حافظه وضعیت عکس فوری را بهبود بخشید ( 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 شامل این تعهدات است.
تغییرات API
- نوع بیشتر/تهی بیشتر توابع مخفی درون خطی/مستهلک ( I24F91 )
نسخه 1.4.0-alpha04
11 ژانویه 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04
منتشر می شود. نسخه 1.4.0-alpha04 شامل این تعهدات است.
تغییرات API
-
TestMonotonicFrameClock
اکنون از حاشیه نویسی آزمایشی صحیح استفاده می کند. ( i95c9e )
رفع اشکال
- محافظت از
SnapshotStateObserver
از بازگشتی و همزمان اعمال می شود ( D902FB )
نسخه 1.4.0-alpha03
7 دسامبر 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03
منتشر می شود. نسخه 1.4.0-alpha03 شامل این تعهدات است.
تغییرات API
- اضافه کردن یک روش عمومی جدید به کلاس
ComposableMethod
مشابهjava.lang.reflect.Method#getParameterTypes()
( IAB0C3 )
رفع اشکال
- Snapshot Applice Applifications اکنون پس از اتمام
Recomposer
با استفاده از تغییرات ارسال می شود. ( IAD6C0 ، B/222093277 )
نسخه 1.4.0-alpha02
9 نوامبر 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02
منتشر می شود. نسخه 1.4.0-alpha02 شامل این تعهدات است.
نسخه 1.4.0-alpha01
24 اکتبر 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01
منتشر می شود. نسخه 1.4.0-alpha01 شامل این تعهدات است.
تغییرات API
-
SnapshotStateList
وSnapshotStateMap
اکنون با احترام به صراحت اجرای صریحtoList()
وtoMap()
دارند. این روشها محتوای فعلی خود را بدون استفاده از نسخه کپی باز می گردانند زیرا داده های تغییر ناپذیر داخلی را که برای ذخیره محتوای خود استفاده می شود ، باز می گردانند. به عنوان مثال می توان از این مقدار برای تولید جریان مقادیر با استفاده ازsnapshotFlow
بدون نیاز به کپی کردن داده ها استفاده کرد. ( ICA2BD )
نسخه 1.3
نسخه 1.3.3
11 ژانویه 2023
androidx.compose.runtime:runtime-*:1.3.3
منتشر می شود. نسخه 1.3.3 شامل این تعهدات است.
- از 1.3.2 هیچ تغییری وجود ندارد
نسخه 1.3.2
7 دسامبر 2022
androidx.compose.runtime:runtime-*:1.3.2
منتشر می شود. نسخه 1.3.2 شامل این تعهدات است.
رفع اشکال
- برای پشتیبانی از Androidx.compose.ui 1.3.2 به روز شده است
نسخه 1.3.1
9 نوامبر 2022
androidx.compose.runtime:runtime-*:1.3.1
منتشر می شود. نسخه 1.3.1 شامل این تعهدات است.
نسخه 1.3.0
24 اکتبر 2022
androidx.compose.runtime:runtime-*:1.3.0
منتشر می شود. نسخه 1.3.0 شامل این تعهدات است.
تغییرات مهم از 1.2.0
رسیدگی به استثناء / پشتیبانی ویرایش زنده
- به منظور پشتیبانی بهتر از ویرایش زنده ، API ها برای فعال کردن استثنائات در هنگام ترکیب اضافه شدند
- رسیدگی به خطای ترکیب برای بارگیری مجدد داغ
- خطاهای ویرایش زنده را در ذخیره/بازیابی انجام دهید
ردیابی ترکیب
- API های ردیابی زمان اجرا به منظور پشتیبانی از ابزار جدید ردیابی ترکیبات اضافه شدند
- تماس های شروع/پایان رویداد ردیابی کامپوزیت را ایجاد کنید
- مجدداً composerkt.traceeventstart (int ، string)
API های بازتاب ترکیب
- یک API جدید
ComposableMethod
اضافه شد تا امکان دعوت های قابل اعتماد تر مبتنی بر بازتاب API های کامپوزیت را فراهم کند. - برای آهنگسازی زمان اجرا ، invokecomposable را حرکت دهید
- API را برای استناد به روش کامپوزیت استفاده کنید
رفع زمان اجرا
- تست دامنه معیوب را برای بررسی جدول شکاف برای نشانگرها برطرف کنید
- اجازه دهید محتوای متحرک به داخل و خارج از SubComposeLayout منتقل شود
- انتقال محتوای به محتوای جدید یک زیرمجموعه را برطرف کنید
سیستم عکس فوری
- سیستم عکس فوری پیشرفت های مختلفی را در مورد مدیریت حافظه ، عملکرد و صحت به دست آورد.
- حذف دامنه را در SnapshotStateObserver بهینه کنید
- عکسهای فوری تو در تو را که از عکسهای شفاف ایجاد شده است دور کنید
- وضعیت مسابقه ثابت هنگام خواندن وضعیت از عکس فوری جهانی
- پشتیبانی مشتق شده در SnapshotStateObserver
- جلوگیری از از بین بردن وضعیت مشتق شده از ترکیب در هنگام خواندن در سایر حوزه ها
- از IdentityArraymap به جای هاشمپ در داخل مشتق استفاده کنید
- ناظران حالت مشتق شده را برای استفاده از بردار قابل تغییر به روز کنید
- پاکسازی حالت SnapshotStateObserver را به روز کنید
- SnapshotStateObserver.invalidated را با Arrayset جایگزین کنید
- وضعیت مسابقه ثابت هنگام خواندن وضعیت از عکس فوری جهانی
- استفاده از سوابق بی نظیر در محاسبه هش مشتق شده
- هنگام پیشبرد عکس فوری جهانی ، وضعیت مسابقه را برطرف کنید
- افزایش مشاهدات دامنه در SnapshotStateObserver
نسخه 1.3.0-RC01
5 اکتبر 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01
منتشر می شود. نسخه 1.3.0-RC01 شامل این تعهدات است.
رفع اشکال
-
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 شامل این تعهدات است.
نسخه 1.3.0-alpha02
27 جولای 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02
منتشر می شود. نسخه 1.3.0-alpha02 شامل این تعهدات است.
تغییرات API
- مجدداً
ComposerKt.traceEventStart(Int, String)
برای سازگاری به عقب ( i6e6de )
نسخه 1.3.0-alpha01
29 ژوئن 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01
منتشر شده است. نسخه 1.3.0-alpha01 شامل این تعهدات است.
تغییرات API
- عملکرد ابزار در حال حرکت به زمان اجرا ( I4F729 )
نسخه 1.2
نسخه 1.2.1
10 آگوست 2022
androidx.compose.runtime:runtime-*:1.2.1
منتشر می شود. نسخه 1.2.1 شامل این تعهدات است.
رفع اشکال
- نشت حافظه ثابت: عکسهای فوری تو در تو در تو را ایجاد کنید که از عکسهای شفاف B/239603305 ایجاد شده است
نسخه 1.2.0
27 جولای 2022
androidx.compose.runtime:runtime-*:1.2.0
منتشر می شود. نسخه 1.2.0 شامل این تعهدات است.
تغییرات مهم از 1.1.0
آهنگسازی زمان تعداد انگشت شماری از ویژگی های معرفی شده در 1.2.0 به همراه بسیاری از رفع اشکال تثبیت کننده داشت. مهمترین ویژگی جدید معرفی API
movableContentOf
بود که می تواند برای فعال کردن UX پیچیده مانند انتقال عناصر مشترک استفاده شود. APImovableContentOf
یک لامبدا ترکیب را به یک لامبدا تبدیل می کند که آن را به حالت و گره های مربوطه منتقل می کند و به هر مکان جدیدی که آن را نامیده می شود. هنگامی که تماس قبلی ترکیب را ترک می کند ، دولت به طور موقت حفظ می شود و اگر تماس جدیدی به لامبدا وارد ترکیب شود ، دولت و گره های مرتبط به محل تماس جدید منتقل می شوند. در صورت عدم افزودن تماس جدید ، دولت به طور دائم برداشته می شود و به یاد داشته باشید که ناظران به آنها اطلاع داده می شوند.اگر یک Lambda
movableContentOf
چندین بار در همان ترکیب خوانده شود ، حالت جدید و گره ها برای هر تماس ایجاد می شوند و با ترک تماس ها ترکیب و تماس های جدید وارد می شوند ، دولت از اولین تماس های ترک به تماس های وارد شده به ترتیب منتقل می شود. آنها خوانده می شوند. کلیه ایالتی که با تماس های جدید ادعا نمی شوند به طور دائم حذف می شوند.علاوه بر این و چند ویژگی جدید دیگر ، زمان زیادی برای تثبیت سیستم حالت اجرا و عکس فوری صرف شد. نشت حافظه های مختلف برداشته شد و مسیرهای کد بهینه شد.
لیست خلاصه ای از تغییرات را می توان در زیر یافت:
ویژگی های جدید در 1.2
- عکس فوری آزمایشی را ناامن اضافه کنید/ترک کنید
- Snapshot.AscontextExtement API را اضافه کنید
- snapshot.withoutreadobservation را معرفی کنید
- به حالت اجازه دهید تا در یک ترکیب حرکت کند
- ردیابی مجدد در آهنگسازی
عملکرد در 1.2
رفع اشکال در 1.2
- حذف اطلاعات پیگیری از Scopes Recompose Recompose
- جلوگیری از از بین بردن وضعیت مشتق شده از ترکیب در هنگام خواندن در سایر حوزه ها
- از removeScope کارآمدتر () در SnapshotStateObserver استفاده کنید
- وابستگی های حالت مشتق شده در ترکیب را تمیز کنید
- تغییر فعلی compositekeyhash پس از تجدید نظر داخلی در محتوای متحرک تغییر می کند
- در حین دفع ترکیبات بی اعتبار را پاک کنید
- حالت مشتق شده را در هنگام بازخوانی بخوانید
- هنگام مشاهده اشیاء حالت مشتق شده ، نشت حافظه را برطرف کنید
- کلید هش کامپوزیت MoveAbleContent ثابت است که سازگار باشد
- گوشه ای را برطرف کنید که آهنگساز خراب شود
- اطمینان از بی اعتبار شدن اجباری یک گروه مجدد نیروهای گروهی
- رفع اشکال هنگامی که به یاد داشته باشید با ورودی به ترتیب اشتباه ترمیم می شود
نسخه 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 شامل این تعهدات است.
تغییرات 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
در دامنه پرونده استفاده کنید. استفاده از حاشیه نویسی هدف در دامنه پرونده باعث می شود کامپایلر فرض کند که تمام عملکردهای سازنده موجود در پرونده در نظر گرفته شده است که به عنوان 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
به روز شده به Kotlin1.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 و AGP7.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
onLayoutNode
دارای امضای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
forcompositionLocalOf
و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
در موضوع تاریک است ، اما برای قوام و سفارشی سازی بیشتر اضافه می شود. - Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
- Renamed
onValueChangeEnd
inSlider
toonValueChangeFinished
and made it nullable. - Renamed
text
parameter inSnackbar
tocontent
for consistency. - Added
contentPadding
parameter toDropdownMenuItem
to allow customizing the default padding and madecontent
be an extension onRowScope
. - Renamed
ModalDrawerLayout
toModalDrawer
. - Renamed
BottomDrawerLayout
toBottomDrawer
. - ( I1cc66 )
Version 1.0.0-alpha12
10 فوریه 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12
is released. Version 1.0.0-alpha12 contains these commits.
تغییرات API
- Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
- CompositionReference renamed to CompositionContext ( I53fcb )
- ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
- Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
- Renamed Ambients to match the Ambient -> CompositionLocal rename. Ambients used to be named AmbientFoo, now CompositionLocals are named LocalFoo. ( I2d55d )
- Renamed Ambient to CompositionLocal, and ambientOf / staticAmbientOf to compositionLocalOf / staticCompositionLocalOf respectively. This change helps to make the purpose of CompositionLocal more clear: a mechanism for providing / retrieving values local to a composition. CompositionLocal instances should be prefixed with
Local
, such as val LocalFoo = compositionLocalOf { Foo() }. ( Ia55b6 ) - takeMutableSnapshot and takeSnapshot have moved to be companion methods of Snapshot. ( I91f19 )
@ComposableContract
has been deprecated in favor of three more specific annotations.@ComposableContract(restartable = false)
has become@NonRestartableComposable
@ComposableContract(readonly = true)
has become@ReadOnlyComposable
@ComposableContract(preventCapture = true)
has become@DisallowComposableCalls
@ComposableContract(tracked = true)
has been removed. ( I60a9d )emptyContent() and (@Composable () -> Unit).orEmpty() utilities have been deprecated as they no longer have any positive performance impact or value ( I0484d )
snapshotFlow
andwithMutableSnapshot
are no longer experimental ( I6a45f )Recomposers can now be closed. Closed recomposers will continue recomposition until composition child coroutines complete. Recomposer.shutDown renamed to cancel to contrast with close. ( Ib6d76 )
The
compose:runtime-dispatch
artifact is now deprecated. MonotonicFrameClock can now be found in compose:runtime and AndroidUiDispatcher can be found in compose:ui. ( Ib5c36 )The API the Compose compiler plugin targets has been refactored to use an interface instead of a concrete class. The interface also no longer uses a type parameter.
This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )
SnapshotMutableState was introduced ( Icfd03 )
DisposableEffectDisposable was renamed to DisposaleEffectResult ( Ica7c6 )
Removed Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )
Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( If8ebe )
DisposableEffectDisposable was renamed to DisposaleEffectResult ( I3ea68 )
Version 1.0.0-alpha11
28 ژانویه 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11
is released. Version 1.0.0-alpha11 contains these commits.
تغییرات API
- onCommit, onDispose, and onActive have been deprecated in favor of SideEffect and DisposableEffect APIs ( If760e )
- The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )
- invalidate and compositionReference() are now deprecated in favor of currentRecomposeScope and rememberCompositionReference respectively. ( I583a8 )
RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.
RememberObserver
is a replacement forCompositionLifecycleObserver
with modified semantics and renamed methods. Changing to the new API can be done mechanically for objects that are only remembered once which is, and continues to be, the recommended practice. However, if a reference was remembered more than once in a compositiononRemembered
is called for each reference whereonEnter
is only called once.onEnter
was called multiple time if the object was used in subcompositions, such asWithConstraints
andScaffold
making the singleonEnter
call guarantee unreliable and it was removed forRememberObserver
.RememberObserver
addsonAbandoned
which is called if theRememberObserver
instance is returned from the callback passed toremember
but was not remembered in the composition state and, therefore, will never haveonRemembered
called. This can occur if an exception terminates composition before completing or the composition is discarded because the state is was producing a composition for is no longer current or otherwise is no longer needed. If the instance ofRememberObserver
following the single reference recommendation above is tracking an external resource bothonForgotten
andonAbandoned
each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated inonRemembered
,onAbandoned
can be ignored as it will not be called ifonRemembered
is called. ( I02c36 )Do not mark
collectAsState()
functions as inline ( Ia73e4 )
رفع اشکال
- WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
- Leverage TestCoroutineDispatcher in testing ( I532b6 )
Version 1.0.0-alpha10
13 ژانویه 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10
is released. Version 1.0.0-alpha10 contains these commits.
شکستن تغییر
Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all
@Composable
functions have completed.This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a
SideEffect
composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )
تغییرات API
- Added a way to track if the recomposer has applied changes. ( I1b3e2 )
Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.
Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )
رفع اشکال
- Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
- The native keyEvent can now be accessed through keyEvent.nativeKeyEvent ( I87c57 , b/173086397 )
Version 1.0.0-alpha09
16 دسامبر 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09
is released. Version 1.0.0-alpha09 contains these commits.
تغییرات API
Removed SlotTable, SlotReader and SlotWriter from the public API. These were marked as InternalComposeAPI previously. Now they are internal to the compose module.
CompositionData and CompositionGroup were added as a replacement for the ui-tooling API to use to extract composition information. These are public but are not intended for use outside the ui-tooling API as they provide the raw information the ui-tooling API interprets ( I31a9c )
The Applier class is no longer considered an ( Id85b0 )
The
Applier
interface has changed to simplify building trees bottom-up instead of top-down.The
insert()
method has been renamed toinsertTopDown()
.A new method,
insertBottomUp()
, was added.An applier either inserts nodes into the tree it is editing using
insertTopDown()
orinsertBottomUp()
depending on which performs better.Some trees, such as
LayoutNode
andView
, are much more efficient to build bottom-up than top-down. Prior to this change, a stack of inserts was required to implement bottom-up which needed to be copied to every applier which needed bottom-up construction for performance. With this change anApplier
overridesinsertBottomUp()
to build a tree bottom-up andinsertTopDown()
to build the tree top-down. ( 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 )
رفع اشکال
- AndroidOwner made internal ( Ibcad0 , b/170296980 )
- subcomposeInto(LayoutNode) was made internal ( Id724a )
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 tocontent
, 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. نسخه 1.0.0-alpha07 حاوی این commit ها است.
ویژگی های جدید
تغییرات 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 toruntime-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 implementsMonotonicFrameClock
. Callers ofwithFrameNanos
should import the top-level function explicitly. ( Icb642 , b/166778123 )
رفع اشکال
- Global testing functions such as
onNode
orwaitForIdle
are now deprecated, please migrate to their new counterparts that are defined on ComposeTestRule ( I7f45a ) -
launchInComposition
no longer launches coroutines undispatched ( Ief6af , b/166486000 )
Version 1.0.0-alpha02
2 سپتامبر 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02
is released. نسخه 1.0.0-alpha02 حاوی این commit ها است.
تغییرات API
- Add
snapshotFlow
andwithMutableSnapshot
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 )
Version 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 toremember { mutableStateOf(...) }
for clarity. This reduces the overall API surface and number of concepts for state management, and matches theby 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. UseAndroidView
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()
andsavedInstanceStateOf()
has changed to bestructuralEqualityPolicy()
instead ofreferentialEqualityPolicy()
.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()
andsavedInstanceStateOf()
usemutableStateOf()
in their implementations so they were changed to be consistent withmutableStateOf()
.Using structural equality more closely matches developer expectations.
به عنوان مثال،
val state = mutableStateOf(1f)
followed by,
state.value = 1f
will no longer be consider a change to
state
and uses ofstate
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 asdata
classes, might see a performance degradation as theirequals()
methods are now, by default, called when assigned to amutableStateOf()
.The previous behavior can be restored by adding the policy parameter
policy = referentialEqualityPolicy()
to calls tomutableStateOf()
,ambientOf()
andsavedInstanceStateOf()
. ( Ic21a7 )Row
andColumn
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”
یادداشت های مهاجرت
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 intoval
properties of a data class, and then usestate
instead ofremember
, and assign the state value to cloned copies of the original using the data classcopy(...)
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) } ) }
Alternative 2: Use mutableStateOf and property delegates
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 allvar
properties of the original class withvar
properties withmutableStateOf
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:
- Some calls will skip where they wouldn't have previously
- 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 runtime. 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 thevararg
version going forward. 5. The Pivotal annotation was deprecated. Usekey
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
andStableMutableMap
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
andSnapshotStateMap
are now public but they will be deprecated onceStableMutableList
andStableMutableMap
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 { ... }
orby 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
orsetViewContent
instead. Compose.disposeComposition has been deprecated. Use thedispose
method on theComposition
returned bysetContent
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 betrue
, 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 torunOnIdle
( 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
andrunOnUiThread
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. UseStateFlow<T>
or pass an explicit initial value instead. ( I63f98 , b/157674865 )