زمان اجرای Compose
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(برای همه بستههای Compose، اسناد مرجع میانای برنامهسازی کاربردی را ببینید)
| جدیدترین بهروزرسانی | نسخه پایدار | نامزد انتشار | انتشار نسخه بتا | نسخه آلفا |
|---|---|---|---|---|
| ۷ اکتبر ۲۰۲۶ | ۱.۱۲.۱ | - | 1.13.0-beta01 | - |
ساختار
«ترکیب» ترکیبی از ۷ «شناسه گروه Maven» در androidx است. هر «گروه» حاوی زیرمجموعه هدفگذاریشدهای از عملکرد است که هرکدام مجموعه یادداشتهای انتشار خود را دارند.
این جدول گروهها و پیوندها به هر مجموعه از یادداشتهای انتشار را توضیح میدهد.
| گروه | شرح |
|---|---|
| compose.animation | در برنامههای Jetpack Compose خود پویانمایی بسازند تا تجربه کاربری را غنیتر کنند. |
| compose.compiler | با افزونه مترجم Kotlin، توابع @Composable را تبدیل کنید و بهینهسازیها را فعال کنید. |
| compose.foundation | برنامههای Jetpack Compose را با واحدهای سازنده آماده استفاده بنویسید و پایه را گسترش دهید تا عناصر سیستم طراحی خودتان را بسازید. |
| compose.material | با «عناصر طراحی Material» آماده استفاده، «میاناهای کاربر Jetpack Compose» بسازید. این نقطه ورود سطح بالاتر «نگارش» است که برای ارائه مؤلفههایی طراحی شده است که با مؤلفههای شرحدادهشده در www.material.io مطابقت دارند. |
| compose.material3 | ساختن میاناهای کاربر Jetpack Compose با «عناصر طراحی سهبعدی ۳»، تکامل بعدی «طراحی سهبعدی». «طراحی مادی ۳» شامل زمینهسازی و عناصر بهروزرسانیشده و ویژگیهای شخصیسازی «طراحی مادی شما» مثل رنگ پویا است و بهگونهای طراحی شده است که با سبک بصری جدید Android 12 و واسط کاربر سیستم منسجم باشد. |
| compose.runtime | واحدهای سازنده بنیادی مدل برنامهنویسی و مدیریت وضعیت Compose، و زمان اجرای اصلی برای هدفیابی «افزایه کامپایلر Compose». |
| compose.ui | عناصر اساسی میانای کاربر Compose که برای تعامل با دستگاه لازم است، ازجمله چیدمان، طراحی، و ورودی. |
اعلام وابستگیها
برای افزودن وابستگی به Compose، باید مخزن Google Maven را به پروژهتان اضافه کنید. برای اطلاعات بیشتر، مخزن Maven در Google را بخوانید.
وابستگیهای آرتیفکتهای موردنیازتان را در فایل build.gradle برای برنامه یا واحدتان اضافه کنید:
شیک
dependencies { implementation "androidx.compose.runtime:runtime:1.12.1" implementation "androidx.compose.runtime:runtime-livedata:1.12.1" implementation "androidx.compose.runtime:runtime-rxjava2:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
کاتلین
dependencies { implementation("androidx.compose.runtime:runtime:1.12.1") implementation("androidx.compose.runtime:runtime-livedata:1.12.1") implementation("androidx.compose.runtime:runtime-rxjava2:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
برای اطلاعات بیشتر درباره وابستگیها، افزودن وابستگیهای ساخت را ببینید.
بازخورد
بازخوردتان به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی پیدا کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبلاز ایجاد کتابخانه جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره میتوانید رأی خود را به یک مشکل موجود اضافه کنید.
برای کسب اطلاعات بیشتر، به مستندات «پیگیری مسائل» مراجعه کنید.
نسخه ۱.۱۳
نسخه 1.13.0-beta01
۷ اکتبر ۲۰۲۶
androidx.compose.runtime:runtime-*:1.13.0-beta01 منتشر شد. نسخه 1.13.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- کتابخانهها اکنون Kotlin 2.2 را هدفیابی میکنند و به kotlinc 2.2 نیاز دارند (I82396، b/498369605)
رفع اشکالها
- اشکالی رفع شد که در آن، ارسال
Float.NaNیاDouble.NaNبه تابع@Composableباعث میشد آن تابع هرگز از ترکیب مجدد صرفنظر نکند، حتی وقتی همه آرگومانها تغییر نکرده باشند. این اشکال بر عملکردهایی کهDp.Unspecifiedرا دریافت میکردند تأثیر میگذاشت زیراDp.UnspecifiedباFloat.NaNپشتیبانی میشود. (I7a643، b/564569402) - اکنون
CompositionObserverبرای هر مجوز آهنگسازی یکبار حل میشود. تنظیم یا جایگزینی آن باsetObserverدرحالیکه قطعهای درحال پیشرفت است، از گذر بعدی اعمال میشود. اکنون درج محتوای قابلانتقالonBeginCompositionوonEndCompositionرا نیز گزارش میکند. (Iad280) - بلوک محاسباتی
computedStateOfاکنون بهصورت فقطخواندنی اعمال میشود. نوشتن در وضعیت درون این بلوک باعث ایجادIllegalStateExceptionمیشود. (Id045f، b/456249371) - نشت حافظه در
LinkComposerبرطرف شد. در این نشت، با جابهجا کردنmovableContent، جایگاههای گروه بستهبندی در جابهجاییها حفظ میشد. (I17af2) -
androidx.lifecycle:lifecycle-runtimeپیشنیاز به نسخه ۲.۱۰.۰ بهروزرسانی شد. این نسخه برای اجرای بررسیهای لینت زمان اجرای چرخه حیات دستهای با AGP نسخه ۹.۵.۰-alpha04 یا جدیدتر الزامی است. (I99bfd، b/556807521) - از استفاده از
ComposeTracerدر رشته غیر اصلی پشتیبانی کنید. (I139e4)
همیاری خارجی
- مشکلی در
computedStateOfبرطرف شد که میتوانست هنگام خوانده شدن باSnapshotStateObserverمنجر به نامعتبر شدن غیرمنتظره شود. (Ie3f8b، b/561372470)
نسخه 1.13.0-alpha03
۹ سپتامبر ۲۰۲۶
androidx.compose.runtime:runtime-*:1.13.0-alpha03 منتشر شد. نسخه 1.13.0-alpha03 شامل این تعهدها است.
عملکرد
SlotWriter.forAllDataInRememberOrderدرونخطی برای حذف تخصیصها (Ie39f6)
نسخه 1.13.0-alpha02
۲۶ اوت ۲۰۲۶
androidx.compose.runtime:runtime-*:1.13.0-alpha02 منتشر شد. نسخه 1.13.0-alpha02 شامل این تغییرات است.
تغییرات میانای برنامهسازی کاربردی
-
withLocalRetainedValuesStoreاضافه شد که به شما امکان میدهد مقادیر را از لامبدای محتوا برگردانید. (I8e871، b/542168593) - سربارهای تهیپذیر
rememberSerializableبرایMutableStateاضافه شد. (I77b83، b/543285462)
نسخه 1.13.0-alpha01
۱۲ اوت ۲۰۲۶
androidx.compose.runtime:runtime-*:1.13.0-alpha01 منتشر شد. نسخه 1.13.0-alpha01 شامل این تغییرات است.
تغییرات میانای برنامهسازی کاربردی
پرچم ویژگی
LinkTableرا تنظیم کردهایم تا رقابت در مجموعههای قانون ادغامشده ProGuard را کاهش دهیم و سازگاری را در زمانی که برنامه خارج از Gradle کوچک میشود افزایش دهیم. نحو proguard که برای پیکربندی پرچم استفاده میشود کمی تغییر کرده است. در زیر ببینید و به پرانتز اضافه شده (I419da) توجه کنید:-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }
produceState()وFlow.collectAsState()اکنون آرگومانSnapshotMutationPolicyرا برای کنترل خطمشی برابری و ادغام شیءStateزیرین میپذیرند. (I0c167, b/405128869)
@ComposableTargetتکرارشونده شد. برای اطلاعات بیشتر، مستندات بهروزرسانیشده را ببینید. (I99a89، b/481422057)
RecompositionTracerبه جریان نامعتبرسازی بازترکیب ضبط اضافه شد (I1dbc1، Ia991d، b/531813367)observable
keysدرSaveableStateHolderآشکار شد تا مدیریت وضعیت پشته برگشت و ناوبری ساده شود و نیاز به ردیابیkeyخارجی برطرف شود. دسترسی ازطریقholder.keys؛ برداشتن باremoveState. (I9bbbb، b/398887924)
staticCompositionLocalWithComputedDefaultOfاضافه شد تاProvidableCompositionLocalsایجاد کند که درصورت ارائه شدن بهعنوان ثابت عمل میکند یا درصورت ارائه نشدن محاسبه میشود. (I844e4)
رفع اشکالها
- مشکلی در
GapComposerبرطرف شد که میتوانست باعث شود نمونههایRememberObserverپساز یک بلوکwithCompositionLocal، کارکردهای فراخوانی فراموشی خود را قبلازRememberObserverدر بلوک بهاشتباه اجرا کنند. (I4d54c) - رفع استثنای حجم پایین هنگام نوشتن در یک شیء حالت تغییرپذیر. (I48194، b/503110696)
- اشکالی در
SnapshotStateSet.writeToParcelبرطرف شد که فقط اولین ورودی را سریالسازی میکرد. (I64f4c، b/537461421) CancellationExceptionهایی که برای لغوLaunchedEffectها و بهخاطر سپردنCoroutineScopesاستفاده میشد برای وضوح بیشتر هنگام ظاهر شدن در ردیابی پشتهای اصلاح شده است. (I89840, b/449897855)- بااستفاده از دریافتکنندههای پویا، مقداردهی اولیه شیء همراه بهینهسازیشده
compose:runtimeکلاس مقدار (ComposeStackTraceMode،GroupKind). (I50640) - برداشتن الزام
compileSdk۳۷ (If78b4)
همیاری خارجی
- رفع مشکل عدم پاسخگویی ترکیبهای اصلی هنگام حذف ترکیب فرعی دارای خطا درطول «ویرایش زنده». (I3717c)
- بازیابی «ویرایش زنده» پساز بروز خطا در یک زیرترکیب ثابت شد تا ترکیبهای والد به مشاهده تغییرات وضعیت ادامه دهند. (I63fb5)
نسخه ۱.۱۲
نسخه ۱.۱۲.۱
۹ سپتامبر ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.1 بدون هیچ تغییری از زمان نسخه ۱.۱۲.۰ منتشر شده است. نسخه ۱.۱۲.۱ شامل این تعهدات است.
نسخه ۱.۱۲.۰
۱۲ اوت ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0 منتشر شد. نسخه ۱.۱۲.۰ شامل این تعهدات است.
تغییرات مهم از ۱.۱۱.۰:
بهروزرسانیهای جدول جای آگهی آزمایشی
- در راستای پایدارسازی پیادهسازی آزمایشی
LinkTableکه در نسخه ۱.۱۱ معرفی شد پیشرفت کردهایم. پیادهسازی جدید برای بهبود عملکرد ترکیب مجدد، بهویژه با تغییرات تصادفی کوچک، طراحی شده است. کاربران را تشویق میکنیم کهSlotTableجدید را امتحان کنند و هر مشکلی را که با آن مواجه میشوند گزارش کنند. برای اطلاعات بیشتر، بهComposeRuntimeFlags.isLinkBufferComposerEnabledمراجعه کنید.
Side Effect with Keys API
- یک سربار به
SideEffectاضافه شد که متغیرهای مستقل کلیدی را میپذیرد. از میانای برنامهسازی کاربردی جدید میتوان برای راهاندازیSideEffectهای یکباره بدون نیاز بهLaunchedEffectیاDisposableEffectکهCoroutineScopeیاonDisposeآنها استفاده نشده است استفاده کرد. (I528b2، b/476108743)
نسخه 1.12.0-rc01
۲۹ ژوئیه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-rc01 منتشر شد. نسخه 1.12.0-rc01 شامل این تعهدات است.
نسخه 1.12.0-beta02
۱ ژوئیه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-beta02 منتشر شد. نسخه 1.12.0-beta02 شامل این تعهدها است.
رفع اشکالها
ArrayIndexOutOfBoundsExceptionدرLinkComposerهنگام استفاده ازMovableContentتودرتو رفع شد. (I85daf)
نسخه 1.12.0-beta01
۱۷ ژوئن ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-beta01 منتشر شد. نسخه 1.12.0-beta01 شامل این تعهدات است.
رفع اشکالها
- مشکلی که باعث میشد اگر یک شیء حالت در یک عکس آنی ایجاد شود و سپس در یک عکس آنی همزمان قبلاز اعمال شدن عکس آنی اول اصلاح شود، به ناظران اعمال عکس آنی اطلاع داده نشود برطرف شد. (Ide27f، b/451479063)
- نشت احتمالی حافظه در نحوه ردیابی مقادیر
derivedStateOf()در ترکیب رفع شد. نوشتن به جلو به اشیایی که توسط وضعیت مشتقشده خوانده میشوند باعث شد نمونهderivedStateOf()توسط ترکیب تا زمانی که ترکیب دور انداخته شود حفظ شود. اگرderivedStateOf()بهدرستی بهیاد آورده نشود، این نشت میتواند قابلتوجه باشد زیرا هر ترکیب ممکن است ترکیب جدیدی ایجاد کند. (Ib5d87، b/516904513) - مشکلی در
LinkComposerبرطرف شد که میتوانست باعث شود عناصر ترکیبی هنگام نامعتبر شدن درطول ترکیب مجدد، بهجای ترکیب مجدد، از آنها صرفنظر شود. (Ie29fe) - مشکلی در سربار vararg مربوط به
rememberرفع شد که باعث میشد مقدار بهیادآوردهشده نامعتبر نشود و مقدار نادرستی از بهیادآوری برگردانده شود. این اتفاق زمانی رخ میدهد کهrememberبا کلیدهای کمتری که با کلیدهای قبلی یکسان هستند، منهای عناصر انتهای آرایه، دوباره ترکیب شود. برای دریافت این اصلاح، باید کد تحتتأثیر قرارگرفته دوباره کامپایل شود. (I0736b)
همیاری خارجی
- ردیابی پرحرف برای
DisposableEffectوSideEffectدر زمان اجرای «نوشتن» اضافه شد. (Ie451f)
نسخه 1.12.0-alpha03
۱۹ مه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-alpha03 منتشر شد. نسخه 1.12.0-alpha03 شامل این تعهدات است.
رفع اشکالها
- چندین مشکل در
LinkTableحل شد که در آنها ردیابی پشتهای تشخیصی بدون اطلاعات یا دارای اطلاعات ناقص بود (I3918c) - مشکلی در نوع داده داخلی برطرف شد که در موارد نادر با محتوای قابلانتقال میتوانست باعث استثنا شود. (Ic478f، b/507724717)
- مشکلی در رفتار رد کردن
LinkComposerرفع شد که منجر به رفتار ناسازگار در مقایسه باGapComposer، محاسبه مجدد غیرمنتظره آرگومانهای پیشفرض، و زمانهای اتمام آزمایش میشد. (I783dc)
نسخه 1.12.0-alpha02
۶ مه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-alpha02 منتشر شد. نسخه 1.12.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- یک سربار به
SideEffectاضافه شد که آرگومانهای کلیدی را میپذیرد. از میانای برنامهسازی کاربردی جدید میتوان برای راهاندازیSideEffectsیکباره بدون نیاز بهLaunchedEffectیاDisposableEffectکهCoroutineScopeیاonDisposeآن استفاده نشده است استفاده کرد. (I528b2، b/476108743)
نسخه 1.12.0-alpha01
۲۲ آوریل ۲۰۲۶
androidx.compose.runtime:runtime-*:1.12.0-alpha01 منتشر شد. نسخه 1.12.0-alpha01 شامل این تعهدها است.
رفع اشکالها
- مشکلی در LinkTable که میتوانست باعث عملیات گره نامعتبر شود برطرف شد. (I491c3)
- compileSdk در Compose به API 37 بهروز شد. این یعنی هنگام استفاده از «نوشتن»، حداقل نسخه AGP باید ۹.۲.۰ باشد. (Id45cd، b/413674743)
- مشکل ذخیره کردن در حافظه نهان در LinkTable برطرف شد. در این مشکل، درجهای محتوا که باعث تغییر اندازه میشدند میتوانستند منجر به خوانده شدن مقادیر قدیمی شوند که این امر میتوانست باعث شود CompositionLocals حل نشود. (I8016c)
- اشکالی که باعث میشد
T.writableRecordIllegalStateExceptionهای غیرضروری ایجاد کند برطرف شد (Ia778f، b/440975176)
نسخه ۱.۷ ردیابی زمان اجرا
نسخه 1.7.0-rc01
۱۸ سپتامبر ۲۰۲۴
androidx.compose.runtime:runtime-tracing:1.7.0-rc01 منتشر شد. نسخه 1.7.0-rc01 شامل این تعهدات است.
نسخه ۱.۰ ردیابی زمان اجرا
نسخه 1.0.0-beta01
۲۹ نوامبر ۲۰۲۳
androidx.compose.runtime:runtime-tracing:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 شامل این تعهدات است.
نسخه 1.0.0-alpha05
۱۵ نوامبر ۲۰۲۳
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 شامل این تعهدات است.
رفع اشکالها
- وابستگیها به پایینترین نسخههای پایدار پشتیبانیشده سنجاق شد (یعنی compose-runtime و tracing-perfetto) - مشکلی برطرف شد که در آن compose-runtime-tracing نسخه جدیدتری از compose-runtime را به برنامه اضافه میکرد.
نسخه 1.0.0-alpha04
۲۳ اوت ۲۰۲۳
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 منتشر شد. نسخه 1.0.0-alpha04 شامل این تعهدات است.
ویژگیهای جدید
- با جدیدترین نسخههای Benchmark و Tracing Perfetto سازگار است و از «ردیابی ترکیب» در راهاندازی برنامه (راهاندازی سرد) پشتیبانی میکند، برای نمونه در AndroidX Benchmark و Android Studio (از Hedgehog Beta 2 شروع میشود).
تغییرات میانای برنامهسازی کاربردی
- نام
androidx.tracing.perfetto.Traceبهandroidx.tracing.perfetto.PerfettoSdkTraceتغییر کرد. (I44af8) - هماهنگ کردن «میاناهای برنامهسازی کاربردی کیت توسعه نرمافزار ردیابی Perfetto» با
android.os.Trace. (I73ba0, b/282199917) - پیشنیازهای ردیابی در راهاندازی برنامه. (Iad890)
- فایلهای API عمومی و آزمایشی ادغامشده (I0f2e1، b/278769092)
نسخه 1.0.0-alpha02
۸ فوریه ۲۰۲۳
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 شامل این تعهدات است.
ویژگیهای جدید
- بدون تغییرات عملکردی. بهینهسازیهای عملکرد متعدد در وابستگیهای پاییندست
androidx.tracing:tracing-perfetto*.
نسخه 1.0.0-alpha01
۷ سپتامبر ۲۰۲۲
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 شامل این تعهدات است.
ویژگیهای جدید
-
androidx.compose.runtime:runtime-tracingکتابخانهای است که - درصورت وجود ابزارهای پشتیبانیکننده آن (بهزودی ارائه میشود) - امکان ردیابی گسترده در برنامه Compose را فراهم میکند. این نسخه پخش اولیه 1.0.0-alpha01 است.
نسخه ۱.۱۱
نسخه ۱.۱۱.۴
۱ ژوئیه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.4 منتشر شد. نسخه ۱.۱۱.۴ شامل این تعهدات است.
نسخه ۱.۱۱.۳
۱۷ ژوئن ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.3 منتشر شد. نسخه ۱.۱۱.۳ شامل این تعهدات است.
نسخه ۱.۱۱.۲
۱۹ مه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.2 منتشر شد. نسخه ۱.۱۱.۲ شامل این تعهدات است.
رفع اشکالها
- مشکلی در نوع داده داخلی برطرف شد که در موارد نادر با محتوای قابلانتقال میتوانست باعث استثنا شود. (Ic478f، b/507724717)
نسخه ۱.۱۱.۱
۶ مه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.1 منتشر شد. نسخه ۱.۱۱.۱ شامل این تعهدات است.
نسخه ۱.۱۱.۰
۲۲ آوریل ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0 منتشر شد. نسخه ۱.۱۱.۰ شامل این تعهدات است.
تغییرات مهم از تاریخ ۱.۱۰.۰:
New Experimental SlotTable
SlotTableرا بازنویسی کردهایم. این ساختار داده داخلی است که «زمان اجرای نوشتن» برای پیگیری سلسلهمراتب ترکیب شما، تعیین تغییرات ناشی از ترکیب مجدد، و ذخیره مقادیر بهیادمانده استفاده میکند. این بازنویسی بر بهبود عملکرد بازترکیب متمرکز است و این کار را عمدتاً با استفاده از عملیات کپی حافظه بسیار کمتر از بافر شکافSlotTableانجام میدهد. برخیاز تغییرات در سلسلهمراتب ترکیب شما، مانند تغییر ترتیب فهرست طولانی موارد، میتواند بیشاز دو برابر سریعتر ازSlotTableقبلی ترکیب مجدد شود. بیشتر عملیات دیگر در اجرای جدیدSlotTableحدود ۱۰٪ سریعتر بازسازی میشوند. پیادهسازیSlotTableکه زمان اجرا استفاده میکند بر همه روشهای «ترکیبشدنی» تأثیر میگذارد و نیازی به بازکامپایل ندارد. استفاده ازSlotTableجدید تغییری در کل برنامه است، ازجمله برای وابستگیها.- این پیادهسازی
SlotTableهنوز آزمایشی است و درحالحاضر بهطور پیشفرض غیرفعال است. با تنظیمComposeRuntimeFlags.isLinkBufferComposerEnabledرویtrueمیتوانید آن را فعال کنید. در ساختهای انتشار با فعال بودن کوچکسازی، این مقدار در فایل پیشفرض proguard-rules.pro که همراه با زمان اجرا ارائه میشود، نادرست درنظر گرفته میشود. برای فعال کردنSlotTableجدید در تولید، این فرض باید در فایلproguard-rules.proبرنامه به درست تغییر کند. برای اطلاعات بیشتر، مستنداتComposeRuntimeFlags.isLinkBufferComposerEnabledرا ببینید.
ترکیب پیشفرض میزبان محلی
-
compositionLocalWithHostDefaultOfاضافه شد که امکان تعریف CompositionLocals را فراهم میکند که برای مقادیر پیشفرض خود به محیط میزبانی (برای نمونه، برچسبهای AndroidView) برمیگردند.
مشاهده snapshotFlow کارآمدتر با SnapshotFlowManager
- میانای برنامهسازی کاربردی
SnapshotFlowManagerبرای مشاهده کارآمدترsnapshotFlowمعرفی شد. استفاده مجدد ازSnapshotFlowManagerیکسان برای چندین نمونهsnapshotFlowباعث میشود تعداد کمتری از ناظران اعمال لحظهای ثبت شوند و بهروزرسانیهای وضعیت سریعتر پردازش شوند.
نسخه 1.11.0-rc01
۸ آوریل ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-rc01 منتشر شد. نسخه 1.11.0-rc01 شامل این تعهدات است.
نسخه 1.11.0-beta02
۲۵ مارس ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-beta02 منتشر شد. نسخه 1.11.0-beta02 شامل این تعهدات است.
رفع اشکالها
- مشکلی را در WASM برطرف میکند که در آن کدهای درهمسازی هویت همیشه ۰ برمیگرداند (I9d70c)
- رفع مشکلی که در آن ممکن است وضعیت مشتقشده والد نتواند بهدرستی نامعتبر شود وقتی وابستگیهای وضعیت مشتقشده تودرتو تغییر میکند (Ia7981، b/481750019)
- مشکلی را در
LinkTableبرطرف میکند که میتواند باعث نوشتنهای نامعتبر پساز دور انداختن یک ترکیب شود. (I5c97a) - مشکلی را در
LinkTableبرطرف میکند که میتواند باعث نوشتن نامعتبر هنگام تغییر اندازه جدول درطول عملیات کپی شود (Ie7edf) - مشکلی در
LinkTableبرطرف شد که مقدار ذخیرهشده گره را بهاشتباه بهروزرسانی میکرد (I58a4a) - اکنون
LinkTableبا ظرفیت کمتری مقداردهی اولیه میشود که از خطاهای «خارج از حافظه» هنگام ایجاد بسیاری از ترکیبهای فرعی در دستگاههایی با اندازههای پشته کوچکتر جلوگیری میکند (I112b9)
نسخه 1.11.0-beta01
۱۱ مارس ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-beta01 منتشر شد. نسخه 1.11.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
SnapshotFlowManagerو سربارsnapshotFlowکه پارامترmanagerرا میپذیرند اکنون بهعنوان آزمایشی علامتگذاری شدهاند (I5c1a5، b/486077876، I0de71، b/486077876)
رفع اشکالها
- رفع خرابی «اعمال روی گره غیرفعال فراخوانده میشود» در ترکیب قابلتوقف (I880c0، b/484300733)
- مشکلی در
LinkTableبرطرف شد که هنگام استفاده ازMovableContentمیتوانست باعثArrayIndexOutOfBoundsExceptionsیا خراب شدن فراداده شود. (I8452b) - رفع مشکلی در
LinkTableکه مانع از تکمیل صحیح ردپاهای تشخیص خرابی میشد (I59868) - مشکلی در SlotTable جدید برطرف شد که در آن
RememberObserversاستفادهشده درMovableContentمیتوانست هنگام برداشته شدن باعث حلقهOutOfMemoryError/infiniteشود. (I884e7)
نسخه 1.11.0-alpha06
۲۵ فوریه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-alpha06 منتشر شد. نسخه 1.11.0-alpha06 شامل این تعهدها است.
نسخه 1.11.0-alpha05
۱۱ فوریه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-alpha05 منتشر شد. نسخه 1.11.0-alpha05 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
ComposeRuntimeFlags.isMovingNestedMovableContentEnabled، پرچم ویژگی زمان اجرا، برداشته شده است. (I3ee62، b/455588848) -
HostDefaultKeyازopen classبهinterfaceتبدیل شد. این امر به کلیدها امکان میدهد بدون محدود شدن توسط وراثت تککلاسی، چندین سازوکار جستجو (مثلViewTreeHostDefaultKey) را پیادهسازی کنند و ازاینطریق قابلیت توسعهپذیری را برای محیطهای میزبانی سفارشی بهبود بخشند. (I917a2) -
HostDefaultProviderوLocalHostDefaultProviderاکنونpublicهستند و به محیطهای میزبانی سفارشی اجازه میدهند مقادیر محلیهای مختص پلاتفرم را تعریف کنند. (I5bdbe)
رفع اشکالها
- امکان بنبست هنگام اجرای همزمان دو
snapshotFlowدر دو رشته را ازبین برد. (Ib4339) - رفع مشکلی در جدول پیوند که میتوانست باعث شود ابزارها عناصر ترکیبی را در سلسلهمراتب حذف کنند و ترکیبهای فرعی را بهاشتباه پیوند دهند (I7178e)
همیاری خارجی
- رفع مثبت کاذب Lint هنگام استفاده از عملگر یکتایی برای اصلاح مقدار در بلوک produceState (I1c7c9)
نسخه 1.11.0-alpha04
۲۸ ژانویه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-alpha04 منتشر شد. نسخه 1.11.0-alpha04 شامل این تعهدات است.
تغییرات API.
SlotTableرا بازنویسی کردهایم. این ساختار داده داخلی است که «زمان اجرای نوشتن» برای پیگیری سلسلهمراتب ترکیب شما، تعیین تغییرات ناشی از ترکیب مجدد، و ذخیره مقادیر بهیادمانده استفاده میکند. این بازنویسی بر بهبود عملکرد بازترکیب متمرکز است و این کار را عمدتاً با استفاده از عملیات کپی حافظه بسیار کمتر از بافر شکافSlotTableانجام میدهد. برخیاز تغییرات در سلسلهمراتب ترکیب شما، مانند تغییر ترتیب فهرست طولانی موارد، میتواند بیشاز دو برابر سریعتر ازSlotTableقبلی ترکیب مجدد شود. بیشتر عملیات دیگر در اجرای جدیدSlotTableحدود ۱۰٪ سریعتر بازسازی میشوند. پیادهسازیSlotTableکه زمان اجرا استفاده میکند بر همه روشهای «ترکیبشدنی» تأثیر میگذارد و نیازی به بازکامپایل ندارد. استفاده ازSlotTableجدید تغییری در کل برنامه است، ازجمله برای وابستگیها.- این پیادهسازی
SlotTableدرحالحاضر بهطور پیشفرض غیرفعال است و با تنظیمComposeRuntimeFlags.isLinkBufferComposerEnabledرویtrueمیتوان آن را فعال کرد. - در ساختهای انتشار با فعال بودن کوچکسازی، این مقدار در فایل
proguard-rules.proپیشفرض ارائهشده با زمان اجراfalseدرنظر گرفته میشود. برای فعال کردنSlotTableجدید در تولید، این فرض باید در فایلproguard-rules.proبرنامه بهtrueتغییر کند. برای اطلاعات بیشتر، مستنداتComposeRuntimeFlags.isLinkBufferComposerEnabledرا ببینید. (Ib741d، b/268366116)
ویژگیهای جدید
compositionLocalWithHostDefaultOfاضافه شد که امکان تعریفCompositionLocalsرا فراهم میکند که برای مقادیر پیشفرض خود به محیط میزبانی (برای نمونه، برچسبهای Android View) برمیگردد. (I15b81)
رفع اشکالها
- مطمئن شدیم که تا زمانی که اعلانهای درخواست لازم ارسال نشده است،
Snapshot.sendApplyNotificationsتماس نمیتواند برگردد. (I95f20، b/418800424) - از تنزل پشتههای اطلاعات منبع به کلیدهای گروه در مواردی که اطلاعات منبع در زمان اجرا وجود ندارد جلوگیری کنید. (If3712)
-
ComposeToolingFlagsرا معرفی کن. این پرچمها دائمی درنظر گرفته شدهاند (برخلافComposeRuntimeFlags) و برای ویژگیهای ابزاری که تأثیر غیرقابلچشمپوشی بر عملکرد دارند استفاده میشوند. (I87863)
همیاری خارجی
- میانای برنامهسازی کاربردی
RecomposerInfo#errorStateآزمایشی جدید (I0decc) - تغییر
AnnotationRetentionاز گزارمانFunctionKeyMetaبه «دوتایی» (I53495)
نسخه 1.11.0-alpha03
۱۴ ژانویه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.11.0-alpha03 منتشر شد. نسخه 1.11.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- کلاس
SnapshotFlowManagerرا معرفی کردیم و پارامتر اختیاریSnapshotFlowManagerرا بهsnapshotFlowاضافه کردیم تا کاربران بتوانند تعداد ناظران اعمال لحظهای را که ثبت میشوند بهینهسازی کنند. (I6289b، b/446746211)
رفع اشکالها
- حاشیهنویسی ردیابی برای درج محتوای قابلانتقال (Ibf176) اضافه شد
نسخه 1.11.0-alpha02
۱۷ دسامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.11.0-alpha02 منتشر شد. نسخه 1.11.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- پرچم
isMovableContentUsageTrackingEnabledبرداشته شد (I71e2b، b/427960130)
همیاری خارجی
- اشکال «ویرایش زنده» که از خطا بازیابی نمیشد برطرف شد. (Ieb34f)
نسخه 1.11.0-alpha01
۳ دسامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.11.0-alpha01 منتشر شد. نسخه 1.11.0-alpha01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام
RetainedValuesStore.getExitedValueOrDefaultبهconsumeExitedValueOrDefaultتغییر کردc7a0929 - API آزمایشی بازآرایی همزمان را بردارید.(c8af15d)
نسخه ۱.۱۰
نسخه ۱.۱۰.۶
۲۵ مارس ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.6 منتشر شد. نسخه 1.10.6 شامل این تعهدات است.
رفع اشکالها
- رفع خرابی «اگر استفاده مجدد از ریشه توسط گروههای دیگر ایجاد شده باشد، نمیتوان آن را غیرفعال کرد» در ترکیب قابلتوقف (I474b5، b/488433633)
- رفع خرابی «اعمال روی گره غیرفعال فراخوانده میشود» در ترکیب قابلتوقف (I880c0، b/484300733)
نسخه ۱.۱۰.۵
۱۱ مارس ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.5 منتشر شد. نسخه ۱.۱۰.۵ شامل این تعهدها است.
نسخه ۱.۱۰.۴
۲۵ فوریه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.4 بدون هیچ تغییری از نسخه 1.10.3 منتشر شده است. نسخه ۱.۱۰.۴ شامل این تعهدات است.
نسخه ۱.۱۰.۳
۱۱ فوریه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.3 منتشر شد. نسخه ۱.۱۰.۳ حاوی این تعهدات است.
نسخه ۱.۱۰.۲
۲۸ ژانویه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.2 منتشر شد. نسخه ۱.۱۰.۲ شامل این تعهدات است.
نسخه ۱.۱۰.۱
۱۴ ژانویه ۲۰۲۶
androidx.compose.runtime:runtime-*:1.10.1 منتشر شد. نسخه ۱.۱۰.۱ شامل این تعهدات است.
نسخه ۱.۱۰.۰
۳ دسامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0 منتشر شد. نسخه ۱.۱۰.۰ شامل این تعهدات است.
نسخه 1.10.0-rc01
۱۹ نوامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-rc01 منتشر شد. نسخه 1.10.0-rc01 شامل این تعهدات است.
رفع اشکالها
- هنگام ضبط وضعیتهای مشتقشده در
SnapshotStateObserver، دربرابر تغییرات بازورودی محافظت کنید (I7b862، b/435655844، b/456249373، b/402535073) - [Lint] رفع اشکال جزئی برای اینکه آشکارساز بهدرستی درباره تکلیف مرکب هشدار دهد. (I08319، b/456775556)
نسخه 1.10.0-beta02
۵ نوامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-beta02 منتشر شد. نسخه 1.10.0-beta02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
چندین تغییر ناسازگار با میانای برنامهسازی کاربردی برای ساده کردن نصب و مدیریت
RetainedValuesStoreایجاد کردهایم. تماسهای موجود باretainوRetainedEffectتحت تأثیر قرار نمیگیرند، اما هرRetainedValuesStoreسفارشی برای سازگاری با این نسخه نیازمند انتقال است. (If3c2f، b/451921682، b/450539803)
RetainedValuesStoreدیگر از میانای برنامهسازی کاربردی سطح پایین برای شروع/توقف نگهداری استفاده نمیکند. وضعیت نگهداری اکنون بهطور خودکار از محتوا پیروی میکند. LocalRetainedValuesStoreProviderاکنون برای نصبRetainedValuesStoreپیشنهاد میشود. LocalRetainedValuesStoreنباید مستقیماً ارائه شود. برای کسب اطلاعات بیشتر درباره این تغییرات، اسناد و نمونههای بهروزشده را ببینید.نام
RetainedValuesStoreProviderبهRetainedValuesStoreRegistryتغییر کرد. این کلاس اکنون فقط «میاناهای برنامهسازی کاربردی» را برای نصب و مدیریتRetainedValuesStoreدر ترکیب آشکار میکند.
ControlledRetainedValuesStoreباManagedRetainedValuesStoreجایگزین شد.
RetainedValuesStoreاکنون یک میانگیری است.
قبلاً، نصب RetainedValuesStore سفارشی ممکن است به این شکل بوده باشد:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
با این تغییرات «میانای برنامهسازی کاربردی»، این نصب را میتوان بهجای این کد با این کد بیان کرد:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
رفع اشکالها
- نامعتبرسازیهای محدوده را در محتوای قابلانتقال قبلاز انتقال آن محتوا از جدول جایگاه انتقال میدهد (I9d123، b/451651649)
نسخه 1.10.0-beta01
۲۲ اکتبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-beta01 منتشر شد. نسخه 1.10.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام
RetainedValuesStore.getExitedValueOrDefaultبهRetainedValuesStore.getExitedValueOrElseتغییر کرد (If9653، b/452340613) - نام
isKeepingExitedValuesبهisRetainingExitedValuesتغییر کرد (I660bf، b/437095756) - نام
RetainScopeبهRetainedValuesStoreتغییر کرد. نامRetainScopeHolderبهRetainedValuesStoreRegistryتغییر کرد. نامRetainScopeHolder.RetainScopeProviderبهRetainedValuesStoreRegistry.ProvideChildRetainedValuesStoreتغییر کرد. (Idf23a، b/437095756)
رفع اشکالها
- مقداردهی اولیه
SavedStateدرSaveableStateRegistryتا اولین استفاده بهتأخیر افتاد. (Ic0a93)
نسخه 1.10.0-alpha05
۸ اکتبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-alpha05 منتشر شد. نسخه 1.10.0-alpha05 شامل این تعهدات است.
رفع اشکالها
- ردیابی پشته را برای
DiagnosticComposeExceptionدر حالت انتشار پر کنید. (Ib76cb) - مشکلی در وضعیت «لحظهای» برطرف شد که در آن، استفاده از خطمشی ادغام برای یک نوع میتوانست منجر به محاسبه نادرست مقدار قبلی شود که درنتیجه مقدار آینده وضعیت بهجای مقدار قبلی برگردانده میشد. این وضعیت زمانی رخ میدهد که بیشاز دو چسبان فوری تغییرپذیر درانتظار باشد و حداقل یکی از مقادیر اعمالشده خطمشی ادغام داشته باشد. (I527b5، b/442791065)
نسخه 1.10.0-alpha04
۲۴ سپتامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-alpha04 منتشر شد. نسخه 1.10.0-alpha04 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
RetainScopeHolderAPI برای مدیریت مجموعهای ازRetainScopesاضافه شد. از این ویژگی میتوان برای پیادهسازی نگهداری برای محتویات و میزبانهای پیمایش که از چندین فرزند با طول عمر نگهداری متفاوت تشکیل شدهاند استفاده کرد. (I10e0f) -
RetainedContentHostوretainControlledRetainScopeAPI اضافه شد که میتوان از آنها برای ایجادRetainScopesبا مدیریت خودکار برای محتوای ناپدیدشونده مثل جمع کردن قابها (If81f6) استفاده کرد - سربار درونخطی
Updater#setمنسوخ شده است زیرا مقدار ارائهشده را بیشازحد جعبهگذاری میکرد. یک سربارUpdater#initاضافه شد که پارامتری را میگیرد که از نیاز به لامبدای ضبطکننده جلوگیری میکند. (Id679e) RetainedEffect، میانای برنامهسازی کاربردی اثر جانبی مشابهDisposableEffectکه بهجای چرخه حیات ترکیب از چرخه حیات نگهداری پیروی میکند، را معرفی میکند. این API برای استفاده در جلوههایی درنظر گرفته شده است که به نگهداری شیء دیگری مربوط میشود کهRetainObserverرا پیادهسازی نمیکند یا نمیتواند پیادهسازی کند. (I1c61f, b/177562901)- اسناد
RetainObserver.onRetainedاصلاح شد وRetainObserver.onUnusedاضافه شد کهRememberObserver.onAbandonedرا منعکس میکند (Ia6fc5)
رفع اشکالها
- رفع مشکل ارسال بهخاطر سپردن پساز اولین گروه در یک تابع (مثل تماس قابل ترکیب) و قبلاز گروهی که میتواند برداشته شود (مثل دستور
if) که میتواندonForgottenرا در ترتیب نادرست ارسال کند. (I453f6, b/346821372) - هنگام مقداردهی اولیه
LaunchedEffect، از پیمایش بافت روتین همکار اجتناب کنید. (I8d2c3b)
نسخه 1.10.0-alpha03
۱۰ سپتامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-alpha03 منتشر شد. نسخه 1.10.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- ردیابی پشته «نوشتن» مبتنی بر کلید گروه را معرفی میکند که در برنامههای کوچکشده کار میکند. نگاشت Proguard برای این ردگیریها از Kotlin 2.3.0 توسط افزایه Gradle مترجم Compose تولید خواهد شد. این ردیابیهای پشته بهطور پیشفرض غیرفعال هستند، از
ComposeStackTraceMode.GroupKeysبرای فعال کردن آنها استفاده کنید. (Ifbcb5) - افزودن میانای:
IdentifiableRecomposeScopeبرای ابزار (Idd5e0، b/434194620) - از باطل شدن غیرضروری در ترکیبهای شامل
CompositionLocalContexts جلوگیری شد (I3fa21، b/412750209)
رفع اشکالها
- در مستندات و ابزارها توضیح داده شده است که کلیدهای منتقلشده برای حفظ نیز حفظ میشوند. از ارسال کلیدهایی برای نگهداری که منجر به نشت حافظه میشود خودداری کنید. (Ib553b، b/177562901)
- مشکلی برطرف شد که در آن وقتی
resume()قطعهای که موقتاً متوقف شده بود در رشتهای دیگر فراخوانده میشد، وضعیت اعلانهای معلقه ممکن بود وقتی رشته اصلی سعی میکرد قطعه قابلتوقف را برای قاب بعدی بازسازی کند دچار اختلال شود. (Ie5f17، b/442649894) - استثناهای ثبتشده در قطعه را ثبت کنید. (I47d78، b/432799675، b/436878515، b/359623674، b/400436355)
نسخه 1.10.0-alpha02
۲۷ اوت ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-alpha02 منتشر شد. نسخه 1.10.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
@DoNotRetainاضافه شد که میتواند برای حاشیهنویسی انواع استفادهنشده باretainAPI استفاده شود، احتمالاً به این دلیل که منابع را لو میدهد. (Ie5435) - برای مصرف پروژههای منتشرشده با Kotlin 2.0، به KGP 2.0.0 یا جدیدتر نیاز است. (Idb6b5)
رفع اشکالها
- محتوای قابلحرکت را اصلاح کردیم تا عملیات مربوط به «اعمالکننده» را بهدرستی محاسبه کند وقتی محتوا گره ریشه یک ترکیب را تغییر میدهد. هنگام محاسبه تغییرات برای محتوای قابلانتقال، ممکن است تماس
up()معلقه و ارسالنشده برای اعمالکننده باقی بماند و باعث شود وضعیت اعمالکننده برای هرگونه استفاده بعدی بهطور نادرست قرار گیرد. (I7c583)، (I47b70) -
CheckResultرا بهعنوان منسوخ علامتگذاری میکند زیرا برای استفاده درنظر گرفته نشده است. (I32934)
نسخه 1.10.0-alpha01
۱۳ اوت ۲۰۲۵
androidx.compose.runtime:runtime-*:1.10.0-alpha01 منتشر شد. نسخه 1.10.0-alpha01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- میانای برنامهسازی کاربردی نگهداری را معرفی میکند. مانند
rememberSaveable، «نگه داشتن» میتواند مقادیر بهیادماندهای را که سلسلهمراتب ترکیب را ترک میکنند حفظ و ذخیره کند. مقادیر نگهداریشده سریالسازی نمیشوند و طول عمر کوتاهتری نسبتبه مقادیر ذخیرهشده دارند و عملکردی مشابه androidxViewModelدارند. برای جزئیات بیشتر، مستندات را ببینید. (Ia3105, b/177562901) - میانای برنامهسازی کاربردی
awaitOrScheduleNextCompositionEnd()اضافه شد که وقتی «بازساز» ساخت قاب کنونی را تمام میکند، یک تماس برگشتی صادر میکند. اگر «بازساز» درحالحاضر درحال ساختن قاب نباشد، این «میانای برنامهسازی کاربردی» تا پایان ساخت قاب بعدی تعلیق میشود و قاب جدیدی را برای ساخت زمانبندی میکند. (Ib873c) - افزودن API ارائهدهنده محلی ترکیب برگرداننده غیرواحد (I22521، b/271871288)
- پرچم ویژگی
isMovableContentUsageTrackingEnabledاضافه شد که امکان ردیابی استفاده از محتوای قابلانتقال را فراهم میکند تا هنگام ایجاد اولیه محتوا از سربار جلوگیری شود. این ویژگی پرچمگذاری درحالحاضر بهطور پیشفرض غیرفعال است. (Ia713d)
رفع اشکالها
- خرابی در محتوای قابلانتقال هنگام انتقال بین زیرترکیبها برطرف میشود. (I3fa1e، b/436858107)
- اشکالی را برطرف میکند که باعث میشد بخشی از ردیابی پشتهای ترکیبشدنی هنگام قرار گرفتن در چندین ترکیب فرعی تودرتو ازدست برود. (I98c6f)
- تغییر minSdk پیشفرض از API 21 به API 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
- رفع مشکل وضعیت مسابقه هنگام بهروزرسانی وضعیت داخلی ترکیب قابلمکث از چند رشته. (I03895)
- ناظر ثبت قطعه موسیقی را بهروزرسانی میکند تا قبلاز قطعه موسیقی اولیه فراخوانده شود. (I4adca, b/430600932)
- رفع اشکال جزئی برای سازگار کردن
AutoboxingStateValuePropertyDetectorبا K1 و K2. (Ie81c1)
همیاری خارجی
- ساختن مصنوع runtime-rxjava2 چندسکویی و افزودن JVM بهعنوان هدف پشتیبانیشده. (I5409e)
- ساختن مصنوع runtime-rxjava3 چندسکویی و افزودن JVM بهعنوان هدف پشتیبانیشده. (I97e84)
نسخه ۱.۹
نسخه ۱.۹.۵
۱۹ نوامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.5 منتشر شد. نسخه ۱.۹.۵ شامل این تعهدات است.
رفع اشکالها
- نامعتبرسازیهای محدوده را در محتوای قابلانتقال قبلاز انتقال آن محتوا از جدول جایگاه انتقال میدهد (I9d123، b/451651649)
نسخه ۱.۹.۴
۲۲ اکتبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.4 منتشر شد. نسخه 1.9.4 شامل این تعهدات است.
نسخه 1.9.3
۸ اکتبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.3 منتشر شد. نسخه ۱.۹.۳ حاوی این تعهدات است.
نسخه ۱.۹.۲
۲۴ سپتامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.2 منتشر شد. نسخه 1.9.2 شامل این تعهدات است.
نسخه ۱.۹.۱
۱۰ سپتامبر ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.1 منتشر شد. نسخه 1.9.1 شامل این تعهدات است.
رفع اشکالها
- از بازسازی قطعاتی که درحال آهنگسازی هستند خودداری کنید. (Iacb01)
- جلوگیری از اینکه دامنههای بازسازی دوبار موقتاً متوقف شوند. (I060b2، b/431584881)
نسخه ۱.۹.۰
۱۳ اوت ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0 منتشر شد. نسخه 1.9.0 شامل این تعهدات است.
تغییرات مهم از نسخه ۱.۸.۰
- بررسیهای Lint که همراه با Compose ارسال میشوند اکنون به حداقل نسخه ۸.۸.۲ از AGP نیاز دارند. اگر نمیتوانید AGP را ارتقا دهید، میتوانید بهجای آن بااستفاده از
android.experimental.lint.version=8.8.2(یا نسخه جدیدتر) در gradle.properties، خود Lint را ارتقا دهید. برای اجرای بررسیهای lint در Compose درون IDE، به Android Studio Ladybug یا نسخههای جدیدتر نیاز است. - کتابخانه جدیدی برای حاشیهنویسی زمان اجرا ایجاد شده است. این شامل تعریفهای شرح بدون وابستگی به زمان اجرای Compose است، بنابراین میتوان از آن در واحدهای غیر Compose استفاده کرد.
-
@Stable،@Immutable، و@StableMarkerبه runtime-annotation منتقل شدهاند تا امکان حاشیهنویسی واحدهای غیر Compose فراهم شود -
@FrequentlyChangingValueو@RememberInCompositionبه runtime-annotation اضافه شدند.@FrequentlyChangingValueنشانگر بیانیههایی است که میتواند باعث ترکیب مجدد مکرر شود، و@RememberInCompositionنشانگر بیانیههایی است که باید در ترکیب بهخاطر آورده شود. بررسیهای لینت مربوطه برای استفاده نادرست هشدار میدهند.
-
-
androidx.compose.runtime:runtimeاکنون از پلاتفرمهای بیشتری پشتیبانی میکند. پشتیبانی از هدفهای بومی، iOS، و رایانه از پروژه «چندپلاتفرمی Compose» از JetBrains به بالا دست منتقل شده است و ازاینپس ازطریق Google Maven منتشر خواهد شد. هیچ آرتیفکت «نوشتن» دیگری تحت تأثیر قرار نمیگیرد.
نسخه 1.9.0-rc01
۳۰ ژوئیه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-rc01 منتشر شد. نسخه 1.9.0-rc01 شامل این تعهدات است.
رفع اشکالها
- ناظر ثبت قطعه موسیقی را بهروزرسانی میکند تا قبلاز قطعه موسیقی اولیه فراخوانده شود. (I4adca, b/430600932)
نسخه 1.9.0-beta03
۱۶ ژوئیه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-beta03 منتشر شد. نسخه 1.9.0-beta03 شامل این تعهدات است.
نسخه 1.9.0-beta02
۲ ژوئیه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-beta02 منتشر شد. نسخه 1.9.0-beta02 شامل این تعهدات است.
رفع اشکالها
- طول عمر مرجع مقادیر در جدول جایگاه بین قطعات موسیقی کاهش یافت. مواردی وجود دارد که یک مرجع در جدول جایگاه میتواند یک قاب طولانیتر از حد لازم ادامه یابد. (I49e74، b/418516940)
- حذف کردن درهمریزی Kotlin برای روشهای بارگیری مجدد داغ. (Ic56a3، b/426871325)
نسخه 1.9.0-beta01
۱۸ ژوئن ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-beta01 منتشر شد. نسخه 1.9.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- میانای برنامهسازی کاربردی ابزاری برای تجزیه اطلاعات منبع اضافهشده توسط کامپایلر Compose اضافه شد. (Iceaf9، b/408492167)
-
SnapshotStateSetاکنونParcelableرا در Android پیادهسازی میکند، اکنون استفاده از آن بهعنوان بخشی ازrememberSaveable { ... }پشتیبانی میشود. (I755dd، b/378623803) -
SnapshotStateListاکنونParcelableرا در Android پیادهسازی میکند، اکنون استفاده از آن بهعنوان بخشی ازrememberSaveable { ... }پشتیبانی میشود. (Id18be، b/378623803) - اکنون
movableContentOf()با گزارمان@RememberInCompositionعلامتگذاری شده است که به lint اجازه میدهد استفادههای نادرست را تشخیص دهد (I2738d) - میانای برنامهسازی کاربردی مشاهدهگرهای ترکیببندی آزمایشی بهروزرسانی شد تا امکان مشاهده جامعتری از دلایل ترکیببندی مجدد فراهم شود (I32b6a)
- برای درنظر گرفتن توسعه آینده این ویژگی،
setDiagnosticStackTraceEnabledرا به آزمایشی تغییر دهید. (I11db3) -
currentCompositeKeyHashاکنون منسوخ شده است. درعوض ازcurrentCompositeKeyHashCodeاستفاده کنید. «میانای برنامهسازی کاربردی» جایگزین همان مقدار درهمسازی را با بیتهای بیشتری کدبندی میکند که احتمال داشتن کلید درهمسازی یکسان برای دو گروه تصادفی غیرمرتبط در سلسلهمراتب ترکیب را بهصورت تصاعدی کاهش میدهد. (I4cb6a، b/177562901) - برای استفاده از پروژههای منتشرشده با Kotlin 2.0، باید از KGP 2.0.0 یا نسخههای جدیدتر استفاده کنید (Idb6b5)
-
@Stable،@Immutable، و@StableMarkerبه حاشیه زمان اجرا (بهصورت سازگار) منتقل شدهاند. اکنون اگر میخواهید از این حاشیهنویسیها از کتابخانههایی که به Compose وابسته نیستند استفاده کنید، میتوانید به حاشیهنویسی زمان اجرا تکیه کنید. (I23a16) - نام سربار
rememberSaveableکهKSerializerرا میپذیرد بهrememberSerializableتغییر کرد. این تغییر استفاده موردنظر آن را باkotlinx.serializationروشن میکند. پشتیبانی ازkotlinx.Serializableکلاس عمومی بهطور مستقیم درrememberSaveableبه پارامتر نوعreifiedنیاز دارد که با ملزم کردن همه سایتهای تماس به ارائه اطلاعات نوع تحققیافته در زمان کامپایل، سازگاری منبع را ازبین میبرد. (Idb875, I38627, b/376028110)
رفع اشکالها
- قطعاتی که با محتوای قابل توقف تنظیم شدهاند و لغو شدهاند باید حذف شوند. اکنون این مورد توسط ترکیب بررسی میشود و درصورت استفاده مجدد، خطا میدهد. (I2daa5، b/406792785)
- ترکیببندی قابلتوقف اصلاح شد تا دیگر هنگام ازبین بردن ترکیببندی قابلتوقف،
onForgottenکاذبی برای بهیاد آوردن ناظران ارسال نکند. RememberObserversدر یک ترکیببندی قابلتوقف لغوشده باید فقط onAbandoned ارسال شود. (I26f54) - مشکل محتوای قابلحرکت رفع شد. در این مشکل، ابطالهایی که در مراحل پایانی پردازش محتوای قابلحرکت میرسیدند به آهنگساز اضافه میشدند اما وقتی محتوا جابهجا میشد این ابطالها بهروزرسانی نمیشدند و درنتیجه محتوا در مکان اشتباهی بازآهنگسازی میشد. (Icd2fa، b/409439507)
- رفع مشکلی که باعث میشد محتوای قابلانتقال پساز ترکیب شدن و قبلاز انتقال نامعتبر شود. (I99eac، b/229001114)
- فراخوانی
remove()از تکرارکننده فهرست تولیدشده توسطSnapshotStateListپساز فراخوانیprevious()میتواند عنصر اشتباهی را از فهرست بردارد و با آنچهArrayListبرای همان توالی فراخوانیها انجام میدهد مطابقت ندارد. (I05ab7، b/417493222) - مشکل ترتیب در ارسال
onForgottonبرطرف شد که مثلاً میتوانست باعث شودonDisposeجلوههای یکبارمصرف در ترتیب اشتباه اجرا شود. (Ic1c91، b/417450712) - رفع مشکل برای استفاده مجدد از مدیریت وضعیت در ترکیب قابلتوقف (Ife96e، b/404058957)
- وضعیت استفاده مجدد زمانی که یک قطعه موسیقی موقتاً متوقف و دوباره شروع میشد، اما برخیاز وضعیتهای قبلاً متوقفشده نیاز به بازسازی داشتند زیرا برخیاز وضعیتهایی که درحین توقف قطعه موسیقی خوانده شده بود تغییر کرده بود، اصلاح شد. (I441d1، b/416209738)
- اصلاح ارسال یادآوری ترکیب قابلتوقف برای مشکل b/404058957 تکمیل شد. اصلاح قبلی ناقص بود. (I1afd4، b/404058957)
- اکنون
OffsetApplierبهدرستیapply()را که با ترکیب قابلتوقف معرفی شده بود ملغی میکند. نداشتن این مورد میتواند باعث شود که ترکیب قابلتوقف هنگام بهروزرسانی گرههای مجازی استثنا ایجاد کند. (Idbf31، b/409291131) - بنبستی که ممکن است کاربران Molecule را تحتتأثیر قرار دهد برطرف شد. این بنبست زمانی رخ میداد که تماس تعلیقشده با
FrameClock.withFrameNanosدرحالیکه چارچوبی درحال ارسال بود لغو میشد. (I89cab، b/407027032) - «ترکیبکننده» میتواند با محتوای قابلانتقال در حالت آمادهبهکار قرار گیرد (Ie5416، b/409267170)
- ترتیبی که
onReuseوonDeactivateمیتوانند درطول قطعه موسیقی قابلتوقف معکوس شوند. اکنون تضمین میشود که به ترتیبonDeactivate/onReuseرخ دهند. (I996e4، b/404058957) - رفع مشکل ارسال مشاهدهگرهای بهیادآوری در ترکیب قابلتوقف برای جلوگیری از ارسال بهیادآوریشده/فراموششده در همان اعمال (I570b2، b/404645679، b/407931790)
-
LifecycleRegistryدر «چندپلاتفرمی Compose» به حالت ناامن تغییر کرد تا بررسیهایMainThreadغیرفعال شود و مشکلات رشتهبندی برطرف شود. برای جزئیات، CMP-8227 را ببینید. (Icee87)
همیاری خارجی
- اشکالی که کاربران «مولکول» را تحتتأثیر قرار میداد و در آن استفاده از
RecompositionMode.Immediateمیتوانست باعث ازدست رفتن ترکیبهای مجدد شود برطرف شد. (I9f3a9، b/419527812) -
PausableCompositionisAppliedوisCancelledgetters آشکارشده که امکان بررسی وضعیتPausableCompositionرا فراهم میکنند. (I994aa) -
AnnotationTarget.FUNCTIONبه گزارمانFunctionKeyMetaاضافه شد. (I08021)
نسخه 1.9.0-alpha04
۴ ژوئن ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-alpha04 منتشر شد. نسخه 1.9.0-alpha04 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
SnapshotStateSetاکنون Parcelable را در Android پیادهسازی میکند، اکنون پشتیبانی میشود که بهعنوان بخشی ازrememberSaveable { ... }استفاده شود. (I755dd، b/378623803) -
SnapshotStateListاکنون Parcelable را در Android پیادهسازی میکند، اکنون پشتیبانی میشود که بهعنوان بخشی ازrememberSaveable { ... }استفاده شود. (Id18be، b/378623803) - اکنون
movableContentOf()با گزارمان@RememberInCompositionعلامتگذاری شده است که به lint اجازه میدهد استفادههای نادرست را تشخیص دهد (I2738d) - میانای برنامهسازی کاربردی مشاهدهگرهای ترکیببندی آزمایشی بهروزرسانی شد تا امکان مشاهده جامعتری از دلایل ترکیببندی مجدد فراهم شود (I32b6a)
رفع اشکالها
- مشکل ترتیب در ارسال
onForgottonبرطرف شد که مثلاً میتوانست باعث شودonDisposeجلوههای یکبارمصرف در ترتیب اشتباه اجرا شود. (Ic1c91، b/417450712) - رفع مشکل برای استفاده مجدد از مدیریت وضعیت در ترکیب قابلتوقف (Ife96e، b/404058957)
- رفع اشکال جزئی برای سازگار کردن تشخیص مجموعه تغییرپذیر با K1 و K2 (Ie4878)
- رفع اشکال جزئی برای سازگار کردن جستجوی گزارمان در دسترسیگرهای دارایی ملغیشده برای K1 و K2 (I9900d)
همیاری خارجی
- اشکالی که کاربران «مولکول» را تحتتأثیر قرار میداد و در آن استفاده از
RecompositionMode.Immediateمیتوانست باعث ازدست رفتن ترکیبهای مجدد شود برطرف شد. (I9f3a9، b/419527812) -
PausableCompositionisCancelledgetters که امکان بررسی وضعیتPausableCompositionرا فراهم میکنند، در معرض دید قرار گرفته است. (I994aa)
نسخه 1.9.0-alpha03
۲۰ مه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-alpha03 منتشر شد. نسخه 1.9.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- برای درنظر گرفتن توسعه آینده این ویژگی،
setDiagnosticStackTraceEnabledرا به آزمایشی تغییر دهید. (I11db3)
رفع اشکالها
- وضعیت استفاده مجدد زمانی که یک قطعه موسیقی موقتاً متوقف و دوباره شروع میشد، اما برخیاز وضعیتهای قبلاً متوقفشده نیاز به بازسازی داشتند زیرا برخیاز وضعیتهایی که درحین توقف قطعه موسیقی خوانده شده بود تغییر کرده بود، اصلاح شد. (I441d1، b/416209738)
- اصلاح ارسال یادآوری ترکیب قابلتوقف برای مشکل b/404058957 تکمیل شد. اصلاح قبلی ناقص بود. (I1afd4، b/404058957)
-
SaveableStateHolder.SaveableStateProviderاکنون ازطریق ترکیب،LocalSavedStateRegistryOwnerمحتوایش را ارائه میدهد. (Ia2761، b/413108878) -
androidx.compose.runtime.saveableاکنون بهandroidx.lifecycle.runtime.composeوابسته است. (I53228، b/413108878)
نسخه 1.9.0-alpha02
۷ مه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-alpha02 منتشر شد. نسخه 1.9.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
rememberSaveableبا «کلید» سفارشی منسوخ شد. این کار از محدوده موقعیتی عبور میکند و منجر به اشکالات وضعیت و عملکرد ناسازگار میشود (برای نمونه، همرسانی یا ازدست رفتن وضعیت ناخواسته، مشکلات درLazyLayoutsتودرتو). لطفاً پارامتر «کلید» را بردارید تا از محدوده موقعیتی برای وضعیت سازگار و با محدوده محلی استفاده کنید. برای جزئیات بیشتر، پیام کامل تعهد را ببینید. (I5e6ff، b/357685851)
رفع اشکالها
- اکنون
OffsetApplierبهدرستیapply()را که با ترکیب قابلتوقف معرفی شده بود ملغی میکند. نداشتن این مورد میتواند باعث شود که ترکیببندی قابلتوقف هنگام بهروزرسانی گرههای مجازی استثنا ایجاد کند. (Idbf31، b/409291131) - بنبستی که ممکن است کاربران Molecule را تحتتأثیر قرار دهد برطرف شد. این بنبست زمانی رخ میداد که تماس تعلیقشده با
FrameClock.withFrameNanosدرحالیکه چارچوبی درحال ارسال بود لغو میشد. (I89cab، b/407027032) - «بازساز» میتواند درحالیکه وضعیت محتوای قابلانتقال همچنان در انتظار دور انداخته شدن است، غیرفعال شود. این معمولاً اتفاق نمیافتد زیرا وضعیت محتوای قابلانتقال در حلقه اصلی «بازساز» دور انداخته میشود. بااینحال، این اتفاق میتواند در ترکیببندی قابلتوقف زمانی رخ دهد که محتوای قابلحرکت درطول
resume()(Ie5416، b/409267170) دور انداخته شود - ترتیبی که
onReuseوonDeactivateمیتوانند درطول قطعه موسیقی قابلتوقف معکوس شوند. اکنون تضمین میشود که به ترتیبonDeactivate/onReuseرخ دهند. (I996e4، b/404058957)
نسخه 1.9.0-alpha01
۲۳ آوریل ۲۰۲۵
androidx.compose.runtime:runtime-*:1.9.0-alpha01 منتشر شد. نسخه 1.9.0-alpha01 شامل این تعهدها است.
تغییرات رفتار
- بررسیهای Lint که همراه با Compose ارسال میشوند اکنون به حداقل نسخه ۸.۸.۲ از AGP نیاز دارند. اگر نمیتوانید AGP را ارتقا دهید، میتوانید بهجای آن بااستفاده از
android.experimental.lint.version=8.8.2(یا نسخه جدیدتر) درgradle.properties، خود Lint را ارتقا دهید. برای اجرای بررسیهای lint در Compose درون IDE، به Android Studio Ladybug یا نسخههای جدیدتر نیاز است.
تغییرات میانای برنامهسازی کاربردی
-
currentCompositeKeyHashاکنون منسوخ شده است. درعوض ازcurrentCompositeKeyHashCodeاستفاده کنید. «میانای برنامهسازی کاربردی» جایگزین همان مقدار درهمسازی را با بیتهای بیشتری کدبندی میکند که احتمال داشتن کلید درهمسازی یکسان برای دو گروه تصادفی غیرمرتبط در سلسلهمراتب ترکیب را بهصورت تصاعدی کاهش میدهد. (I4cb6a، b/177562901) - برای استفاده از پروژههای منتشرشده با Kotlin 2.0، باید از KGP 2.0.0 یا نسخههای جدیدتر استفاده کنید (Idb6b5)
-
@Stable،@Immutable، و@StableMarkerبه حاشیه زمان اجرا (بهصورت سازگار) منتقل شدهاند. اکنون اگر میخواهید از این حاشیهنویسیها از کتابخانههایی که به Compose وابسته نیستند استفاده کنید، میتوانید به حاشیهنویسی زمان اجرا تکیه کنید. (I23a16) -
onCreatingوonDisposingرا برمیدارد زیرا منسوخ شدهاند و بهonPreCreateوonPreDisposeتغییر نام دادهاند. این تغییر نامگذاری مجدد را تکمیل میکند. (I97461) - نمایش ترکیب محلی که اجازه میدهد پشته ردپای ترکیب براساس مکان گره ترکیب در ترکیب پیوست شود. (Ie0bda، b/354163858)
- معرفی ردیابی پشته «نوشتن» تشخیص خرابی براساس اطلاعات منبع ذخیرهشده در ترکیب. (I3db9f، b/354163858)
runWithTimingDisabledرا بهنفعrunWithMeasurementDisabledمنسوخ کنید، که رفتار را واضحتر توصیف میکند - همه سنجهها موقتاً متوقف میشوند. علاوهبراین، ابرکلاسMicrobenchmarkScopeرا نمایان کنید زیرا بازاعلان کردن تابعrunWithMeasurementDisabledبرای باز کردن دسترسی امکانپذیر نیست، چون درونخطی است. (I9e23b، b/389149423، b/149979716)-
@FrequentlyChangingValueرا اضافه میکند: گزارمانی که میتواند توابع و دریافتکنندههای دارایی را علامتگذاری کند تا نشان دهد که نباید مستقیماً در ترکیب فراخوانی شوند، زیرا این کار ممکن است باعث ترکیب مجدد مکرر شود. برای مثال، برای علامتگذاری مقادیر موقعیت پیمایش و مقادیر پویانمایی. هشدارها توسط بررسی lint مربوطه ارائه میشوند. (I83630، b/234042500) -
@RememberInCompositionرا اضافه میکند: گزارمانی که میتواند سازندهها، توابع، و دریافتکنندههای ویژگی را علامتگذاری کند تا نشان دهد که نباید مستقیماً در ترکیب فراخوانی شوند، بدون اینکه بهخاطر آورده شوند. خطاها توسط بررسی لینت مربوطه ایجاد خواهند شد. از این گزارمان میتوان برای علامتگذاری بیانیههایی که اشیای حالتدار / تغییرپذیر برمیگردانند، اشیایی که حفظ هویت آنها در ترکیبها مهم است، یا اشیایی که نمونهسازی آنها پرهزینه است و باید در ترکیبها ذخیره شوند استفاده کرد. (Ie7db0) - یک
rememberSaveableسربار جدید اضافه شد که ازKSerializerبرای ماندگاری وضعیت ایمن نوع بااستفاده از «سریالسازی KotlinX» پشتیبانی میکند. میانای برنامهسازی کاربردی موجود مبتنی برSaverهمچنان پشتیبانی میشود. (Iea4ab, b/376028110)
رفع اشکالها
- رفع مشکل ارسال مشاهدهگرهای بهیادآوری در ترکیب قابلتوقف برای جلوگیری از ارسال بهیادآوریشده/فراموششده در همان اعمال (I570b2، b/404645679، b/407931790)
- روشهای
SnapshotObserverدر «درحال ایجاد» بهonPreCreateوonDisposingبهonPreDisposeتغییر نام داد تا با دستورالعملهای میانای برنامهسازی کاربردی مطابقت داشته باشد. روشهای قبلی منسوخ شدهاند و روشهای جدید بهطور پیشفرض روشهای قدیمی را فرا میخوانند، بنابراین پیادهسازیهای موجود این میانای کاربری تا زمانی که روشها برداشته شوند به کار خود ادامه خواهند داد. این روشها در نسخه آلفای 1.9.0 در CL بعدی که بهزودی پساز این نسخه منتشر خواهد شد برداشته خواهند شد. این ویژگیها قبلاز نسخه پایدار ۱.۸ از نسخه بتای ۱.۸ برداشته خواهند شد. (I6d753) - مشکلی برطرف شد که در آن مقادیر بهیادمانده میتوانستند بهاشتباه فراموش شوند و هنگام بازسازی گروه حذفی که پساز گروهی جابهجاپذیر ظاهر میشود، دوباره محاسبه شوند (I62cab، b/383769314)
- پشتیبانی از ردیابی پشتههای نوشتن در
LaunchedEffectوrememberCoroutineScopeاضافه شد (I705c0، b/354163858) - اکنون بررسیهای lint Compose به حداقل نسخه ۸.۸.۲ از خط فرمان AGP و حداقل Android Studio Ladybug برای پشتیبانی IDE نیاز دارد. اگر از نسخه قدیمیتری از AGP استفاده میکنید، میتوانید
android.experimental.lint.version=8.8.2را در gradle.properties تنظیم کنید تا نسخه Lint را بدون تأثیر گذاشتن بر AGP ارتقا دهید. (I6f2a8)
همیاری خارجی
-
AnnotationTarget.FUNCTIONبه گزارمانFunctionKeyMetaاضافه شد. (I08021)
نسخه ۱.۸
نسخه ۱.۸.۳
۱۸ ژوئن ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.3 منتشر شد. نسخه ۱.۸.۳ شامل این تعهدات است.
نسخه ۱.۸.۲
۲۰ مه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.2 منتشر شد. نسخه ۱.۸.۲ شامل این تعهدات است.
نسخه ۱.۸.۱
۷ مه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.1 منتشر شد. نسخه ۱.۸.۱ شامل این تعهدات است.
نسخه ۱.۸.۰
۲۳ آوریل ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0 منتشر شد. نسخه ۱.۸.۰ شامل این تعهدات است.
نسخه 1.8.0-rc03
۹ آوریل ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-rc03 منتشر شد. نسخه 1.8.0-rc03 شامل این تعهدها است.
نسخه 1.8.0-rc02
۲۶ مارس ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-rc02 منتشر شد. نسخه 1.8.0-rc02 شامل این تعهدات است.
نسخه 1.8.0-rc01
۱۲ مارس ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-rc01 منتشر شد. نسخه 1.8.0-rc01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- روشهای
SnapshotObserverدر «درحال ایجاد» بهonPreCreateوonDisposingبهonPreDisposeتغییر نام داد تا با دستورالعملهای میانای برنامهسازی کاربردی مطابقت داشته باشد. روشهای قبلی منسوخ شدهاند و روشهای جدید بهطور پیشفرض روشهای قدیمی را فرا میخوانند، بنابراین پیادهسازیهای موجود این میانای کاربری تا زمانی که روشها برداشته شوند به کار خود ادامه خواهند داد. این روشها در نسخه آلفای 1.9.0 در CL بعدی که بهزودی پساز این نسخه منتشر خواهد شد برداشته خواهند شد. این ویژگیها قبلاز نسخه پایدار ۱.۸ از نسخه بتای ۱.۸ برداشته خواهند شد. (I6d753)
نسخه 1.8.0-beta03
۲۶ فوریه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-beta03 منتشر شد. نسخه 1.8.0-beta03 شامل این تعهدات است.
نسخه 1.8.0-beta02
۱۲ فوریه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-beta02 منتشر شد. نسخه 1.8.0-beta02 شامل این تعهدات است.
رفع اشکالها
- مورد استثنای پیداشده را در ترکیب قابلتوقف دوباره درنظر بگیرید .(384486d)
نسخه 1.8.0-beta01
۲۹ ژانویه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-beta01 منتشر شد. نسخه 1.8.0-beta01 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
- مشکلی را برطرف میکند که در آن، ایجاد یک استثنای قابل پرتاب درطول ترکیب که از «استثنا» گسترش نمییابد ممکن است منجر به خطای «ترکیب معلقه اعمال نشده است» شود. (I356be، b/382094412)
نسخه 1.8.0-alpha08
۱۵ ژانویه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.8.0-alpha08 منتشر شد. نسخه 1.8.0-alpha08 شامل این تعهدات است.
نسخه 1.8.0-alpha07
۱۱ دسامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha07 منتشر شد. نسخه 1.8.0-alpha07 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- میانای برنامهسازی کاربردی ابزاری اضافه شد که به بازرس چیدمان کمک میکند تا در مواردی که از گره برای پل زدن ترکیبها استفاده نمیشود، ترکیبهای فرعی را با ترکیب اصلی مرتبط کند. (I4ce3d)
- ثابتهای حسابی و ویژه برای
SnapshotIdرا بهجای عمومی، داخلی کرد. درصورت لزوم، با تبدیلSnasphotIdبهIntیاLongبااستفاده ازtoInt()یاtoLong()بهترتیب، میتوان محاسبات ریاضی را روی آن انجام داد. (Ic3a57)
همیاری خارجی
- بهینهسازی فضای ذخیرهسازی برای
movableContentOfپارامتر. (ed87177)
نسخه 1.8.0-alpha06
۱۳ نوامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha06 منتشر شد. نسخه 1.8.0-alpha06 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- تغییرات در میانای برنامهسازی کاربردی
PausableComposition. این تغییرات در مقایسه با نسخههای قبلی 1.8.0-alpha (از 1.8.0-alpha02) تغییرات اساسی هستند، اما ازآنجاییکه اینها «میاناهای برنامهسازی کاربردی» جدید در 1.8.0 هستند، سازگاری با نسخههای قبلی حفظ نمیشود زیرا «میاناهای برنامهسازی کاربردی» هنوز در مرحله آلفا هستند. (I39819) - واسطهای برنامهسازی کاربردی ابزار را برای مشاهده ایجاد ترکیبهای جدید در «ترکیبکننده مجدد» (Iaeb7e) اضافه میکند
-
snapshotIdاز نوعLongبهSnapshotاضافه شد وidمنسوخ شد. شناسه یک نمای فوری ازIntبهLongتغییر کرد تا از سرریز شدن شناسه نمای فوری در سیستمهایی با نرخ فریم بسیار بالا و پویانماییهای طولانیمدت جلوگیری شود. نوع براساس انتظار/واقعیت ساخته شده است تا این نوع در پلاتفرمهایی که نوعLongبومی ندارند،Intیا نوع دیگری باشد. پلاتفرمهایی کهLongبومی ندارند، مانند جاوا اسکریپت، باید از نرخ فریم بالا (بیش از ۱۰۰۰ فریم در ثانیه) که باعث سرریز شدنIntتقریباً هر ۲۴ روز میشود، اجتناب کنند. (I38ac3، b/374821679)
رفع اشکالها
-
providesDefaultبرای یکprovidesثابت است. (aosp/3318540 b/374263387) - بهینهسازی
ChangeList. (3318538)
نسخه 1.8.0-alpha05
۳۰ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha05 منتشر شد. نسخه 1.8.0-alpha05 شامل این تعهدات است.
رفع اشکالها
- خطای سرریز پشته در افزودن
Int.MAX_VALUEبهSnapshotIdSetرا برطرف کنید. (b/370536104، Ic4179f6) - بهینهسازیهای کوچک زمان اجرا (I50c60)
- به R8 اجازه دهید تا تماسهای runtimeCheck اشکالزدایی را بردارد (I8c44)
- بهجای بازگشتی،
compoundKeyOfرا تکرارشونده کنید (I5817f)
همیاری خارجی
- پیادهسازی پشتهها با فهرستهای مجموعه (I7d47c)
نسخه 1.8.0-alpha04
۱۶ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha04 منتشر شد. نسخه 1.8.0-alpha04 شامل این تعهدات است.
بهبود عملکرد
- شناسه عکس آنی را برای سوابق وضعیت در سازنده ارائه دهید (85c00f)
- بازسازی
SnapshotState***برای جلوگیری از خطاهای درستیسنجی کلاس (6ee4a6) - قوانین R8 را اصلاح کنید تا از درونخطیسازی استثنا جلوگیری کنید (5beb92)
- بهینهسازی کوچک عملیات (d73c5c)
- بهینهسازی
SynchronizedObjectتخصیص در ماشین مجازی جاوا (2b043f)
نسخه 1.8.0-alpha03
۲ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha03 منتشر شد. نسخه 1.8.0-alpha03 شامل این تعهدها است.
بهبود عملکرد
- ایجاد تنبلوار زمینه فرزند برای
rememberCoroutineScope(f61464)- از
rememberCoroutineScopeمعمولاً برای راهاندازی روتینهای همکار در پاسخ به رویدادهایی که پساز ترکیب رخ میدهند استفاده میشود. در برخیاز سناریوها، این رویدادها ممکن است هرگز رخ ندهند و منجر به هزینههای اضافی برای ایجاد و لغو «کار» بدون هیچگونه مزایایی شوند. - وقتی به محدوده برگشتی
rememberCoroutineScopeدسترسی پیدا میشود،coroutineContextآن بهصورت تنبل ایجاد میشود و اگر از محدوده هرگز استفاده نشود، بهطور کامل از ایجاد و لغو کار جلوگیری میشود.
- از
نسخه 1.8.0-alpha02
۱۸ سپتامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha02 منتشر شد. نسخه 1.8.0-alpha02 شامل این تعهدات است.
ویژگیهای جدید
-
PausableCompositionاضافه شد که امکان ایجاد زیرترکیبی را فراهم میکند که میتواند درطول ترکیببندی موقتاً متوقف شود و بهصورت ناهمزمان روی ترکیببندی اعمال شود. برای موقتاً متوقف کردن که درحالحاضر درحال توسعه است، پشتیبانی از گردآورنده لازم است. (I3394b)
نسخه 1.8.0-alpha01
۴ سپتامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.8.0-alpha01 منتشر شد. نسخه 1.8.0-alpha01 شامل این تعهدات است.
نسخه ۱.۷
نسخه ۱.۷.۸
۱۲ فوریه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.7.8 منتشر شد. نسخه ۱.۷.۸ شامل این تعهدات است.
نسخه ۱.۷.۷
۲۹ ژانویه ۲۰۲۵
androidx.compose.runtime:runtime-*:1.7.7 منتشر شد. از نسخه ۱.۷.۶ تغییری نداشته است.
androidx.compose.runtime:runtime-*:1.7.6 منتشر شد. نسخه ۱.۷.۶ شامل این تعهدات است.
نسخه ۱.۷.۵
۳۰ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.5 منتشر شد. نسخه ۱.۷.۵ شامل این تعهدات است.
نسخه ۱.۷.۴
۱۶ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.4 منتشر شد. نسخه ۱.۷.۴ شامل این تعهدات است.
نسخه ۱.۷.۳
۲ اکتبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.3 منتشر شد. نسخه ۱.۷.۳ شامل این تعهدها است.
نسخه ۱.۷.۲
۱۸ سپتامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.2 منتشر شد. نسخه ۱.۷.۲ شامل این تعهدات است.
نسخه ۱.۷.۱
۱۰ سپتامبر ۲۰۲۴
- هیچ تغییری در آرتیفکتهای Android ایجاد نشده است.
-desktopمصنوع برداشته شد و-jvmStubsو-linuxx64Stubsمصنوع اضافه شد. هیچکدام از این هدفها برای استفاده درنظر گرفته نشدهاند، بلکه جایگذاریهایی هستند که به تلاشهای Jetbrains Compose کمک میکنند.
نسخه ۱.۷.۰
۴ سپتامبر ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0 منتشر شد. نسخه ۱.۷.۰ شامل این تعهدات است.
تغییرات مهم از نسخه ۱.۶.۰
- امکان ارائه ترکیب محلی که براساس مقادیر دیگر ترکیبهای محلی محاسبه میشود اضافه شد. این کار یا بهطور پیشفرض بااستفاده از
compositionLocalWithComputedDefault()انجام میشود یا با ارائه یک لامبدا برای محاسبه مقدار بااستفاده ازprovidesComputedبهجایprovides. - مقدار ترکیب محلی را میتوان بااستفاده از دارایی
currentValueترکیب محلی که از داخل لامبدا محاسبهکننده مقدار قابلدسترس است بهدست آورد. این بهجایcurrentاستفاده میشود که فقط در@Composableکارکرد دردسترس است. (Iadbc0) - بهمحض ایجاد شدن، اشیای حالت جدید از دیگر لحظهعکسها، ازجمله لحظهعکس سراسری، با حالت اولیه خودشان دردسترس قرار میگیرند. تا زمانی که نمای لحظهای که در آن شیء ایجاد شده است اعمال نشود، هیچ اصلاح بعدیای قابلمشاهده نیست.
- وضعیت اولیه
mutableStateOf()، و همچنین نسخههای ابتدایی آن، مقداری است که بهعنوان پارامتر بهmutableStateOf()ارسال میشود. وضعیت اولیهmutableStateListOf()وmutableStateMapOf()خالی است. -
Snapshot.isInSnapshotوSnapshot.PreexistingSnapshotIdاضافه شد که برای فعال کردن شیء حالت استفاده میشود تا از دسترسی فوری به آن از نمای کلی جهانی پساز ایجاد پشتیبانی شود. - با پیروی از الگوی تغییرات ایجادشده در اشیای چسبنده داخلی، اشیای وضعیت سفارشی میتوانند از دردسترس بودن فوری پشتیبانی کنند. (I84a17)
-
nonSkippingGroupOptimizationرا برای کتابخانههای Compose فعال کنید. این کار باعث میشود کد تولیدشده برای همه توابع ترکیبپذیر غیرقابلراهاندازی مجدد در androidx کارآمدتر باشد. در آینده قصد داریم این ویژگی را بهطور پیشفرض فعال کنیم. I(acbc08) - لامبداهای ترکیبشدنی را در ترکیبهای فرعی در همان قاب نامعتبر کنید. (98301c)
- تماس با
onReleaseدر همان ترتیبی که باonForgottenتماس گرفته شد. (2cd790) - فعال کردن حالت رد کردن قوی (ed1766)
-
currentCompoundHashKeyرا در موارد بیشتری منحصربهفرد کنید (d4a872)
نسخه 1.7.0-rc01
۲۱ اوت ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-rc01 منتشر شد. نسخه 1.7.0-rc01 شامل این تعهدات است.
نسخه 1.7.0-beta07
۷ اوت ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta07 منتشر شد. نسخه 1.7.0-beta07 شامل این تعهدات است.
نسخه 1.7.0-beta06
۲۴ ژوئیه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta06 منتشر شد. نسخه 1.7.0-beta06 شامل این تعهدات است.
نسخه 1.7.0-beta05
۱۰ ژوئیه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta05 منتشر شد. نسخه 1.7.0-beta05 شامل این تعهدات است.
نسخه 1.7.0-beta04
۲۶ ژوئن ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta04 منتشر شد. نسخه 1.7.0-beta04 حاوی این تعهدات است.
نسخه 1.7.0-beta03
۱۲ ژوئن ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta03 منتشر شد. نسخه 1.7.0-beta03 شامل این تعهدات است.
نسخه 1.7.0-beta02
۲۹ مه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta02 منتشر شد. نسخه 1.7.0-beta02 شامل این تعهدات است.
نسخه 1.7.0-beta01
۱۴ مه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-beta01 منتشر شد. نسخه 1.7.0-beta01 شامل این تعهدات است.
نسخه 1.7.0-alpha08
۱ مه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha08 منتشر شد. نسخه 1.7.0-alpha08 شامل این تعهدات است.
نسخه 1.7.0-alpha07
۱۷ آوریل ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha07 منتشر شد. نسخه 1.7.0-alpha07 شامل این تعهدات است.
ویژگیهای جدید
- امکان ارائه ترکیب محلی که براساس مقادیر دیگر ترکیبهای محلی محاسبه میشود اضافه شد. این کار یا بهطور پیشفرض بااستفاده از
compositionLocalWithComputedDefault()انجام میشود یا با ارائه یک لامبدا برای محاسبه مقدار بااستفاده ازprovidesComputedبهجایprovides. - مقدار ترکیب محلی را میتوان بااستفاده از دارایی
currentValueترکیب محلی که از داخل لامبدای محاسبهکننده مقدار قابلدسترس است بهدست آورد. این بهجایcurrentاستفاده میشود که فقط در@Composableکارکرد دردسترس است. (Iadbc0)
تغییرات میانای برنامهسازی کاربردی
- بهمحض ایجاد شدن، اشیای حالت جدید از دیگر لحظهعکسها، ازجمله لحظهعکس سراسری، با حالت اولیه خودشان دردسترس قرار میگیرند. تا زمانی که نمای لحظهای که در آن شیء ایجاد شده است اعمال نشود، هیچ اصلاح بعدیای قابلمشاهده نیست.
- وضعیت اولیه
mutableStateOf()، و همچنین نسخههای ابتدایی آن، مقداری است که بهعنوان پارامتر بهmutableStateOf()ارسال میشود. وضعیت اولیهmutableStateListOf()وmutableStateMapOf()خالی است. -
Snapshot.isInSnapshotوSnapshot.PreexistingSnapshotIdاضافه شد که برای فعال کردن شیء حالت استفاده میشود تا از دسترسی فوری به آن از نمای کلی جهانی پساز ایجاد پشتیبانی شود. - با پیروی از الگوی تغییرات ایجادشده در اشیای چسبنده داخلی، اشیای وضعیت سفارشی میتوانند از دردسترس بودن فوری پشتیبانی کنند. (I84a17)
رفع اشکالها
- ادغام
readObserverدر نماهای فوری تودرتو اصلاح شد. این امر باعث میشد که وضعیتهای مشتقشده تودرتو هنگام استفاده درsnapshotFlowبهدرستی نامعتبر نشوند. (Idf138)
نسخه 1.7.0-alpha06
۳ آوریل ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha06 منتشر شد. نسخه 1.7.0-alpha06 شامل این تعهدها است.
رفع اشکالها
- رفع اشکال مدیریت مقادیر تکی ارائهشده
providesDefault(538f45) - جلوگیری از بنبست در «بازساز» که به ساعت قاب دسترسی دارد (07e5c6)
نسخه 1.7.0-alpha05
۲۰ مارس ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha05 منتشر شد. نسخه 1.7.0-alpha05 شامل این تعهدات است.
رفع اشکالها
- پاک کردن تغییرات دیررس در قطعه موسیقی غیرفعالشده (5950bc)
نسخه 1.7.0-alpha04
۶ مارس ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha04 منتشر شد. نسخه 1.7.0-alpha04 شامل این تعهدها است.
بهبود عملکرد
- یکبار در هر ارزیابی وضعیت مشتقشده با
Snapshot.currentتماس بگیرید (ee7daf) -
currentRecordرا یکبار برای هر مشاهده در ترکیب بخوانید (b882b2) - برداشتن تخصیص تکرارکننده تصادفی در
snapshotFlow(231e56) -
nonSkippingGroupOptimizationرا برای کتابخانههای Compose فعال کنید. این کار باعث میشود کد تولیدشده برای همه توابع ترکیبپذیر غیرقابلراهاندازی مجدد در androidx کارآمدتر باشد. در آینده قصد داریم این ویژگی را بهطور پیشفرض فعال کنیم. I(acbc08)
نسخه 1.7.0-alpha03
۲۱ فوریه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha03 منتشر شد. نسخه 1.7.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- معرفی گروههای جایگزین برای بهبود تشخیص تغییرات (0941b5)
بهبود عملکرد
- بهبود تخصیص حافظه هنگام تشخیص تغییرات (53e7fd)
- رفع نشت حافظه در آهنگساز (0e097d)
- از
ScopeMapبرای انتقال نامعتبرسازیها هنگام بازسازی (e19a7e) استفاده کنید - بهینهسازی نقشه نامعتبرسازیها برای حفظ فقط وضعیتهای مشتقشده (f11c44)
- جایگزین کردن
IdentityArraySetمورد استفاده باScatterSet(db572e) - بهینهسازی
removeScopeدرScopeMap(bb0530)
نسخه 1.7.0-alpha02
۷ فوریه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha02 منتشر شد. نسخه 1.7.0-alpha02 شامل این تعهدات است.
رفع اشکالها
- لامبداهای ترکیبشدنی را در ترکیبهای فرعی در همان قاب نامعتبر کنید. (98301c)
- تماس با
onReleaseدر همان ترتیبی که باonForgottenتماس گرفته شد. (2cd790) - فیلتر وضعیتهایی را تغییر داد که در
snapshotFlowمشاهده نمیشود. (796b80)
بهبود عملکرد
- وقتی ناظر عکس آنی ازقبل شفاف است، آن را در جای خود اصلاح کنید. (f60f30)
- بهینهسازی
SnapshotIdSet.lowest(). (7ae149) - از
fold()بدون تخصیص درSnapshotIdSetاستفاده کنید. (532b7d) - برداشتن تخصیص تکرارکننده (83f96b)
نسخه 1.7.0-alpha01
۲۴ ژانویه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.7.0-alpha01 منتشر شد. نسخه 1.7.0-alpha01 شامل این تعهدات است.
بهینهسازیهای عملکرد
- افزودن امکان ایجاد جای آگهی پساز اضافه شدن گروه کودک (b5960c)
- بهینهسازی تغییرات ضبط وضعیتهای عکس آنی (28c3fe)
- فعال کردن حالت رد کردن قوی (ed1766)
رفع اشکالها
- حساب برای فراداده پارامتر پیشفرض در یادآوری ذاتی (096665)
-
currentCompoundHashKeyرا در موارد بیشتری منحصربهفرد کنید (d4a872) - وقتی از فراخوانی تابع درونخطی خارج میشوید، گروهها را متوجه شوید (2a90fc)
نسخه ۱.۶
نسخه ۱.۶.۸
۱۲ ژوئن ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.8 منتشر شد. نسخه ۱.۶.۸ شامل این تعهدها است.
نسخه ۱.۶.۷
۱ مه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.7 منتشر شد. نسخه ۱.۶.۷ شامل این تعهدات است.
نسخه ۱.۶.۶
۱۷ آوریل ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.6 منتشر شد. از زمان آخرین نسخه تغییری ایجاد نشده است.
نسخه ۱.۶.۵
۳ آوریل ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.5 منتشر شد. نسخه ۱.۶.۵ شامل این تعهدات است.
نسخه ۱.۶.۴
۲۰ مارس ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.4 منتشر شد. نسخه ۱.۶.۴ شامل این تعهدات است.
نسخه ۱.۶.۳
۶ مارس ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.3 منتشر شد. نسخه ۱.۶.۳ شامل این تعهدات است.
نسخه ۱.۶.۲
۲۱ فوریه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.2 منتشر شد. نسخه ۱.۶.۲ شامل این تعهدات است.
نسخه ۱.۶.۱
۷ فوریه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.1 منتشر شد. نسخه ۱.۶.۱ حاوی این تعهدات است.
رفع اشکالها
- تماس با
onReleaseدر همان ترتیبی که باonForgottenتماس گرفته شد. (2cd790) - فیلتر وضعیتهایی را تغییر داد که در
snapshotFlowمشاهده نمیشود. (796b80)
نسخه ۱.۶.۰
۲۴ ژانویه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.0 منتشر شد. نسخه ۱.۶.۰ حاوی این تعهدات است.
تغییرات مهم از نسخه ۱.۵.۰
ویژگیهای جدید
- استثناهایی که درحین حلقه بازترکیب بلعیده میشوند دوباره پرتاب میشوند (4dff9a)
بهینهسازیهای عملکرد
- بهینهسازی تغییرات ضبط وضعیتهای عکس آنی (28c3fe)
- بهینهسازی
rememberSaveable(f01d79) - بهتعویق انداختن خواندن مجدد وضعیتهای مشتقشده تا زمانی که تغییرات ثبت شوند (f38099)
- بهبود ارائه مقادیر محلی ترکیب (a337ea)
رفع اشکالها
- رفع نشت حافظه جدول جایگاه (73fcfe)
- از ترکیب مجدد قطعات فرعی که برداشته خواهند شد صرفنظر کنید. (Ieeb99، b/254645321)
- فقط وقتی در محاسبات یادآوری ذخیره میشود،
RememberObserverچرخه عمر را راهاندازی کنید. (f6b4dc) - ضبط
$dirtyرا به لامبداهای درونخطی محدود کنید. (acfca0) - رفع مشکل محتوای قابلحرکت که گاهیاوقات ترکیب محلی اشتباهی دریافت میکند. (035cd6)
نسخه 1.6.0-rc01
۱۰ ژانویه ۲۰۲۴
androidx.compose.runtime:runtime-*:1.6.0-rc01 منتشر شد. نسخه 1.6.0-rc01 حاوی این تعهدات است.
نسخه 1.6.0-beta03
۱۳ دسامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-beta03 منتشر شد. نسخه 1.6.0-beta03 حاوی این تعهدات است.
نسخه 1.6.0-beta02
۲۹ نوامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-beta02 منتشر شد. نسخه 1.6.0-beta02 حاوی این تعهدها است.
نسخه 1.6.0-beta01
۱۵ نوامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-beta01 منتشر شد. نسخه 1.6.0-beta01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- مقادیر «پایداری معین» را در گزارمان منتشر کنید. (274a4c)
رفع اشکالها
- از خطمشی ارجاعی برای وضعیت حوزه محلی ترکیب در بافت استفاده کنید. (83361c)
- ضبط $dirty را به لامبداهای درونخطی محدود کنید. (acfca0)
- رفع مشکل محتوای قابلحرکت که گاهیاوقات ترکیب محلی اشتباهی دریافت میکند. (035cd6)
- از نقشه درهمسازی غیرتخصیصی سریعتر در
RecomposeScopeImplاستفاده کنید. (d79494) - استفاده از
ObjectIntMapدرDerivedState. (21862e) - از
IntRefبرای عدد صحیحSnapshotThreadLocalدرDerivedStateاستفاده کنید. (04eaf4)
نسخه 1.6.0-alpha08
۱۸ اکتبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha08 منتشر شد. نسخه 1.6.0-alpha08 حاوی این تعهدات است.
رفع اشکالها
- فقط وقتی در محاسبات یادآوری ذخیره میشود،
RememberObserverچرخه عمر را راهاندازی کنید. (f6b4dc) - بهبود تخصیصها در مرتبسازی فهرست ابطالها. (954d63)
- از نقشههای جدید غیرتخصیصی در
SnapshotStateObserverاستفاده کنید. (4303ce) - وقتی ترکیب غیرفعال میشود، باطلسازیها پاک میشود. (e001be)
نسخه 1.6.0-alpha07
۴ اکتبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha07 منتشر شد. نسخه 1.6.0-alpha07 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- اکنون
SnapshotStateListبهعنوانRandomAccessعلامتگذاری شده است تا نسخه نمایهگذاری مستقیم دستیارهای فهرست فعال شود. (I5210c، b/219554654)
نسخه 1.6.0-alpha06
۲۰ سپتامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha06 منتشر شد. نسخه 1.6.0-alpha06 شامل این تعهدات است.
نسخه 1.6.0-alpha05
۶ سپتامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha05 منتشر شد. نسخه 1.6.0-alpha05 حاوی این تعهدات است.
نسخه 1.6.0-alpha04
۲۳ اوت ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha04 منتشر شد. نسخه 1.6.0-alpha04 حاوی این تعهدات است.
ویژگیهای جدید
- استثناهایی که درحین حلقه بازترکیب بلعیده میشوند دوباره پرتاب میشوند (4dff9a)
تغییرات میانای برنامهسازی کاربردی
- روشی برای غیرفعال کردن
ReusableCompositionاضافه شد، مشاهدات برداشته میشود اما گرهها در جای خود باقی میمانند. با تماس گرفتن باsetContentمیتوانید قطعه غیرفعالشده را دوباره فعال کنید. (Ib7f31) - واسط
ReusableCompositionرا برای مدیریت چرخه عمر و استفاده مجدد از زیرترکیبها اضافه کنید. (I812d1، b/252846775)
نسخه 1.6.0-alpha03
۹ اوت ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha03 منتشر شد. نسخه 1.6.0-alpha03 شامل این تعهدات است.
رفع اشکالها
- رفع اشکال
CompositionLocalProviderبهینهسازی جدید (3118e88) - نحوه ازهم باز کردن گرههای محتوای قابلانتقال را اصلاح کنید. (5e3d59b)
نسخه 1.6.0-alpha02
۲۶ ژوئیه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha02 منتشر شد. نسخه 1.6.0-alpha02 شامل این تعهدات است.
ویژگیهای جدید و بهبود عملکرد
- بهینهسازی
rememberSaveable(f01d79) - بهتعویق انداختن خواندن مجدد وضعیتهای مشتقشده تا زمانی که تغییرات ثبت شوند (f38099)
- بهبود ارائه مقادیر محلی ترکیب (a337ea)
-
SideEffectبهعنوان@ExplicitGroupsComposableعلامتگذاری شده است تا گروهی تولید نشود. (I74815) - پرهیز از مقایسه نقشههای محلی ترکیب در استفاده مجدد (۷۸۲۰۷۱)
تغییرات میانای برنامهسازی کاربردی
- یک مورد ویژه برای
CompositionLocalProvidersاضافه شد که از سربار استفادهشده برای سریعتر کردن ارائه مقادیر متعدد جلوگیری میکند، اما هنگام ارائه مقدار واحد سربار است. (I6d640، b/288169379)
رفع اشکالها
- رفع نشت حافظه جدول جایگاه (73fcfe)
- رفع مشکل نحوه بازیابی
rememberSaveableوقتیstateSaverمقدار تهی برمیگرداند (90748c)
نسخه 1.6.0-alpha01
۲۱ ژوئن ۲۰۲۳
androidx.compose.runtime:runtime-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 حاوی این تعهدات است.
رفع اشکالها
- از ترکیب مجدد قطعات فرعی که برداشته خواهند شد صرفنظر کنید. (Ieeb99، b/254645321)
- تخصیصهای کاهشیافته هنگام اعمال کردن نماگرفتها. (I65c09)
- اگر نماگرفت تغییر نکرده است، از محاسبه
readableHashدرDerivedStateخودداری کنید (68c565)
نسخه 1.5
نسخه ۱.۵.۴
۱۸ اکتبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.4 منتشر شد. نسخه 1.5.4 شامل این تعهدات است.
نسخه ۱.۵.۳
۴ اکتبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.3 منتشر شد. نسخه ۱.۵.۳ حاوی این تعهدات است.
نسخه 1.5.2
۲۷ سپتامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.2 منتشر شد. نسخه ۱.۵.۲ شامل این تعهدات است.
نسخه 1.5.1
۶ سپتامبر ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.1 منتشر شد. نسخه 1.5.1 حاوی این تعهدات است.
نسخه ۱.۵.۰
۹ اوت ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0 منتشر شد. نسخه ۱.۵.۰ حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- تخصیصهای برداشتهشده در ترکیب مجدد، پویانماییهای رنگی، و
AndroidComposeView. (Ib2bfa) - یک گزارمان
@StateFactoryMarkerاضافه شد تا توابعی را که وضعیت ایجاد میکنند و باید در تماسrememberپیچیده شوند علامتگذاری کند. (I64550) - نسخههای ابتدایی «استان» و
MutableStateرا اضافه کنید (fb3d89) -
Snapshot.isApplyObserverNotificationPending(I672a5) اضافه شد - نسخههای ابتدایی
StateAPI اضافه شد که به مقادیر Int، Long، Float، و Double اجازه میدهد در اشیایStateبدون متحمل شدن جریمه برای تبدیل خودکار جعبهای ردیابی شوند. برای استفاده از این موارد، از روشهای کارخانهای جدیدmutableIntState(Int)،mutableFloatStateOf(Float)، و غیره استفاده کنید. (I48e43)
رفع اشکالها
- از ترکیب مجدد قطعات فرعی که برداشته خواهند شد صرفنظر کنید. (Ieeb99، b/254645321)
- مرجع تصویر کلی در
ComposerImpl(0206f7) حفظ نشود - ترکیببندی دوبار اعمال نشود (f5791b)
- اطمینان از نامعتبر شدن مقادیر وضعیت مشتقشده غیرمقداردهیشده (aa2a92)
- درطول دور ریختن ترکیب، با
onEndChangesتماس بگیرید. (62cc8c) - رفع مشکل انتقال محتوا به یک ترکیب فرعی (4beb41)
- رفع بنبستهای احتمالی (c1a425 و 8edce0)
- ترکیبکننده مجددی که برای پنجره Android ایجاد شده است اکنون فقط تماسهای
withFrameNanosرا مسدود میکند، نه همه ترکیبها را، وقتی اعلان ON_STOP دریافت میکند. این یعنی پنجرههای مرتبط با فعالیتهای متوقفشده برای تغییرات دادهها به ترکیب مجدد ادامه خواهند داد اما پویانماییها یا هر فراخواننده دیگری از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
۲۶ ژوئیه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 شامل این تعهدات است.
رفع اشکالها
بهتعویق انداختن خواندن مجدد وضعیتهای مشتقشده تا زمانی که تغییرات ثبت شوند (f38099)
بازرسی اختیاری برای توصیه به انتقال
mutableStateOf()تماس به انواع تخصصی مربوطه برای عناصر اولیه دردسترس است. شناسه lint آنAutoboxingStateCreationاست. قبلاً، این بازرسی بهطور پیشفرض برای همه پروژهها فعال بود. برای دیدن این هشدار در ویرایشگر Android Studio و بروندادهای lint پروژه، با تعریف کردنwarning "AutoboxingStateCreation"در پیکربندی build.gradle یا build.gradle.kts واحدتان، شدت آن را از «اطلاعاتی» به «هشدار» (یا بالاتر) تغییر دهید، همانطور که در اینجا نشان داده شده است (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
نسخه 1.5.0-beta03
۲۸ ژوئن ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-beta03 منتشر شد. نسخه 1.5.0-beta03 حاوی این تعهدات است.
رفع اشکالها
- از ترکیب مجدد قطعات فرعی که برداشته خواهند شد صرفنظر کنید. (Ieeb99، b/254645321)
نسخه 1.5.0-beta02
۷ ژوئن ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-beta02 منتشر شد. نسخه 1.5.0-beta02 شامل این تعهدات است.
بهبود عملکرد
- اگر نمای لحظهای اصلاح نشده است، از محاسبه
readableHashدرDerivedStateخودداری کنید. (307102)
نسخه 1.5.0-beta01
۲۴ مه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-beta01 منتشر شد. نسخه 1.5.0-beta01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- تخصیصهای برداشتهشده در ترکیب مجدد، پویانماییهای رنگی، و
AndroidComposeView(Ib2bfa) - یک گزارمان
@StateFactoryMarkerاضافه شد تا توابعی را که وضعیت ایجاد میکنند و باید در تماسrememberپیچیده شوند علامتگذاری کند. (I64550) - نسخههای ابتدایی «استان» و
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
۱۰ مه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-alpha04 منتشر شد. نسخه 1.5.0-alpha04 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نسخههای ابتدایی
StateAPI اضافه شد که به مقادیر Int، Long، Float، و Double اجازه میدهد در اشیایStateبدون متحمل شدن جریمه برای تبدیل خودکار جعبهای ردیابی شوند. برای استفاده از این موارد، از روشهای کارخانهای جدیدmutableIntState(Int)،mutableFloatStateOf(Float)، و غیره استفاده کنید. (I48e43)
رفع اشکالها
درطول دور ریختن ترکیب، با
onEndChangesتماس بگیرید. گرههای کانونی که درطولComposition.disposeبرداشته شدهاند برای بازنشانی تمرکز درonEndChangesمشترک میشوند.(03d4a47)برای مقادیر وضعیت مشتقشده غیرمقداردهیشده، نامعتبرسازی را تضمین کنید. هر وضعیت مشتقشده با فهرستی از وابستگیهای آن در
SnapshotStateObserverمرتبط است که برای نامعتبر کردن محدودههای مرتبط با وضعیت مشتقشده درصورت تغییر وابستگی استفاده میشود. تغییر وابستگی در پیشنمای فوری ثبت میشود، که میتواند پساز خواندن وضعیت مشتقشده (بهدلیل تماس باSnapshot.notifyObjectsInitialized()) اتفاق بیفتد.منطق مشاهده وضعیت مشتق قبلی در
SnapshotStateObserverوابستگیهای قدیمی را پاکسازی میکرد، سپس مقدار جدید را میخواند. این امر منجر به وضعیت مسابقهای با نامعتبر شدن در وضعیت پاکسازیشده شد، جایی که نامعتبر شدن وابستگی ثبت نشده بود.این تغییر ترتیب خواندن وضعیت مشتق و پاکسازی وابستگی را تغییر میدهد و تضمین میکند که باطلسازی همیشه در وضعیت معتبر انجام شود. (c472be6)
نسخه 1.5.0-alpha03
۱۹ آوریل ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-alpha03 منتشر شد. نسخه 1.5.0-alpha03 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- ترکیبکننده مجددی که برای پنجره Android ایجاد شده است اکنون فقط تماسهای
withFrameNanosرا مسدود میکند، نه همه ترکیبها را، وقتی اعلان ON_STOP دریافت میکند. این یعنی پنجرههای مرتبط با فعالیتهای متوقفشده برای تغییرات دادهها به ترکیب مجدد ادامه خواهند داد اما پویانماییها یا هر فراخواننده دیگری ازwithFrameNanosمسدود خواهد شد. (Id9e7f، b/240975572)
رفع اشکالها
- رفع بنبست احتمالی در فهرست و نقشه عکس آنی 5c1a425
- اجرای تماسهای برگشتی غیرفعالسازی برای
LayoutNodeقبلاز کنار گذاشتن جلوهها 3784073 - رفع پرچمهای تغییریافته برای لامبداهای بازراهاندازیشده ea81df9
- رفع پسرفت ویرایش زنده برای Composable با گرههای 73fd4d8
- ON_STOP باید بهجای ae276f1 ترکیب، همهفرستیهای ساعت قاب را موقتاً متوقف کند
- نامعتبر کردن
SnapshotStateObserverمحدوده برای وضعیتهای مشتقشده بدون تغییر 84d9b1c - رفع بنبست احتمالی هنگام دور انداختن ترکیبها 28761fc
- رفع مشکل انتقال محتوا به یک ترکیب فرعی 92d4156
نسخه 1.5.0-alpha02
۵ آوریل ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-alpha02 منتشر شد. نسخه 1.5.0-alpha02 شامل این تعهدات است.
ویژگیهای جدید
- اکنون اپراتور
getValueدر Kotlin میتواند ترکیبشدنی باشد (f174f6e)
رفع اشکالها، بهبود عملکرد
- رونویسی کردن سوابق وضعیت اشیای وضعیت با سوابق وضعیت غیرقابلدسترس (c986960)
- هنگام ایجاد گروهها، از آهنگساز با محدوده صحیح استفاده کنید (9a5e5b6)
- رفع
endToMarker()هنگام پایان دادن به گروههای گره. (d71d980) - استفاده از گروه
SlotWriterکنونی برای بررسی غیرفعالسازی (a0b518b) - از
IdentityArraySetبرای ذخیره کردن نامعتبرسازیهای لحظهای استفاده کنید (7f60cca) -
fillرا درSlotTable.moveSlotGapTo()بردارید و آن را به نزدیک (81f9935) منتقل کنید - رفع کردن مشکل نامعتبر شدنهای ازدسترفته درحین جابهجایی محتوای قابلجابهجایی (1d7c024)
- رفع کردن بیاعتبار شدنهای فوری برای محتوای قابلانتقال منتقلشده (8676618)
- کاهش تخصیصها برای مشاهدههای لحظهای (5bc535f)
نسخه 1.5.0-alpha01
۲۲ مارس ۲۰۲۳
androidx.compose.runtime:runtime-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 حاوی این تعهدات است.
ویژگیهای جدید
-
Modifier.Node#coroutineScopeرا اضافه میکند تا بهModifier.Nodesاجازه دهد روتینهای همزمان را راهاندازی کند (I76ef9) - با پیادهسازی میانای
CompositionLocalConsumerModifierNode، به «Modifier.Nodes» اجازه دهیدCompositionLocalsرا بخواند. (Ib44df)
نسخه ۱.۴
نسخه ۱.۴.۳
۳ مه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.3 بدون تغییر منتشر شد.
نسخه 1.4.2
۱۹ آوریل ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.2 منتشر شد. نسخه ۱.۴.۲ شامل این تعهدات است.
رفع اشکالها
رفع بنبست احتمالی در فهرست و نقشه نمای فوری 2eb6570
اگر تغییر همزمان با نوشتن مستقیم در گزارش وضعیت باشد، افزودن محتوا به
SnapshotStateListیاSnapshotStateMapمیتواند با بنبست مواجه شود. با تغییراتی که 93fcae828b معرفی کرد و از نوشتن مستقیم برای انتشار سوابق استفادهنشده استفاده میکند، احتمال مواجهه با این مشکل بهطور قابلتوجهی افزایش یافت.اکنون قفلها بهترتیب مرتب شدهاند بهطوریکه وقتی قفل نقشه یا فهرست برقرار است، هرگز تلاش نمیشود قفل لحظهای گرفته شود.
نسخه ۱.۴.۱
۵ آوریل ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.1 منتشر شد. نسخه 1.4.1 حاوی این تعهدات است.
رفع اشکالها
- رفع
endToMarker()هنگام پایان دادن به گروههای گره. d71d980
نسخه ۱.۴.۰
۲۲ مارس ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.0 منتشر شد. نسخه ۱.۴.۰ حاوی این تعهدات است.
تغییرات مهم از نسخه ۱.۳.۰
- برای اولین ترکیب 3680e25 از مقدار اولیه از
LiveDataاستفاده کنید - برای مشاهده چرخه حیات گرههای نوشتن،
ComposeNodeLifecycleCallbackرا اضافه کنید. 8b6a258 - افزودن دارایی
parameterTypesبهComposableMethod7b6c7ad
رفع اشکالها و بهبود عملکرد
- پاک کردن هر دو نمایه حوزه در
SnapshotStateObserver29f4a3e - افزودن گروههای موردنیاز در بدنه لامبداهای غیرقابل رد کردن 7d06752
- بهبود ویژگیهای مرجع حافظه وضعیت «عکس آنی» 93fcae8
- برداشتن چارگوش در جستجوهای محلی ترکیب 0875717
- از کلید صحیح برای گروههای گره غیرقابل استفاده مجدد 6388d8d استفاده کنید
- محافظت از
SnapshotStateObserverدربرابر اعمال بازگشتی و همزمان 98cb6ba - بررسی محدوده شاخص در روش «get» در
IdentityArraySetاضافه شد 35a77d3 - برای استفاده از
ViewTreeLifecycleOwnerافزونه، واحد نوشتن را بهروز کنید 21c2122 - پساز اینکه «ترکیبکننده مجدد» قاب را تمام کرد، اعلانهای اعمال را ارسال کنید. 98f2641
- رفع خرابی نمایه خارج از محدوده هنگام لغو «بازساز» 8f8656f
- اگر ارائهدهندگان والد «ترکیب» تغییر کرده باشند، همیشه ترکیب مجدد بهطور اجباری انجام شود 9526fcc
- تسامح بازترکیب برای «کارهای» لغوشده a55f7ed
- بهبود مدیریت نامعتبرسازیها برای تعداد زیادی آهنگساز 9b7ed67
- رفع اشکال تولید گروههای بسته برای برگشتیهای غیرمحلی b6f590c
نسخه 1.4.0-rc01
۸ مارس ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-rc01 حاوی این تعهدات است.
رفع اشکالها
نسخه 1.4.0-beta02
۲۲ فوریه ۲۰۲۳
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
۸ فوریه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
ComposeNodeLifecycleCallbackاضافه شد که امکان مشاهده چرخه حیات گرههای Compose را فراهم میکند (I3731b) -
@TestOnlyبهComposer.disableSourceInformation()اضافه شد زیرا این تابع فقط در آزمایش ایمن است. (I896c8)
رفع اشکالها
- برداشتن چارگوش در جستجوهای محلی ترکیببندی (62f66a)
- بهبود ویژگیهای مرجع حافظه وضعیت «عکس آنی» (dfb451)
نسخه 1.4.0-alpha05
۲۵ ژانویه ۲۰۲۳
androidx.compose.runtime:runtime:1.4.0-alpha05 و androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 منتشر شدند. نسخه 1.4.0-alpha05 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نوع/قابلیت تهی بودن توابع درونخط/منسوخ-پنهان بیشتر (I24f91)
نسخه 1.4.0-alpha04
۱۱ ژانویه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
TestMonotonicFrameClockاکنون از حاشیهنویسی آزمایشی صحیح استفاده میکند. (I95c9e)
رفع اشکالها
- محافظت از
SnapshotStateObserverدربرابر اعمال بازگشتی و همزمان (d902fb)
نسخه 1.4.0-alpha03
۷ دسامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- افزودن روش عمومی جدید به کلاس
ComposableMethodمشابه باjava.lang.reflect.Method#getParameterTypes()(Iab0c3)
رفع اشکالها
- اعلانهای اعمال کردن «نمای فوری» اکنون پساز اینکه
Recomposerاعمال تغییرات را تمام کرد ارسال میشود. (Iad6c0, b/222093277)
نسخه 1.4.0-alpha02
۹ نوامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این تعهدات است.
نسخه 1.4.0-alpha01
۲۴ اکتبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
SnapshotStateListوSnapshotStateMapاکنون بهترتیب پیادهسازیهای صریحی ازtoList()وtoMap()دارند. این روشها محتوای فعلی خود را بدون انجام کپی برمیگردانند زیرا دادههای داخلی تغییرناپذیر مورداستفاده برای ذخیره محتوای خود را برمیگردانند. برای مثال، میتوان از این مقدار برای تولید جریانی از مقادیر بااستفاده ازsnapshotFlowبدون نیاز به کپی کردن دادهها استفاده کرد. (Ica2bd)
نسخه ۱.۳
نسخه ۱.۳.۳
۱۱ ژانویه ۲۰۲۳
androidx.compose.runtime:runtime-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ حاوی این تعهدات است.
- از نسخه ۱.۳.۲ تغییری ایجاد نشده است
نسخه ۱.۳.۲
۷ دسامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ حاوی این تعهدات است.
رفع اشکالها
- برای پشتیبانی از androidx.compose.ui 1.3.2 بهروزرسانی شد
نسخه ۱.۳.۱
۹ نوامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.1 منتشر شد. نسخه 1.3.1 شامل این تعهدات است.
نسخه ۱.۳.۰
۲۴ اکتبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ حاوی این تعهدات است.
تغییرات مهم از نسخه ۱.۲.۰
مدیریت استثنا / پشتیبانی از ویرایش زنده
- برای پشتیبانی بهتر از ویرایش زنده، «میاناهای برنامهسازی کاربردی» اضافه شد تا امکان مدیریت استثناها درطول ترکیب فراهم شود
- مدیریت خطای ترکیب برای بار کردن مجدد فعال
- رسیدگی به خطاهای ویرایش زنده در ذخیره/بازیابی
ردیابی ترکیب
- «میاناهای برنامهسازی کاربردی ردیابی زمان اجرا» برای پشتیبانی از ابزارهای جدید ردیابی ترکیب اضافه شده است
- تولید تماسهای شروع/پایان رویداد ردیابی ترکیبی
- ComposerKt.traceEventStart(Int, String) دوباره اضافه شد
میاناهای برنامهسازی کاربردی بازتابی ترکیبی
- میانای برنامهسازی کاربردی جدید
ComposableMethodاضافه شد تا فراخوانیهای مبتنی بر انعکاس میاناهای برنامهسازی کاربردی ترکیبی قابلاعتمادتر شود. - انتقال invokeComposable به زمان اجرای compose
- بازسازی میانای برنامهسازی کاربردی برای فراخوانی روش ترکیبشدنی
رفع اشکالهای زمان اجرا
- رفع اشکال آزمایش محدوده معیوب برای جدول جایگاه که نشانگرها را بررسی میکند
- اجازه میدهد محتوای قابلانتقال به داخل و خارج از SubcomposeLayout منتقل شود
- رفع مشکل انتقال محتوا به محتوای جدید یک زیرترکیب
سیستم عکس آنی
- سیستم تصویر فوری در زمینه مدیریت حافظه، عملکرد، و صحت بهبودهای مختلفی داشته است.
- بهینهسازی برداشتن محدوده در SnapshotStateObserver
- دور ریختن نماگرفتهای تودرتو ایجادشده از نماگرفتهای شفاف
- رفع وضعیت مسابقه هنگام خواندن وضعیت از نمای کلی جهانی
- پشتیبانی از DerivedState در SnapshotStateObserver
- جلوگیری از برداشتن وضعیت مشتقشده از قطعه موسیقی وقتی در حوزههای دیگر خوانده میشود
- بهجای HashMap در DerivedState از IdentityArrayMap استفاده کنید
- بهروزرسانی مشاهدهگران وضعیت مشتقشده برای استفاده از بردار تغییرپذیر
- بهروزرسانی پاکسازی وضعیت SnapshotStateObserver
- جایگزین کردن SnapshotStateObserver.invalidated با ArraySet
- رفع وضعیت مسابقه هنگام خواندن وضعیت از نمای کلی جهانی
- رفع کردن استفاده از سابقه قدیمی در محاسبه درهمسازی DerivedState
- رفع وضعیت مسابقه هنگام پیشبرد نمای کلی جهانی
- تسریع پاکسازی مشاهدات حوزه در SnapshotStateObserver
نسخه 1.3.0-rc01
۵ اکتبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 حاوی این تعهدات است.
رفع اشکالها
-
ArrayIndexOutOfBoundsExceptionاصلاح شد که از جدول جایگاه میآمد (b/249076084)
نسخه 1.3.0-beta03
۲۱ سپتامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-beta03 منتشر شد. نسخه 1.3.0-beta03 شامل این تعهدات است.
تغییر رفتار مخرب
- پارامتر
rememberوrememberCoroutineScopeبهcrossinlineتغییر کرد. این کار بهجای اینکه اجازه دهد بازگشت زودرس انجام شود، خطایی برای بازگشت زودرس گزارش میکند که باعث میشود خطای داخلی بعدی گزارش شود. - این تغییر میتواند بهطور بالقوه منجر به گزارش شدن خطاهای جدید در کامپایلر شود که در آنها لازم است برگشتیهای غیرمحلی از لامبداهای ارسالشده به این توابع برداشته شود. (Ibea62)
نسخه 1.3.0-beta02
۷ سپتامبر ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 شامل این تعهدات است.
رفع اشکالها
- میانای برنامهسازی کاربردی بهروزشده (I64ca0)
نسخه 1.3.0-beta01
۲۴ اوت ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- روش
findبهCompositionDataاضافه شد تا ابزارهای توسعهدهندگان بااستفاده از این API بتوانند بهسرعت زیرگروهی از قطعه را بااستفاده از هویت آن پیدا کنند. (I5794f)
نسخه 1.3.0-alpha03
۱۰ اوت ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 شامل این تعهدات است.
نسخه 1.3.0-alpha02
۲۷ ژوئیه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
ComposerKt.traceEventStart(Int, String)برای سازگاری با نسخه قدیمی دوباره اضافه شد (I6e6de)
نسخه 1.3.0-alpha01
۲۹ ژوئن ۲۰۲۲
androidx.compose.runtime:runtime-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- انتقال عملکرد کاربری به زمان اجرا (I4f729)
نسخه ۱.۲
نسخه ۱.۲.۱
۱۰ اوت ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ حاوی این تعهدات است.
رفع اشکالها
- رفع نشت حافظه: حذف کردن نماگرفتهای تودرتو که از نماگرفتهای شفاف ایجاد شدهاند b/239603305
نسخه ۱.۲.۰
۲۷ ژوئیه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ حاوی این تعهدها است.
تغییرات مهم از 1.1.0
«زمان اجرای Compose» در نسخه ۱.۲.۰ چند ویژگی جدید داشت و همچنین بسیاری از اشکالات آن برطرف شده بود. مهمترین ویژگی جدید معرفی
movableContentOfAPI بود که میتوان از آن برای فعال کردن تجربه کاربری پیچیده مثل انتقال عناصر مشترک استفاده کرد. movableContentOfAPI لامبدای ترکیبی را به لامبدایی تبدیل میکند که وضعیت و گرههای مربوطه را به هر مکان جدیدی که فراخوانی میشود منتقل میکند. وقتی تماس قبلی از ترکیب خارج میشود، وضعیت بهطور موقت حفظ میشود و اگر تماس جدیدی با لامبدا وارد ترکیب شود، وضعیت و «گرههای» مرتبط به مکان تماس جدید منتقل میشوند. اگر تماس جدیدی اضافه نشود، وضعیت برای همیشه برداشته میشود و به ناظران اطلاع داده میشود.اگر یک
movableContentOfلامبدا چندین بار در یک ترکیب فراخوانی شود، وضعیت و گرههای جدیدی برای هر فراخوانی ایجاد میشود و با خروج فراخوانیها از ترکیب و ورود فراخوانیهای جدید، وضعیت از اولین فراخوانیهای خروجی به فراخوانیهای ورودی به ترتیب فراخوانی آنها منتقل میشود. همه وضعیتهایی که تماسهای جدید ادعای مالکیت آنها را نکردهاند برای همیشه برداشته میشود.علاوهبر این و چند ویژگی جدید دیگر، زمان زیادی صرف پایدارسازی سیستم وضعیت «زمان اجرا» و «نمای فوری» شد. چندین نشت حافظه برداشته شد و مسیرهای کد بهینهسازی شد.
فهرست خلاصه تغییرات را در زیر مشاهده میکنید:
ویژگیهای جدید در 1.2
- افزودن عکس آنی آزمایشی ناامنEnter/Leave
- افزودن Snapshot.asContextElement API آزمایشی
- Snapshot.withoutReadObservation را معرفی کنید
- اجازه دادن به وضعیت برای حرکت در ترکیببندی
- ردیابی «ترکیبهای مجدد» در «نوشتن»
عملکرد در 1.2
رفع اشکالها در 1.2
- برداشتن اطلاعات ردیابی از محدودههای بازسازی نسخه پخش
- جلوگیری از برداشتن وضعیت مشتقشده از قطعه موسیقی وقتی در حوزههای دیگر خوانده میشود
- استفاده از removeScope() کارآمدتر در SnapshotStateObserver
- پاکسازی وابستگیهای وضعیت مشتق در قطعه موسیقی
- رفع مشکل تغییر currentCompositeKeyHash پساز ترکیب مجدد داخلی در محتوای قابلانتقال
- پاک کردن ترکیبهای نامعتبر درطول دور انداختن
- رفع اشکال خواندن وضعیت مشتقشده درطول بازآرایی
- رفع نشت حافظه هنگام مشاهده کردن اشیای وضعیت مشتقشده
- کلید درهمسازی محتوای قابلانتقال ثابت شد تا یکپارچه باشد
- رفع کردن مشکل گوشهای که باعث ازکارافتادن آهنگساز میشد
- مطمئن شوید که نامعتبر کردن اجباری یک گروه باعث بازترکیب میشود
- رفع اشکال مربوط به زمانی که rememberSaveable با ورودی به ترتیب اشتباهی بازیابی میشود
نسخه 1.2.0-rc03
۲۹ ژوئن ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-rc03 منتشر شد. نسخه 1.2.0-rc03 حاوی این تعهدات است.
رفع اشکالها
- قبلاً مشاهدات وضعیت مشتقشده بدون قیدوشرط از محدوده بازسازی و ترکیب با هم برداشته میشد که باعث ازکارافتادن سایر محدودههایی میشد که ممکن بود همچنان وضعیت مشتقشده را مشاهده کنند. این تغییر فقط نمونههای وضعیت مشتقشده را برمیدارد اگر دیگر توسط دامنههای دیگر مشاهده نشود. (b/236618362)
نسخه 1.2.0-rc02
۲۲ ژوئن ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-rc02 منتشر شد. نسخه 1.2.0-rc02 حاوی این تعهدات است.
نسخه 1.2.0-rc01
۱۵ ژوئن ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- میاناهای کتابخانههای Compose اکنون بااستفاده از روشهای میانای پیشفرض jdk8 ساخته میشوند (I5bcf1)
نسخه 1.2.0-beta03
۱ ژوئن ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 حاوی این تعهدات است.
نسخه 1.2.0-beta02
۱۸ مه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.
نسخه 1.2.0-beta01
۱۱ مه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 حاوی این تعهدها است.
ویژگیهای جدید
- این اولین نسخه بتای ۱.۲ است!
تغییرات میانای برنامهسازی کاربردی
-
Snapshot.unsafeEnter/unsafeLeaveآزمایشی (I108f3) اضافه شد - میانای برنامهسازی کاربردی آزمایشی
Snapshot.asContextElement()اضافه شد (Iff072) - حاشیهنویسی
@ComposableTargetو حاشیهنویسیهای علامتگذاریشده با@ComposableTargetMarkerاکنون میتوانند بااستفاده از پیشوند@fileدر حوزه فایل استفاده شوند. استفاده از گزارمان هدف در حوزه فایل باعث میشود که کامپایلر فرض کند همه توابع ترکیبشدنی در فایل برای هدفیابی کردن اعمالکننده منسوب درنظر گرفته شدهاند. برای مثال، استفاده از@file:UiComposableاعلام میکند که همه توابع@Composableهدفشان برنامه اعمالکننده «واسط کاربر نوشتن» است. تابعی که باید متوجه درخواستکننده دیگری باشد باید شرح نشانگر هدف را بهطور صریح برای درخواستکننده موردنظر ارائه دهد. (I40804)
نسخه 1.2.0-alpha08
۲۰ آوریل ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha08 منتشر شد. نسخه 1.2.0-alpha08 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
TracingInProgressبه میانایCompositionTracerاضافه شد. (Ic6f12) - افزودن
recomposeScopeIdentityبه «آهنگساز» (I0c873) - میاناهای ردیابی محدودشده (Composer.setTracer) به
OptIn(InternalComposeTracingApi). (I9187f) -
ResuableContentHostاضافه شد که امکان کنترل بهتر بر طول عمر وضعیت ایجادشده برای محتوای قابلاستفاده مجدد را فراهم میکند. برای مثال، اگر یک زیرقطعه موقتاً درحال استفاده نباشد، محتوا میتواند غیرفعال شود و باعث شود همه وضعیتهای بهیادمانده در قطعه فراموش شود و برای مثال، همه جلوههای یکبارمصرف را راهاندازی کند. (I2c0f2، b/220322704)
نسخه 1.2.0-alpha07
۶ آوریل ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- تابع جدید
Snapshot.withoutReadObservation { ... }اضافه شد. این تابع به کاربران اجازه میدهد تا لامبدای ارسالشده را بدون مشترک شدن در تغییرات مقادیر وضعیت خواندهشده درطول این بلوک اجرا کنند. در موارد استفادهای که میخواهید از نوشتن/خواندن ایمن رشته براساس نمای فوری بهرهمند شوید، اما میخواهید بتوانید مقدار را بدون ایجاد ترکیب مجدد یا اندازهگیری مجدد غیرضروری بخوانید، میتوانید از آن استفاده کنید. (I9f365، b/214054486)
نسخه 1.2.0-alpha06
۲۳ مارس ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 شامل این تعهدات است.
نسخه 1.2.0-alpha05
۹ مارس ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 حاوی این تعهدات است.
همیاری خارجی
- برای استفاده از روالهای مشترک Kotlinx نسخه ۱.۶.۰ بهروز شد (I3366d)
نسخه 1.2.0-alpha04
۲۳ فوریه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
ComposableTarget،ComposableTargetMarker، وComposableOpenTargetاضافه شد که گزارش زمان ترجمه را برای زمانی که یک تابع ترکیبپذیر با هدف یک اعمالکننده فراخوانده میشود که برای استفاده از آن طراحی نشده است امکانپذیر میکند.در بیشتر موارد، حاشیهنویسیها را میتوان از افزایه کامپایلر compose استنباط کرد، بنابراین استفاده مستقیم از این حاشیهنویسیها باید نادر باشد . مواردی که نمیتوانند استنباط شوند شامل ایجاد و استفاده از اعمالکننده سفارشی، توابع ترکیبی انتزاعی (مثل روشهای واسط)، فیلدها یا متغیرهای سراسری که لامبداهای ترکیبی هستند (متغیرهای محلی و پارامترها استنباط میشوند)، یا هنگام استفاده از
ComposeNodeیا توابع ترکیبی مرتبط میشود.برای اعمالکنندههای سفارشی، توابع ترکیبی که
ComposeNodeیاReusableComposeNodeرا فراخوانی میکنند باید حاشیهنویسیCompoableTargetرا برای تابع و هر نوع پارامتر لامبدای ترکیبی اضافه کنند. بااینحال، توصیه میشود یک گزارمان ایجاد کنید که باComposableTargetMarkerگزارمانگذاری شده باشد و سپس از گزارمان علامتگذاریشده بهجایComposableTargetمستقیماً استفاده شود. یک گزارمان ترکیبی علامتگذاریشده باComposableTargetMarkerمعادلComposbleTargetبا نام کاملاً واجدشرایط کلاس مشخصه بهعنوان پارامتر اعمالکننده است. برای نمونهای از استفاده ازComposableTargetMarker، بهanroidx.compose.ui.UiComposableمراجعه کنید. (I38f11)
نسخه 1.2.0-alpha03
۹ فوریه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
movableContentOfاضافه شد که لامبدای ترکیبشدنی را به لامبدایی تبدیل میکند که وضعیت آن و گرههای مربوطه را به هر مکان جدیدی که فراخوانی میشود منتقل میکند. وقتی تماس قبلی از ترکیب خارج میشود، وضعیت بهطور موقت حفظ میشود و اگر تماس جدیدی با لامبدا وارد ترکیب شود، وضعیت و گرههای مرتبط به مکان تماس جدید منتقل میشوند. اگر تماس جدیدی اضافه نشود، وضعیت برای همیشه برداشته میشود و ناظران مطلع میشوند.اگر یک لامبدای
movableContentOfچندین بار در یک ترکیب فراخوانی شود، وضعیت و گرههای جدیدی برای هر فراخوانی ایجاد میشود و با خروج فراخوانیها از ترکیب و ورود فراخوانیهای جدید، وضعیت از اولین فراخوانیهای خروجی به فراخوانیهای ورودی به ترتیب فراخوانی آنها منتقل میشود. همه وضعیتهایی که تماسهای جدید ادعای مالکیت نکردهاند برای همیشه برداشته میشود. (Ib4850)میانای برنامهسازی کاربردی ردیابی به ترکیب اضافه شد تا ابزارها بتوانند ردیابی دقیقتری از عملکردهای ترکیبشدنی ارائه دهند. اکنون گردآورنده فراخوانیهایی را برای میانای برنامهسازی کاربردی ردیابی تولید میکند که شامل اطلاعات منبع است. (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
۲۶ ژانویه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این تعهدات است.
نسخه 1.2.0-alpha01
۱۲ ژانویه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- فیلد
identityبهCompositionDataبرای تولید شناسههای ناوردا در «بازرس چیدمان» اضافه شد. (Ic116e)
بهروزرسانیهای وابستگی
- اکنون به Kotlin
1.6.10بستگی دارد.
نسخه ۱.۱
نسخه ۱.۱.۱
۲۳ فوریه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ حاوی این تعهدات است.
رفع اشکالها
- رفع اشکال
NullPointerExceptionدرandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059، b/206677462) - رفع خرابی ناشی از محتوای بریدهدان هنگام خواندن از بریدهدان در Android. (I06020, b/197769306)
- رفع مشکل راستبهچپ در
LazyVerticalGrid(aosp/1931080، b/207510535)
نسخه ۱.۱.۰
۹ فوریه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ حاوی این تعهدات است.
تغییرات مهم از نسخه ۱.۰.۰
- پشتیبانی پایدار از جلوه پیمایش اضافی در Android 12
- بهبودهایی در اندازه هدف لمسی
- توجه داشته باشید که درخصوص «نوشتن ۱.۰»، عناصر Material فضای چیدمان خود را گسترش خواهند داد تا با دستورالعملهای دسترسپذیری Material برای اندازه هدف لمسی مطابقت داشته باشند. برای مثال، هدف لمسی «دکمه» تا حداقل اندازه
48x48dpازهم باز خواهد شد، حتی اگر اندازه «دکمه» را کوچکتر تنظیم کنید. این کار باعث میشود Compose Material با رفتار یکسان «عناصر طراحی سهبعدی» هماهنگ شود و درصورت ترکیب کردن «نماها» و Compose، رفتار یکسانی ارائه دهد. این تغییر همچنین تضمین میکند که وقتی میانای کاربر خود را بااستفاده از عناصر Compose Material ایجاد میکنید، حداقل الزامات دسترسیپذیری هدف لمسی برآورده شود. - پشتیبانی پایدار برای ریل پیمایش
- تعدادی از میاناهای برنامهسازی کاربردی آزمایشی قبلی را به پایدار ارتقا میدهد
- پشتیبانی از نسخههای جدیدتر Kotlin
نسخه 1.1.0-rc03
۲۶ ژانویه ۲۰۲۲
androidx.compose.runtime:runtime-*:1.1.0-rc03 منتشر شد. نسخه 1.1.0-rc03 حاوی این تعهدات است.
رفع اشکالها
- برای پشتیبانی از «ترکیب مواد»
1.1.0-rc03بهروزرسانی شد
نسخه 1.1.0-rc01
۱۵ دسامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این تعهدات است.
نسخه 1.1.0-beta04
۱ دسامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.
ویژگیهای جدید
- بهروزرسانیشده برای سازگاری با Kotlin
1.6.0
نسخه 1.1.0-beta03
۱۷ نوامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.
نسخه 1.1.0-beta02
۳ نوامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- کد «نمای فوری» به چند فایل تقسیم شده است، اما همه آنها همچنان در کلاس JVM یکسان قرار دارند. (Ic6c98)
نسخه 1.1.0-beta01
۲۷ اکتبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.
نسخه 1.1.0-alpha06
۱۳ اکتبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
InternalCompilerApiاز روشهای «آهنگساز» که باید بین واحدها فراخوانی شوند برداشته شد (I1aa0b) -
Recomposer.stateمنسوخ شده است و باRecomposer.currentStateجایگزین شده است تا نوع آن را به StateFlow تغییر دهد (Ic2ab3، b/197773820)
نسخه 1.1.0-alpha05
۲۹ سپتامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این تعهدات است.
نسخه 1.1.0-alpha04
۱۵ سپتامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha04 منتشر شد. نسخه 1.1.0-alpha04 شامل این تعهدات است.
نسخه 1.1.0-alpha03
۱ سپتامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این تعهدات است.
ویژگیهای جدید
- «گردآورنده Compose» اکنون از نسخههای قدیمیتر «زمان اجرای Compose» (۱.۰) پشتیبانی میکند. پیشاز این تغییر، «گردآورنده Compose» فقط با «زمان اجرای Compose» از همان نسخه یا نسخههای جدیدتر سازگار بود. پساز این تغییر، «گردآورنده Compose» با نسخه قدیمیتر «زمان اجرای Compose» (۱.۰) سازگار است. (aosp/1796968)
- Compose
1.1.0-alpha03بهروزرسانی شد تا به Kotlin1.5.30وابسته باشد. (I74545)
نسخه 1.1.0-alpha02
۱۸ اوت ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این تعهدها است.
نسخه 1.1.0-alpha01
۴ اوت ۲۰۲۱
androidx.compose.runtime:runtime-*:1.1.0-alpha01 منتشر شد. نسخه 1.1.0-alpha01 شامل این تعهدات است.
نسخه 1.0
نسخه ۱.۰.۵
۳ نوامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.5 منتشر شد. نسخه ۱.۰.۵ حاوی این تعهدات است.
رفع اشکالها
- ازکارافتادگی ردیابی نمونههای derivedStateOf برطرف شد. (aosp/1792247)
نسخه ۱.۰.۴
۱۳ اکتبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.4 منتشر شد. نسخه 1.0.4 شامل این تعهدات است.
بهروزرسانیهای وابستگی
- بهروزرسانی شد تا به Kotlin
1.5.31وابسته باشد
نسخه ۱.۰.۳
۲۹ سپتامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.3 منتشر شد. نسخه 1.0.3 شامل این تعهدات است.
بهروزرسانیهای وابستگی
- بهروزرسانی شد تا به Kotlin
1.5.30وابسته باشد
نسخه ۱.۰.۲
۱ سپتامبر ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.2 منتشر شد. نسخه 1.0.2 حاوی این تعهدات است.
برای پشتیبانی از نسخه 1.0.2 «نوشتن» بهروز شد. Compose 1.0.2 همچنان با Kotlin 1.5.21 سازگار است.
نسخه ۱.۰.۱
۴ اوت ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.1 منتشر شد. نسخه 1.0.1 شامل این تعهدات است.
بهروزرسانیهای وابستگی
- بهروزرسانی شد تا به Kotlin
1.5.21وابسته باشد.
نسخه ۱.۰.۰
۲۸ ژوئیه ۲۰۲۱
androidx.compose.runtime:runtime-*: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 را در فایل
build.gradleبه ۲۴ یا بالاتر افزایش دهید. این مشکل در نسخه بعدی Android Studio Bumblebee و AGP7.1برطرف خواهد شد. (b/194289155)
نسخه 1.0.0-rc02
۱۴ ژوئیه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-rc02 منتشر شد. نسخه 1.0.0-rc02 حاوی این تعهدها است.
- شرایط مسابقه ثابت در SnapshotStateObserver که باعث ایجاد NullPointerExceptions پراکنده میشد اصلاح شد. (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
۱ ژوئیه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-rc01 منتشر شد. نسخه 1.0.0-rc01 حاوی این تعهدات است.
نسخه 1.0.0-beta09
۱۶ ژوئن ۲۰۲۱
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یا مسیر معادل آن مشخص شده است. فایل در هر خط یک قانون را مشخص میکند، که در این مورد قانون الگویی برای مطابقت با روشها یا کلاسها در کتابخانه است. نحو این قوانین مجموعهای از قالب نمایهخوانا برای انسان ART است که هنگام استفاده از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درLayoutNodeامضایisPlaced()Zرا دارد.این الگوها میتوانند دارای نویسههای عام (
**،*، و?) باشند تا یک قانون واحد چندین روش یا کلاس را دربر بگیرد.
قوانین چه کاری انجام میدهند؟
روشی که پرچم
Hرا دارد نشان میدهد که این روش یک روش «داغ» است و باید ازقبل کامپایل شود.روشی که پرچم
Sرا دارد نشان میدهد که این روش در زمان راهاندازی فراخوانده میشود و باید ازقبل کامپایل شود تا از هزینه کامپایل و تفسیر روش در زمان راهاندازی جلوگیری شود.روشی که پرچم
Pرا دارد نشان میدهد که این روشی است که پساز راهاندازی فراخوانده میشود.کلاسی که در این فایل وجود دارد نشان میدهد که درطول راهاندازی استفاده میشود و باید در پشته ازپیش تخصیص داده شود تا از هزینه بار کردن کلاس جلوگیری شود.
این چگونه کار میکند؟
- کتابخانهها میتوانند این قوانین را تعریف کنند که در آرتیفکتهای AAR بستهبندی میشوند. وقتی برنامهای ساخته میشود که شامل این آرتیفکتها است، این قوانین با هم ادغام میشوند و از قوانین ادغامشده برای ساختن نمایه باینری فشرده ART که مختص برنامه است استفاده میشود. سپس ART میتواند هنگام نصب برنامه در دستگاهها از این نمایه استفاده کند تا زیرمجموعه خاصی از برنامه را ازپیش کامپایل کند و عملکرد برنامه، بهویژه اولین اجرا، را بهبود دهد. توجه داشته باشید که این کار هیچ تأثیری بر برنامههای اشکالزداییشدنی نخواهد داشت.
نسخه 1.0.0-beta08
۲ ژوئن ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta08 منتشر شد. نسخه 1.0.0-beta08 حاوی این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
State<T>اکنونState<out T>است (I69049) ControlledCompositionتغییر میانای برنامهسازی کاربردی برای فعال کردن بازسازی تغییرات در مجوز تکی بازسازی. (Iaafd1، b/184173932)
نسخه 1.0.0-beta07
۱۸ مه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta07 منتشر شد. نسخه 1.0.0-beta07 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
- «میاناهای برنامهسازی کاربردی» جدیدی برای کامپایلر Compose اضافه شد که به اطلاعات منبع تولیدشده توسط کامپایلر اجازه میدهد درطول کوچکسازی منبع برداشته شود. (Ia34e6)
ReusableContentرا معرفی میکند که تلاش میکند بهجای جایگزین کردن گرههای محتوای خود، وقتی کلید تغییر میکند، از آنها مجدداً استفاده کند. وقتی کلید تغییر میکند، مقادیر قبلی در جدول جایگاه برای محتوا نادیده گرفته میشود، بهجز گرههایی که تولید شدهاند و مقادیری که برای بهروزرسانی گرهها استفاده شدهاند.
ReusableComposeNodeرا معرفی میکند که بهجای جایگزین کردن گره منتشرشده، آن را دوباره استفاده میکند، همانطور که برایComposeNodeانجام میشود. (I1dd86)
@ComposeCompilerApiدیگر@RequiresOptInنیست (Iab690)
رفع اشکالها
- LazyColumn/Row اکنون حداکثر ۲ مورد قبلاً نمایان را حتی وقتی که قبلاً پیمایش شدهاند فعال (دور ریخته نشده) نگه میدارد. این کار به عنصر امکان میدهد وقتی نیاز به ساختن عنصر جدیدی داریم از ترکیبهای فرعی فعال دوباره استفاده کند که باعث بهبود عملکرد پیمایش میشود. (Ie5555)
نسخه 1.0.0-beta06
۵ مه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta06 منتشر شد. نسخه 1.0.0-beta06 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
@ComposeCompilerApiدیگر@RequiresOptInنیست (Iab690)
نسخه 1.0.0-beta05
۲۱ آوریل ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta05 منتشر شد. نسخه 1.0.0-beta05 حاوی این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
@InternalComposeApiبرای خواندن و نوشتن تصویر لحظهای ضبطشده برداشته شد (Id134d)
رفع اشکالها
- فایلهای AndroidManifest از ui-test-manifest و ui-tooling-data اکنون با Android 12 سازگار است (I6f9de، b/184718994)
نسخه 1.0.0-beta04
۷ آوریل ۲۰۲۱
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
۲۴ مارس ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta03 منتشر شد. نسخه 1.0.0-beta03 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
DefaultMonotonicFrameClockمنسوخ شده است. فراخوانیwithFrameNanosیاRecomposer.runRecomposeAndApplyChangesبدونMonotonicFrameClockاکنونIllegalStateExceptionرا ایجاد میکند. (I4eb0d)
نسخه 1.0.0-beta02
۱۰ مارس ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta02 منتشر شد. نسخه 1.0.0-beta02 شامل این تعهدات است.
رفع اشکالها
- اعمال محدودیتها بر استفاده عمومی از میاناهای برنامهسازی کاربردی آزمایشی (I6aa29، b/174531520)
- رفع مشکل
rememberSaveable { mutableStateOf(0) }خراب هنگام استفاده در مقصد پیمایش-نوشتن. (I1312b، b/180042685، b/180701630)
نسخه 1.0.0-beta01
۲۴ فوریه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-beta01 منتشر شد. نسخه 1.0.0-beta01 شامل این تعهدات است.
این اولین نسخهٔ پخش Compose 1.0.0 Beta است.
تغییرات میانای برنامهسازی کاربردی
Recomposer.runRecomposeConcurrentlyAndApplyChangesمیانای برنامهسازی کاربردی آزمایشی برای بازسازی قطعات نامعتبر خارج از حلقه اصلی قاب اضافه شد. (I342d0)- اکنون هر عنصر ترکیبی که با @ReadOnlyComposable علامتگذاری شده است در زمان کامپایل اعتبارسنجی میشود تا مطمئن شویم فقط با دیگر @ReadOnlyComposables تماس میگیرد (I58961)
اکنون
defaultFactoryبرایcompositionLocalOfوstaticCompositionLocalOfبهجای اختیاری الزامی است.این تغییر خطای نوع احتمالی را برای انواع غیرقابلتهی که کارخانه پیشفرضی برای آنها ارائه نشده است برطرف میکند. قبلاً این کار برای نوع غیرقابلتهی مرجع تهی ارائه میکرد.
برای انواع تهیشدنی،
{ null }را بهعنوان کارخانه پیشفرض ارائه دهید.توصیه نمیکنیم از متغیرهای محلی با انواع غیرتهی استفاده کنید، مگر اینکه پیشفرض معقولی ارائه شود. اگر پیشفرض منطقی وجود نداشته باشد، تابع
defaultFactoryباید استثنا ایجاد کند. بااینحال، پرتاب استثنا به این معنی است که مصرفکنندگان محلی وابستگی ضمنی به ارائه آن دارند که توسط سیستم نوع اجباری نیست. (Ifbd2a)نمادهای منسوخشده از زمان اجرای نوشتن برداشته شد (I3252c)
emptyContent()منسوخ برداشته شد. درعوض از{}استفاده کنید. (Idb33f، b/179432510)نام «ارائهدهندگان» به CompositionLocalProvider تغییر کرده است
- سازنده «ترکیب» دیگر پارامتر کلید را نمیپذیرد و منسوخ شده است.
- currentCompositeKeyHash بهجای تابع سطح بالای ترکیبشدنی به دارایی سطح بالای ترکیبشدنی تبدیل شده است.
- CompositionData و CompositionGroup به فضای نام androidx.compose.runtime.tooling منتقل شدهاند
- ComposableLambda بهجای کلاس عینی به یک رابط تبدیل شده است و دیگر پارامترهای نوع ندارد.
- ComposableLambdaN بهجای کلاس عینی به یک میانای تبدیل شده است و دیگر پارامترهای نوع ندارد.
- تابع snapshotFlow به جاینام androidx.compose.runtime منتقل شده است
- روش ادغام SnapshotMutationPolicy دیگر آزمایشی نیست
- تابع سطح بالای @TestOnly clearRoots برداشته شده است. دیگر ضروری نیست.
- توابع keySourceInfoOf و resetSourceInfo برداشته شدهاند. دیگر ضروری نیستند.
- Composer.collectKeySourceInformation برداشته شده است. دیگر ضروری نیست.
- روشهای isJoinedKey، joinedKeyLeft، و joinedKeyRight برداشته شدهاند. دیگر ضروری نیستند.
- میاناهای برنامهسازی کاربردی سطح بالای مختلفی به فایلهای دیگری منتقل و در آنها سازماندهی مجدد شدهاند. بهدلیل معناشناسی کلاس فایل Kotlin، این کار سازگاری باینری را ازبین میبرد اما سازگاری منبع را ازبین نمیبرد، بنابراین نباید برای اکثر کاربران مشکلی ایجاد کند.
- (I99b7d، b/177245490)
SnapshotStateObserver دیگر «آزمایشی» نیست (Id2e6a)
برخیاز میاناهای برنامهسازی کاربردی که قبلاً منسوخ شده بودند حذف شدند (Ice5da، b/178633932)
تغییرات زیر در «میانای برنامهسازی کاربردی Material» ایجاد شد:
- پارامتر contentPadding به Top/BottomAppBar اضافه شد تا امکان سفارشیسازی حاشیه پیشفرض فراهم شود.
- پارامترها در BackdropScaffold دوباره مرتب شدند تا از دستورالعملهای میانای برنامهسازی کاربردی برای پارامترهای الزامی که قبلاز پارامترهای اختیاری قرار میگیرند پیروی شود.
- پارامتر
iconدر BottomNavigationItem به بعدازselectedوonClickمنتقل شد. - نام پارامتر
alwaysShowLabelsدر BottomNavigationItem بهalwaysShowLabelتغییر کرد. - نام
bodyContentپارامتر در چند عنصر بهcontentتغییر کرد. - ترتیب پارامترها در
ButtonDefaults.buttonColors()تغییر کرد. لطفاً توجه داشته باشید که چون نوع پارامترها تغییر نکرده است، این تغییر باعث بروز خطا در کد شما نخواهد شد. لطفاً مطمئن شوید که از پارامترهای نامدار استفاده میکنید یا ترتیب را بهصورت دستی بهروزرسانی میکنید، درغیراینصورت کد شما مثل قبل کار نخواهد کرد. -
secondaryVariantپارامتر بهdarkColors()اضافه شد. این رنگ معمولاً باsecondaryدر زمینه تیره یکسان است، اما برای یکنواختی و سفارشیسازی بیشتر اضافه شده است. - ElevationDefaults و animateElevation() را از سطح API عمومی برداشتیم زیرا معمولاً استفاده نمیشدند / مفید نبودند.
- نام
onValueChangeEndدرSliderبهonValueChangeFinishedتغییر کرد و قابلتهی شد. - نام پارامتر
textدرSnackbarبهcontentتغییر کرد تا یکپارچگی حفظ شود. - پارامتر
contentPaddingبهDropdownMenuItemاضافه شد تا امکان سفارشیسازی حاشیه پیشفرض فراهم شود وcontentبه افزونهای درRowScopeتبدیل شد. - نام
ModalDrawerLayoutبهModalDrawerتغییر کرد. - نام
BottomDrawerLayoutبهBottomDrawerتغییر کرد. - (I1cc66)
نسخه 1.0.0-alpha12
۱۰ فوریه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-alpha12 منتشر شد. نسخه 1.0.0-alpha12 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- پشتیبانی از ViewGroups از UiApplier برداشته شد. ترکیبهای Deprecated emitView برداشته شد. (Ifb214)
- CompositionReference به CompositionContext تغییر نام داد (I53fcb)
- ComponentActivity.setContent به androidx.activity.compose.setContent در androidx.activity:activity-compose module منتقل شده است. (Icf416)
- «میانای برنامهسازی کاربردی Snapshot» بهروزرسانی شد تا با دستورالعمل میانای برنامهسازی کاربردی سازگارتر باشد و همچنین کلاسهای پیادهسازی داخلی از میانای برنامهسازی کاربردی عمومی پنهان شود. (Id9e32)
- نام Ambients تغییر کرد تا با تغییر نام Ambient -> CompositionLocal مطابقت داشته باشد. قبلاً نام «محیطها» AmbientFoo بود، اکنون نام «ترکیبهای محلی» LocalFoo است. (I2d55d)
- نام Ambient به CompositionLocal تغییر کرد و نام ambientOf / staticAmbientOf به compositionLocalOf / staticCompositionLocalOf تغییر کرد. این تغییر کمک میکند هدف CompositionLocal واضحتر شود: سازوکاری برای ارائه / بازیابی مقادیر محلی برای یک ترکیب. نمونههای CompositionLocal باید با
Localپیشوندگذاری شوند، برای مثال val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - takeMutableSnapshot و takeSnapshot به روشهای همراه Snapshot منتقل شدهاند. (I91f19)
@ComposableContractبهنفع سه گزارمان دقیقتر منسوخ شده است.
@ComposableContract(restartable = false)به@NonRestartableComposableتبدیل شد @ComposableContract(readonly = true)به@ReadOnlyComposableتبدیل شد @ComposableContract(preventCapture = true)به@DisallowComposableCallsتبدیل شد @ComposableContract(tracked = true)برداشته شد. (I60a9d)ابزارهای emptyContent() و (@Composable () -> Unit).orEmpty() منسوخ شدهاند زیرا دیگر هیچ تأثیر یا ارزش مثبتی در عملکرد ندارند (I0484d)
snapshotFlowوwithMutableSnapshotدیگر آزمایشی نیستند (I6a45f)اکنون میتوان بازترکیبکنندهها را بست. ترکیبکنندههای بسته تا زمانی که روتینهای فرعی ترکیب کامل شوند، ترکیب مجدد را ادامه خواهند داد. Recomposer.shutDown به cancel تغییر نام داد تا با close تفاوت داشته باشد. (Ib6d76)
ساختافزار
compose:runtime-dispatchاکنون منسوخ شده است. اکنون میتوانید MonotonicFrameClock را در compose:runtime و AndroidUiDispatcher را در compose:ui پیدا کنید. (Ib5c36)«میانای برنامهسازی کاربردی» که افزایه مترجم Compose هدف قرار میدهد برای استفاده از یک میانای کاربر بهجای کلاس عینی بازسازی شده است. این واسط دیگر از پارامتر نوع استفاده نمیکند.
این یک تغییر داخلی است که نباید بر سازگاری کد منبع تأثیر بگذارد، اما یک تغییر باینری است. (I3b922، b/169406779)
SnapshotMutableState معرفی شد (Icfd03)
نام DisposableEffectDisposable به DisposaleEffectResult تغییر کرد (Ica7c6)
Recomposer.current() برداشته شد. اکنون [Abstract]ComposeView بهطور پیشفرض به Recomposers با حوزه پنجره که بهصورت تنبل ایجاد شدهاند و توسط ViewTreeLifecycleOwner برای پنجره هدایت میشوند، تبدیل میشود. وقتی «چرخه حیات» میزبان متوقف میشود، بازسازی و تیکهای پویانمایی مبتنی بر withFrameNanos موقتاً متوقف میشود. (I38e11)
Recomposer.runningRecomposers اکنون StateFlow سراسری از RecomposerInfo فقط خواندنی برای مشاهده وضعیت ترکیب درحال انجام در فرایند ارائه میدهد. این API را به Recomposer.current() که اکنون نامناسب است ترجیح دهید. (If8ebe)
نام DisposableEffectDisposable به DisposaleEffectResult تغییر کرد (I3ea68)
نسخه 1.0.0-alpha11
۲۸ ژانویه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-alpha11 منتشر شد. نسخه 1.0.0-alpha11 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- onCommit، onDispose، و onActive بهنفع SideEffect و DisposableEffect APIs منسوخ شدهاند (If760e)
- emit() API و همه سربارها منسوخ شدهاند و به ComposeNode تغییر نام دادهاند. این میاناهای برنامهسازی کاربردی یکسان هستند، فقط نام آنها متفاوت است تا از قراردادهای نامگذاری Compose پیروی کنند (I4137b)
- invalidate و compositionReference() اکنون بهترتیب بهنفع currentRecomposeScope و rememberCompositionReference منسوخ شدهاند. (I583a8)
RememberObserver جایگزین CompositionLifecycleObserver شده است و CompositionLifecycleObserver اکنون منسوخ شده است.
RememberObserverجایگزینCompositionLifecycleObserverبا معناشناسی اصلاحشده و روشهای تغییرنامدادهشده است. تغییر به API جدید میتواند بهصورت مکانیکی برای اشیایی که فقط یکبار بهیاد آورده میشوند انجام شود، که این روش همچنان توصیه میشود. بااینحال، اگر یک مرجع بیش از یک بار در یک قطعه موسیقی بهیاد آورده شود،onRememberedبرای هر مرجع فراخوانده میشود، درحالیکهonEnterفقط یک بار فراخوانده میشود.onEnterاگر شیء در زیرترکیبها استفاده شود، چندین بار فراخوانده میشود، برای مثالWithConstraintsوScaffoldکه باعث میشود فراخوانonEnterواحد غیرقابلاعتماد شود و برایRememberObserverبرداشته شد.
RememberObserveronAbandonedرا اضافه میکند که اگر نمونهRememberObserverاز تابع برگشتی ارسالشده بهrememberبرگردانده شود فراخوانی میشود اما در وضعیت ترکیب بهیاد آورده نشده است و بنابراینonRememberedهرگز فراخوانی نخواهد شد. این اتفاق میتواند زمانی رخ دهد که استثنایی آهنگسازی را قبلاز تکمیل شدن متوقف کند یا آهنگسازی کنار گذاشته شود زیرا وضعیتی که آهنگسازی برای آن تولید میشد دیگر جاری نیست یا به هر دلیلی دیگر موردنیاز نیست. اگر نمونهRememberObserverپساز توصیه مرجع تکی در بالا منبع خارجی را ردیابی میکند، همonForgottenو همonAbandonedنشان میدهند که دیگر به منبع نیاز نیست. اگر هدف درحال پیگیری کار شروعشده یا منابع تخصیصیافته درonRememberedاست،onAbandonedمیتواند نادیده گرفته شود زیرا اگرonRememberedفراخوانده شود، فراخوانده نخواهد شد. (I02c36)عملکردهای
collectAsState()را بهعنوان درونخطی علامت نزنید (Ia73e4)
رفع اشکالها
- WithConstraints بهعنوان BoxWithConstraints بازطراحی شد و به foundation.layout منتقل شد. (I9420b، b/173387208)
- استفاده از TestCoroutineDispatcher در آزمایش (I532b6)
نسخه 1.0.0-alpha10
۱۳ ژانویه ۲۰۲۱
androidx.compose.runtime:runtime-*:1.0.0-alpha10 منتشر شد. نسخه 1.0.0-alpha10 حاوی این تعهدات است.
تغییر ناگهانی
بازسازی API کامپایلر داخلی امکان دستهبندی تغییرات در گرههای تولیدشده درنتیجه ترکیب را در مرحله «اعمال تغییرات» ترکیب، پساز تکمیل همه
@Composableتابع، فراهم میکند.این یک تغییر رفتاری است که ممکن است بر کد برنامه تأثیر بگذارد زیرا گرهها دیگر از میاناهای برنامهسازی کاربردی داخلی و آزمایشی تا زمانی که تغییرات اعمال نشدهاند دردسترس نیستند. معمولاً میتوان با قرار دادن کد دارای چنین وابستگیهایی در عنصر
SideEffectترکیبشدنی، اجرای کد را تا بعداز ایجاد و مقداردهی اولیه گرهها بهتعویق انداخت. (I018da)
تغییرات میانای برنامهسازی کاربردی
- روشی برای پیگیری اینکه آیا بازآهنگساز تغییرات را اعمال کرده است یا نه اضافه شد. (I1b3e2)
میاناهای برنامهسازی کاربردی [Abstract]ComposeView را گسترش دهید تا امکان بازیافت نماهای مبتنی بر Compose فراهم شود، ترکیب آنها را دور بیندازید تا بعداً دوباره ایجاد شوند. میاناهایی برای نصب و کاوش «ترکیبکنندههای» با محدوده پنجره و «مرجعهای ترکیب» برای ایجاد ترکیبهای فرزند اضافه کنید.
ViewCompositionStrategy را برای پیکربندی استراتژی دور ریختن ترکیب [Abstract]ComposeViews اضافه کنید؛ رفتار پیشفرض دور ریختن در جدا کردن پنجره است. (I860ab)
رفع اشکالها
- اکنون «بازساز» یک «جریان» از وضعیت کنونی خود را آشکار میکند و امکان نظارت بر فعالیت آن و فعالیت جلوههای مرتبط را فراهم میکند. (Ifb2b9)
- اکنون میتوان ازطریق keyEvent.nativeKeyEvent به keyEvent بومی دسترسی داشت (I87c57، b/173086397)
نسخه 1.0.0-alpha09
۱۶ دسامبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha09 منتشر شد. نسخه 1.0.0-alpha09 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
SlotTable، SlotReader، و SlotWriter را از میانای برنامهسازی کاربردی عمومی برداشتیم. قبلاً این موارد بهعنوان InternalComposeAPI علامتگذاری میشدند. اکنون این موارد داخلی واحد نوشتن هستند.
CompositionData و CompositionGroup بهعنوان جایگزینی برای واسط برنامهسازی کاربردی ui-tooling اضافه شدند تا از آنها برای استخراج اطلاعات ترکیب استفاده شود. اینها عمومی هستند اما برای استفاده خارج از میانای برنامهسازی کاربردی ui-tooling درنظر گرفته نشدهاند زیرا اطلاعات خام را که میانای برنامهسازی کاربردی ui-tooling تفسیر میکند ارائه میدهند (I31a9c)
کلاس «اعمالکننده» دیگر (Id85b0) درنظر گرفته نمیشود
واسط
Applierتغییر کرده است تا ساختن درختها از پایین به بالا بهجای بالا به پایین سادهتر شود.نام روش
insert()بهinsertTopDown()تغییر کرده است.روش جدیدی بهنام
insertBottomUp()اضافه شد.کاربردیکننده یا گرهها را در درختی که ویرایش میکند بااستفاده از
insertTopDown()یاinsertBottomUp()بسته به اینکه کدام بهتر عمل میکند درج میکند.برخیاز درختها، مثل
LayoutNodeوView، برای ساختن از پایین به بالا بسیار کارآمدتر از ساختن از بالا به پایین هستند. قبلاز این تغییر، برای پیادهسازی از پایین به بالا، پشتهای از درجها لازم بود که باید در هر برنامهای که به ساختار از پایین به بالا برای عملکرد نیاز داشت کپی میشد. با این تغییر،ApplierinsertBottomUp()را ملغی میکند تا درخت را از پایین به بالا بسازد وinsertTopDown()درخت را از بالا به پایین میسازد. (Icbdc2)«ترکیب» از دریافتکنندههای دارایی که میتوانند فراخوانیهای ترکیبی انجام دهند پشتیبانی میکند. پشتیبانی از این قابلیت حذف نخواهد شد، اما دستورگان برای اعلام اینکه یک دریافتکننده دارایی @Composable است تغییر میکند.
نحو منسوخشده برای انجام این کار ازطریق حاشیهنویسی خود دارایی بود:
@Composable val someProperty: Int get() = ...نحو صحیح برای انجام این کار، حاشیهنویسی کردن دریافتکننده دارایی است:
val someProperty: Int @Composable get() = ...هر دو نحو برای مدتی کار خواهند کرد، اما نحو منسوخشده قبلی در نهایت به خطای کامپایل تبدیل خواهد شد. (Id9197)
رفع اشکالها
- AndroidOwner داخلی شد (Ibcad0، b/170296980)
- subcomposeInto(LayoutNode) داخلی شد (Id724a)
نسخه 1.0.0-alpha08
۲ دسامبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha08 منتشر شد. نسخه 1.0.0-alpha08 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- بررسی lint برای نامگذاری و موقعیت پارامتر لامبدای ترکیبشدنی اضافه شد تا با رهنمودهای Compose سازگاری داشته باشد.
همچنین برخیاز APIها را بااستفاده از
childrenبهعنوان نام لامبدای انتهاییشان بهcontentانتقال دادیم، طبق بررسی و راهنمایی lint. (Iec48e) - «بازساز» دیگر EmbeddingContext را نمیپذیرد؛ وابستگیهای زمانبندی موردنیاز از effectCoroutineContext بهدست میآید. FrameManager منسوخ شده است؛ یکپارچهسازیهای پلاتفرم باید مدیریت عکس آنی سراسری خودشان را مقداردهی اولیه کنند. (I02369)
- نام تابع RestorableStateHolder.withRestorableState به RestorableStateProvider تغییر کرد (I66640)
رفع اشکالها
- «محیطهای» منسوخشدهای که نام آنها با
Ambientبهعنوان پسوند بود، با داراییهای جدیدی که پیشوند آنها «محیط» بود جایگزین شدند و از سایر «محیطها» و دستورالعملهای «میانای برنامهسازی کاربردی Compose» پیروی کردند. (I33440) - برداشتن واحد ui-test قدیمی و کدهای جایخالی آن (I3a7cb)
نسخه 1.0.0-alpha07
۱۱ نوامبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha07 منتشر شد. نسخه 1.0.0-alpha07 حاوی این تعهدات است.
ویژگیهای جدید
تغییرات میانای برنامهسازی کاربردی
- گزارمان
@UnionTypeمنسوخ شده است (I57cde) - provideDefault بهعنوان جایگزینی برای provide برای ارائه محیطها اضافه شده است و میتوان از آن برای مشخص کردن مقادیر محیطی استفاده کرد که فقط زمانی تنظیم میشوند که مقدار محیطی ازقبل ارائه نشده باشد. (Id6635، b/171024925)
- LaunchedTask برای هماهنگی با میاناهای برنامهسازی کاربردی SideEffect و DisposableEffect به LaunchedEffect تغییر نام داد. LaunchedEffect بدون پارامترهای موضوع مجاز نیست تا روالهای مطلوب تشویق شود. (Ifd3d4)
- اکنون «اعمالکننده» دارای برگشتهای onBeginChanges/onEndChanges است که وقتی «آهنگساز» شروع به اعمال تغییرات در درخت میکند/اعمال تغییرات در درخت را تمام میکند فراخوانی میشوند. درصورت نیاز، از اینها میتوان برای مدیریت منابع دستهای استفاده کرد. (Icf476)
- اکنون Recomposer در زمان ساخت به CoroutineContext نیاز دارد (Ic4610)
- تغییرات در پیادهسازی داخلی SlotTable که نباید بر میانای برنامهسازی کاربردی عمومی تأثیر بگذارد. (If9828)
- تبدیلکنندههای rxjava2 منسوخشده که مقدار اولیه را دریافت نمیکردند برداشته شدند (Idb72f)
رفع اشکالها
- foundation.Text منسوخ شده است و با material.Text جایگزین شده است. برای میانای برنامهسازی کاربردی نوشتاری ساده و بیطرف که مقادیر را از زمینه مصرف نمیکند، androidx.compose.foundation.BasicText را ببینید. (If64cb)
- BaseTextField منسوخ شده است. درعوض از BasicTextField استفاده کنید. (I896eb)
- چندین نماد مربوط به چیدمان از androidx.compose.ui به androidx.compose.layout.ui منتقل شدند. (I0fa98، b/170475424)
همیاری خارجی
-
runtime-rxjava3واحد برای نوشتن اضافه شد. مشابهruntime-rxjava2(I02cbf)
نسخه 1.0.0-alpha06
۲۸ اکتبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha06 منتشر شد. نسخه 1.0.0-alpha06 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- اکنون «بازساز» یک CompositionReference و یک والد ترکیب معتبر است. اکنون «بازساز صریح» در مکانهای کمتری لازم است. (I4036f)
- API همتای DisposableEffect به SideEffect اضافه شد و نقش onCommit-with-params را با onDispose الزامی پر کرد.
- API rememberUpdatedState برای انتشار دادهها از ترکیب مجدد به فرایندهای جاری یا طولانیمدت مثل DisposableEffects یا LaunchedTasks اضافه شد.
- (Id50b9)
- MutableVector اکنون RandomAccess را پیادهسازی میکند (I85d73، b/170461551)
- «ترکیبشدنی SideEffect» برای اعمال جلوههای جانبی ترکیب به اشیای مدیریتشده توسط ترکیب اضافه شد. «اثر جانبی» برای جایگزینی ترکیبشدنی onCommit درنظر گرفته شده است. (Ia77c2)
- api آزمایشی جدید RestorableStateHolder. این تابع امکان میدهد وضعیت تعریفشده با [savedInstanceState] و [rememberSavedInstanceState] را برای زیردرخت قبلاز کنار گذاشتن آن ذخیره کنید تا بتوانید دفعه بعد آن را با وضعیت بازیابیشده دوباره بسازید. (I66884, b/166586419)
رفع اشکالها
- فعال کردن گذارها در ComposeTestRule؛ برداشتن گزینه فعال کردن مکاننمای چشمکزن از ComposeTestRule. (If0de3)
نسخه 1.0.0-alpha05
۱۴ اکتبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha05 منتشر شد. نسخه 1.0.0-alpha05 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- «تعدیلکننده آزمایشی». تعدیلکننده ورودی تعلیق ورودی «ورودی اشارهگر» (Ia77d2)
- عملکرد پیمایش LazyColumn/Row با انجام کار کمتر در ترکیب فرعی در هر پیمایش بهبود مییابد. روش جدید hasInvalidations() برای کلاس Composition اضافه شد. روش hasPendingChanges() از Recomposer به hasInvalidations() تغییر نام داد (Ib2f32، b/168293643، b/167972292، b/165028371)
- افزودن API تولید وضعیت برای راهاندازی روتینهای همزمان از ترکیب
که مقدار
State<T>واحدی را درطول زمان بهروزرسانی میکند (Id4a57) - launchInComposition به LaunchedTask تغییر نام داد تا با رهنمودهای Compose API مطابقت داشته باشد (I99a8e)
- ترتیب فراخوانیهای place() در «چیدمانهای» سفارشی اکنون ترتیب ترسیم فرزندان را تعریف میکند (Ibc9f6)
نسخه 1.0.0-alpha04
۱ اکتبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha04 منتشر شد. نسخه 1.0.0-alpha04 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- OwnerScope اضافه شد تا امکان جمعآوری حوزههای مشاهده چیدمان و طراحی پساز معتبر نبودن آنها فراهم شود. (Ic4cf8)
- API derivedStateOf برای ایجاد کردن اشیای State براساس محاسباتی که ممکن است اشیای State دیگر را بخواند (و از آنها استخراج کند) اضافه شد (If758b)
- TestOnly API برای SnapshotStateObserver اضافه شد (I6e2a9)
رفع اشکالها
- foundation.Box منسوخ شده است. لطفاً درعوض از foundation.layout.Box استفاده کنید. (Ie5950، b/167680279)
نسخه 1.0.0-alpha03
۱۶ سپتامبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha03 منتشر شد. نسخه 1.0.0-alpha03 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
CompositionCoroutineScopeدیگرMonotonicFrameClockرا پیادهسازی نمیکند. فراخوانندگانwithFrameNanosباید تابع سطح بالا را بهطور صریح وارد کنند. (Icb642، b/166778123)
رفع اشکالها
- کارکردهای آزمایش جهانی مثل
onNodeیاwaitForIdleاکنون منسوخ شدهاند، لطفاً به همتایان جدید آنها که در ComposeTestRule تعریف شدهاند (I7f45a) انتقال دهید -
launchInCompositionدیگر روتینهای همزمان را بدون توزیع راهاندازی نمیکند (Ief6af، b/166486000)
نسخه 1.0.0-alpha02
۲ سپتامبر ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha02 منتشر شد. نسخه 1.0.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- میاناهای برنامهسازی کاربردی
snapshotFlowوwithMutableSnapshotرا برای مصرف و تولید تغییرات داده «نمای فوری» اضافه کنید. (I3e722) قرارداد فراخوانی برای توابع ترکیبی تغییر کرده است. این تغییر ناگهانی دودویی است. همه کتابخانهها باید برای کار با این نسخه افزایه کامپایلر Compose دوباره کامپایل شوند.
این تغییر باعث ایجاد تغییرات اساسی در سطح منبع نمیشود زیرا تنها میاناهای برنامهسازی کاربردی که تغییر کردهاند میاناهای برنامهسازی کاربردی مترجم هستند که دارای موافقت صریح هستند. (I7afd2، b/158123185)
روشهای زمانبندی را از EmbeddingContext (I7b9be) برداشت
onPreCommit منسوخ شده است؛ onCommit اکنون رفتار onPreCommit را دارد.
اکنون onCommit و onActive در همان قاب طراح رقص اجرا میشوند که تغییرات ترکیب در آن ثبت شده است، نه در ابتدای قاب طراح رقص بعدی. (I70403)
نسخه 1.0.0-alpha01
۲۶ اوت ۲۰۲۰
androidx.compose.runtime:runtime-*:1.0.0-alpha01 منتشر شد. نسخه 1.0.0-alpha01 شامل این تعهدات است.
نسخه 0.1.0-dev
نسخه 0.1.0-dev17
۱۹ اوت ۲۰۲۰
androidx.compose.runtime:runtime-*:0.1.0-dev17 منتشر شد. نسخه 0.1.0-dev17 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- اکنون برونفرستهای سفارشی میتوانند اعلام کنند که یک یا چند تنظیمکننده آن میتوانند نادیده گرفته شوند و بهطور مستقل از برونفرست بازسازی شوند. (Ibbd13)
تماسهای منسوخ FrameManager برداشته شد.
میاناهای برنامهسازی کاربردی داخلی نوشتن تغییر کرده است تا مقدار سربار برای ردیابی کردن وضعیت اشیایی مثل
mutableStateof()(I80ba6) کاهش یابد
state { ... }قابل ترکیب اکنون بهنفع فراخوانیهای صریح بهremember { mutableStateOf(...) }برای وضوح منسوخ شده است. این کار سطح کلی میانای برنامهسازی کاربردی و تعداد مفاهیم مدیریت وضعیت را کاهش میدهد و با الگویby mutableStateOf()برای واگذاری دارایی کلاس مطابقت دارد. (Ia5727)Flow.collectAsState اکنون توزیعکننده پیشفرض را از خود ترکیب تعیین میکند، نه اینکه بهطور پیشفرض از Dispatchers.Main استفاده کند. (I9c1d9)
وقتی از چیزی که وضعیت را ذخیره میکند در حلقه for استفاده شود، ازکار افتادن برطرف میشود. اکنون داشتن همان کلید در savedInstanceState() مجاز است، api مربوط به UiSavedStateRegistry اکنون با این الزام جدید تطبیق داده شده است (I4ab76، b/160042650، b/156853976، b/159026663، b/154920561)
رفع اشکالها
-
emitViewمنسوخ شد. درصورت امکان، برای انتشار «نماها» در «نوشتن»، ازAndroidViewاستفاده کنید. توجه داشته باشید که در آینده، نوشتن مستقیم «نماها» و «گروههای نما» پشتیبانی نخواهد شد، مگر اینکه اینها برگهای درخت ترکیب باشند، در این صورت میتوان بااستفاده از AndroidView به این هدف دست یافت. (I29b1e، b/163871221)
نسخه 0.1.0-dev16
۵ اوت ۲۰۲۰
androidx.compose.runtime:runtime-*:0.1.0-dev16 منتشر شد. نسخه 0.1.0-dev16 حاوی این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
خطمشی جهش پیشفرض
mutableStateOf()،ambientOf()، وsavedInstanceStateOf()ازreferentialEqualityPolicy()بهstructuralEqualityPolicy()تغییر کرده است.پیشفرض تصمیمگیری درباره اینکه آیا مقدار جدیدی که به نمونه
mutableStateOf()اختصاص داده شده است تغییر درنظر گرفته شود یا نه، اکنون به استفاده از==بهجای استفاده از===تغییر کرده است.به https://kotlinlang.org/docs/reference/equality.html مراجعه کنید
ambientOf()وsavedInstanceStateOf()ازmutableStateOf()در پیادهسازیهایشان استفاده میکنند، بنابراین تغییر کردند تا باmutableStateOf()سازگار شوند.استفاده از برابری ساختاری بیشتر با انتظارات توسعهدهندگان مطابقت دارد.
برای مثال،
val state = mutableStateOf(1f)بهدنبال آن،
state.value = 1fدیگر بهعنوان تغییری در
stateدرنظر گرفته نمیشود و استفاده ازstateدرطول قطعه موسیقی دیگر نیازی به آهنگسازی مجدد ندارد.این تغییر یک تغییر اساسی است اما در اکثر موارد (مثلاً هنگام استفاده از کلاسهایی که
equals()را ملغی نمیکنند)، این تغییر تأثیر قابلتوجهی بر برنامه نخواهد داشت.کلاسهایی که
equals()را ملغی میکنند، مثل کلاسهایdata، ممکن است افت عملکرد داشته باشند زیرا روشهایequals()آنها اکنون بهطور پیشفرض هنگام واگذاری بهmutableStateOf()فراخوانده میشوند.با افزودن پارامتر خطمشی
policy = referentialEqualityPolicy()به تماسهایmutableStateOf()،ambientOf()، وsavedInstanceStateOf()میتوان رفتار قبلی را بازیابی کرد. (Ic21a7)
RowوColumnاکنون تابع درونخطی هستند و سربار استفاده از آنها را بهطور قابلتوجهی کاهش میدهند. (I75c10)
رفع اشکالها
- setViewContent منسوخ شده است. بهجای آن باید از setContent استفاده شود. (I7e497, b/160335130)
MonotonicFrameAnimationClock اضافه شد که به شما امکان میدهد از MonotonicFrameClock بهعنوان AnimationClockObservable استفاده کنید تا شکاف بین ساعتهای جدید مبتنی بر روالهای مشترک و میاناهای برنامهسازی کاربردی که هنوز از ساعتهای قدیمی مبتنی بر برگشت تماس استفاده میکنند را پر کنید.
معادل MonotonicFrameClock برای ManualAnimationClock اکنون ManualFrameClock است. (I111c7, b/161247083)
Modifier.stateDraggable کاملاً بازطراحی و به Modifier.swipeable تغییر نام داده شد. کلاس جدیدی بهنام SwipeableState معرفی شد و DrawerState و BottomDrawerState برای ارثبری از آن بازسازی شدند. [Modal/Bottom]DrawerLayout دیگر پارامتر onStateChange را نمیپذیرد. (I72332، b/148023068)
Modifier.plus منسوخ شده است، درعوض از Modifier.then استفاده کنید. «سپس» نشان قویتری از ترتیب دارد و همچنین از تایپ کردن
Modifier.padding().background() + anotherModifierجلوگیری میکند، که زنجیره را میشکند و خواندن را سختتر میکند (Iedd58، b/161529964)SubcomposeLayout اضافه شد. این یک عنصر اولیه سطح پایین است که امکان میدهد فرزندان را درحین اندازهگیری ترکیب کنیم، اگر بخواهیم از مقادیر دردسترس فقط در مراحل بعدی اندازهگیری برای ترکیب زیردرخت استفاده کنیم. برای مثال، WithConstraints بااستفاده از SubcomposeLayout پیادهسازی نشده است. (I25cc8)
نام Material FilledTextField به TextField تغییر کرد و نام TextField بنیادی به BaseTextField تغییر کرد تا سادهترین API موردنظر بهراحتی قابلکشف و استفاده باشد (Ia6242، b/155482676)
نام Modifier.drawBackground به Modifier.background تغییر کرده است (I13677)
نسخه 0.1.0-dev15
۲۲ ژوئیه ۲۰۲۰
androidx.compose.runtime:runtime-*:0.1.0-dev15 منتشر شد. نسخه 0.1.0-dev15 حاوی این تعهدات است.
بهروزرسانی وابستگیها
- برای استفاده از نسخه
0.1.0-dev15«نوشتن»، باید وابستگیهایتان را مطابق با تکهکدهای جدیدی که در بالا در اعلام وابستگیها نشان داده شده است بهروز کنید.
تغییرات میانای برنامهسازی کاربردی
گزارمان
@Modelاکنون منسوخ شده است. از state و mutableStateOf بهعنوان جایگزین استفاده کنید. این تصمیم برای منسوخ کردن پساز بحثهای دقیق و طولانی اتخاذ شد.توجیهات
دلیل شامل موارد زیر است ولی به این موارد محدود نمیشود:
- مساحت سطح API و مفاهیمی را که باید آموزش دهیم کاهش میدهد
- با دیگر مجموعههای ابزار قابلمقایسه (Swift UI، React، Flutter) همراستاتر است
- تصمیم برگشتپذیر است. هرزمان بخواهیم میتوانیم
@Modelرا برگردانیم. - موارد استفاده گوشهای و سؤالات دشوار درباره پیکربندی
@Modelرا بهعنوان مواردی که باید مدیریت کنیم برمیدارد -
@Modelکلاس داده، برابر، کد درهمسازی، و غیره - چگونه برخیاز داراییها را «تحتنظر» داشته باشم و برخی دیگر را نداشته باشم؟
- چگونه برابری ساختاری دربرابر برابری ارجاعی را برای استفاده در مشاهده مشخص کنم؟
- «جادو» را در سیستم کاهش میدهد. احتمال اینکه کسی فکر کند سیستم از آنچه هست هوشمندتر است را کاهش میدهد (یعنی اینکه سیستم میداند چگونه فهرست را متمایز کند)
- جزئیات مشاهده را دیداریتر میکند.
- بهبود قابلیت تغییر از متغیر -> دارایی در کلاس
- بهطور بالقوه امکان انجام بهینهسازیهای دستی مختص هر ایالت را فراهم میکند
- با بقیه اکوسیستم همراستاتر میشود و ابهام درباره تغییرناپذیری یا «پذیرش وضعیت تغییرپذیر» را کاهش میدهد
یادداشتهای انتقال
تقریباً همه موارد استفاده موجود از
@Modelبه یکی از دو روش بهسادگی تبدیل میشوند. مثال زیر یک کلاس@Modelبا دو دارایی فقط برای مثال دارد و از آن در یک عنصر ترکیبی استفاده میکند.@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 } ) }جایگزین ۱: از
State<OriginalClass>استفاده کنید و کپی ایجاد کنید.این رویکرد با کلاسهای داده Kotlin آسانتر میشود. اساساً، همه داراییهای قبلاً
varرا به داراییهایvalکلاس داده تبدیل کنید، و سپس بهجایrememberازstateاستفاده کنید، و مقدار وضعیت را بااستفاده از روش تسهیلcopy(...)کلاس داده به نسخههای شبیهسازیشده از نسخه اصلی اختصاص دهید.توجه به این نکته مهم است که این رویکرد فقط زمانی کار میکند که تنها جهشهای آن کلاس در همان دامنهای انجام شده باشد که نمونه
Stateدر آن ایجاد شده است. اگر کلاس بهصورت داخلی و خارج از محدوده استفاده تغییر میکند و شما به مشاهده آن تکیه میکنید، رویکرد بعدی همان رویکردی است که میخواهید استفاده کنید.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) } ) }جایگزین ۲: استفاده از mutableStateOf و نمایندگان دارایی
این رویکرد با نمایندگان دارایی Kotlin و
mutableStateOfAPI که به شما امکان میدهد نمونههای MutableState را خارج از ترکیب ایجاد کنید، آسانتر میشود. اساساً، همه داراییهایvarکلاس اصلی را با داراییهایvarباmutableStateOfبهعنوان نماینده دارایی آنها جایگزین کنید. این مزیت را دارد که استفاده از کلاس اصلاً تغییر نخواهد کرد، فقط پیادهسازی داخلی آن تغییر خواهد کرد. هرچند این رفتار کاملاً مشابه مثال اصلی نیست، زیرا اکنون هر دارایی بهصورت جداگانه مشاهده/مشترک میشود، بنابراین ترکیبهای مجددی که پساز این بازسازی میبینید ممکن است محدودتر باشد (که خوب است).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }(I409e8، b/152050010، b/146362815، b/146342522، b/143413369، b/135715219، b/143263925، b/139653744)
استراتژی تولید کد کامپایلر Compose را تغییر میدهد. پیشاز این تغییر، کامپایلر Compose تماسها را به توابع ترکیبشدنی تبدیل میکرد. با این تغییر، اکنون بدنه تابع ترکیبی را تبدیل میکنیم و سایت تماس را (بیشتر اوقات) بدون تغییر باقی میگذاریم.
این یعنی بیشتر منطقی که با زمان اجرای Compose ارتباط برقرار میکند در ابتدای بدنه تابع اتفاق میافتد، نه در محل فراخوانی.
این تغییر باید برای همه موارد استفاده از نوشتن سازگار با منبع باشد. اکثر کاربران Compose نباید درنتیجه این تغییر کد را بهروز کنند.
برای پشتیبانی از این کار، امضای JVM همه توابع ترکیبپذیر تغییر کرده است. تابع «ترکیبشدنی» که یک پارامتر را میپذیرد به تابعی تبدیل میشود که ۳ پارامتر را میپذیرد، پارامترهای اضافی عبارتاند از «ترکیبکننده»، عدد صحیح «کلید»، عدد صحیح ماسک بیتی که برای انتشار فراداده ازطریق تماسها استفاده میشود.
Compose اکنون آرگومانهای پیشفرض را نیز به تابع ترکیبشدنی تبدیل میکند. این کار بدون معرفی سربار پیشفرض مصنوعی اضافی برای خود تابع انجام میشود، بنابراین این تغییر منجر به تعریف توابع کمتری خواهد شد.
تغییرات رفتاری عمدی شناختهشده ناشی از این:
- برخیاز تماسها در جایی که قبلاً رد نمیشدند رد خواهند شد
- اکنون عبارتهای ترکیبی در عبارتهای آرگومان پیشفرض بهدرستی مشترک میشوند و مدیریت میشوند
این کار شامل برخی بهینهسازیها بود: ۱. نتیجه مقایسههای پارامترها ازطریق گراف تماس به دیگر توابع ترکیبی منتقل میشود. این کار منجر به مقایسههای کمتر در زمان اجرا میشود، اندازه جدول جایگاه را کاهش میدهد، و همچنین باعث میشود توابع ترکیبی که قبلاً رد نمیشدند بیشتر رد شوند ۲. پارامترهایی که در زمان ترجمه «ایستا» تشخیص داده میشوند دیگر در زمان اجرا مقایسه یا ذخیره نمیشوند. این کار تعداد مقایسهها و اندازه جدول جایگاه را کاهش میدهد. ۳. از ساختار جریان کنترل بدنه توابع برای بهحداقل رساندن تعداد گروههای تولیدشده استفاده میشود. این کار اندازه جدول شکاف را کاهش میدهد و درنتیجه زمان اجرا کار کمتری انجام میدهد ۴. پارامترهای گیرنده و اعزام استفادهنشده به توابع در تعیین قابلیت رد کردن تابع لحاظ نمیشوند، مگر اینکه در بدنه تابع استفاده شوند.
بیشتر تغییرات اساسی مربوط به میاناهای برنامهسازی کاربردیای بود که کامپایلر مستقیماً آنها را هدف قرار میدهد و استفاده معمول از Compose تحتتأثیر قرار نخواهد گرفت: ۱. Composer::startExpr برداشته شد ۲. Composer::endExpr برداشته شد ۳. Composer::call منسوخ شده است ۴. سربارهای غیر varargs از
keyبرداشته شده است. ازاینپس از نسخهvarargاستفاده کنید. ۵. گزارمان Pivotal منسوخ شده است. ازkeyبهعنوان جایگزین استفاده کنید. ۶. ScopeUpdateScope::updateScope تغییر کرد تا بهجای Function1، انتظار Function3 داشته باشد restartableFunction و restartableFunctionN بهروز شدند تا پارامترهای زمان گردآوری اضافی را دربر بگیرند (I60756، b/143464846)sortWith و removeRange به MutableVector اضافه شد (Icccf7)
پیادهسازیهای روش پیشفرض برای CompositionLifecycleObserver (I24289) اضافه شد
اکنون «اعمالکننده» برای کنار گذاشتن ترکیبها به روش clear() نیاز دارد (Ibe697)
asMutableList() به MutableVector اضافه شد تا بتواند بدون نیاز به کپی کردن کل فهرست به میانای برنامهسازی کاربردی عمومی منتقل شود. (I298df)
rememberCoroutineScope() برای دریافت CoroutineScope مدیریتشده در ترکیب برای راهاندازی کارها در پاسخ به رویدادها اضافه شد. (I0e264)
MutableVector مجموعه جدیدی است که هیچیک از رابطهای استاندارد Collection را پیادهسازی نمیکند. این مجموعه سرعت را بر سایر الزامات ترجیح میدهد و فقط برای استفاده در پیادهسازیهای داخلی درنظر گرفته شده است. (I8ebd6)
StableMutableListوStableMutableMapبهطور موقت برداشته شد تا از بروز مشکل در نسخه موردنیاز Kotlin compose جلوگیری شود. این میانها پساز بهروزرسانی compose به نسخه ای از Kotlin که این مشکل را ندارد دوباره معرفی خواهند شد.
SnapshotStateListوSnapshotStateMapاکنون عمومی هستند اما پساز بازیابیStableMutableListوStableMutableMap، منسوخ خواهند شد. (Ia7769)افزودن تابع سطح بالا باFrameNanos برای زمانبندی پویانمایی (Ie34c5)
گزارمان @Untracked منسوخ شده است. جایگزینی با @ComposableContract(tracked=false) (Id211e)
نام RestartableFunction و میاناهای برنامهسازی کاربردی مرتبط به ComposableLambda و غیره تغییر کرده است. این میاناهای برنامهسازی کاربردی فقط توسط کامپایلر هدفیابی میشدند، بنابراین این تغییر نباید معمولاً بر سازگاری سطح منبع تأثیر بگذارد. تغییر نام عمدتاً برای این انجام شد که وقتی این کلاس در ردیابی پشتهای نشان داده میشود، بهتر بتواند ماهیت خود را نشان دهد (I7eb25)
شرح @Composable دیگر در کلاسها معتبر نیست (Ia5f02)
Ambient<T>اکنون بهجای @Immutable، @Stable است (I0b4bb)قبلاز این تغییر، افزایه کامپایلر Compose اگر (I5205a، b/158123804) وجود داشت، بهطور غیرسادهای تماسهای سازندهها را در تابع @Composable رهگیری میکرد
ترکیببندی Recompose دیگر یک انتزاع مفید نیست. بیشتر بازآراییها باید درنتیجه تخصیصهای MutableState انجام شود. برای هر چیزی فراتر از آن، توصیه میشود از تابع
invalidateبرای راهاندازی یک ترکیب مجدد از محدوده فعلی استفاده کنید. (Ifc992)«مشاهده» دیگر یک انتزاع مفید نیست. اگر نیاز به تکرار آن دارید، پیادهسازی آن را میتوان با ایجاد یک تابع ترکیبشدنی که یک پارامتر لامبدای ترکیبشدنی را اجرا میکند، تکرار کرد. برای مثال،
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)@Direct بهنفع @ComposableContract(restartable=false) منسوخ شد (If4708)
یک آداپتور برای StateFlow که اخیراً معرفی شده است اضافه شد که به ما امکان میدهد مقدار اولیه را ازپیش تکمیل کنیم تا State برگشتی غیرقابل تهی باشد (I61dd8، b/156233789)
مبدلی برای Flow اضافه شد. مثال استفاده: val value by flow.collectAsState() (If2198، b/153375923)
عملگرهای نماینده دارایی [Mutable]State به افزونهها منتقل شدند تا از بهینهسازیهای نماینده دارایی Kotlin 1.4 پشتیبانی کنند. برای ادامه استفاده از
by state { ... }یاby mutableStateOf(...)، تماسگیرندگان باید وارد کردنها را اضافه کنند. (I5312c)androidx.compose.ViewComposer به androidx.ui.node.UiComposer منتقل شده است androidx.compose.Emittable برداشته شده است. با ComponentNode اضافی بود. androidx.compose.ViewAdapters برداشته شده است. دیگر مورد استفاده پشتیبانیشدهای نیست. Compose.composeInto منسوخ شده است. درعوض از
setContentیاsetViewContentاستفاده کنید. Compose.disposeComposition منسوخ شده است. بهجای آن از روشdisposeدرCompositionبرگشتی ازsetContentاستفاده کنید. androidx.compose.Compose.subcomposeInto به androidx.ui.core.subcomposeInto منتقل شده است نام ComponentNode#emitInsertAt به ComponentNode#insertAt تغییر کرده است نام ComponentNode#emitRemoveAt به ComponentNode#removeAt تغییر کرده است نام ComponentNode#emitMode به ComponentNode#move تغییر کرده است (Idef00)پرچم
ComposeFlags.COMPOSER_PARAMبهtrueبهروز شد که استراتژی تولید کد را برای افزایه نوشتن تغییر خواهد داد. در سطح بالا، این امر باعث میشود توابع @Composable با یک پارامتر مصنوعی اضافی تولید شوند که به تماسهای @Composable بعدی منتقل میشود تا زمان اجرا بتواند اجرا را بهدرستی مدیریت کند. این یک تغییر باینری مهم است، بااینحال، باید سازگاری سطح منبع را در تمام استفادههای مجاز از compose حفظ کند. (I7971c)تغییرات ناگهانی در ambients API. برای جزئیات، گزارش و مستندات
Ambient<T>را ببینید (I4c7ee، b/143769776)ui-livedata اضافه شد - آرتیفکت جدید با آداپتور برای LiveData. مثال استفاده: val value by liveData.observeAsState() (Ie9e8c، b/150465596)
تبدیلکنندههای Rx بدون مقدار اولیه صریح منسوخ شدهاند. استفاده از مقدار تهی همیشه بهترین پیشفرض نیست، برای مثال وقتی «فهرست» دارید بهتر است با emptyList() یا هر پیشفرض منطقی دیگری شروع کنید (I00025، b/161348384)
ui-rxjava2 اضافه شد - آرتیفکت جدید با آداپتورهایی برای RxJava2. مثال استفاده: val value by observable.subscribeAsState() (Ifab4b، b/153369097)
اکنون میتوان از
savedInstanceState()با انواع تهیپذیر استفاده کرد (I6847f، b/153532190)listSaver() و mapSaver() جدید برای آسانتر کردن نوشتن اشیای «ذخیرهکننده» سفارشی (I8cf68، b/152331508)
توابع جدید: savedInstanceState() و rememberSavedInstanceState(). این توابع شبیه state() و remember() هستند اما از وضعیت نمونه ذخیرهشده پشتیبانی داخلی دارند (If1987، b/152025209)
رفع اشکالها
- نام
runOnIdleComposeبهrunOnIdleتغییر کرد (I83607) - میانای برنامهسازی کاربردی آزمایشی LayoutNode ساخته شد (I4f2e9)
- androidx.ui.foundation.TextFieldValue و androidx.ui.input.EditorValue منسوخ شده است. ترکیبهای TextField، FilledTextField، و CoreTextField که از این نوع استفاده میکنند نیز منسوخ شدهاند. لطفاً بهجای آن از androidx.ui.input.TextFieldValue استفاده کنید (I4066d، b/155211005)
- DrawBackground API منسوخشده بهنفع APIs افزونه drawBackground در «اصلاحگر» برداشته شد. پیادهسازیهای رنگ، قلممو، و drawBackground رنگآمیزی بازسازی شد تا مسیرهای کد نیز کاهش یابد و همچنین نیاز به ایجاد «اصلاحگر» بهعنوان بخشی از ترکیب برداشته شود. (I0343a)
- میاناهای برنامهسازی کاربردی سطح بالاتر ترکیب بهروزرسانیشده که «بوم نقاشی» را آشکار میکند بهجای آن «محدوده بوم نقاشی» را آشکار میکند. این کار نیاز مصرفکنندگان به نگهداری اشیاء Paint خود را برطرف میکند. مصرفکنندگانی که هنوز به Canvas نیاز دارند میتوانند از روش افزونه drawCanvas استفاده کنند که برای صدور فرمانهای طراحی با Canvas زیرین بازخوانی ارائه میدهد. (I80afd)
- «میانای برنامهسازی کاربردی» لامبدای انتهایی WithConstraints تغییر کرده است. اکنون بهجای دو پارامتر، حوزه گیرندهای دارد که علاوهبر محدودیتها و layoutDirection، ویژگیهای minWidth، maxWidth، minHeight، و maxHeight را در Dp ارائه میدهد (I91b9a، b/149979702)
- اصلاحگر لایهگذاری متقارن اضافه شد. (I39840)
- wrapContentWidth و wrapContentHeight بهروزرسانی شدند تا بهجای هر «ترازی»، «تراز» عمودی یا افقی را انتظار داشته باشند. «تعدیلکننده جاذبه» بهروزرسانی شد تا «تراز» عمودی یا افقی را بپذیرد. «ردیف»، «ستون»، و «پشته» بهروزرسانی شدند تا از «ترازهای» پیوسته سفارشی پشتیبانی کنند. (Ib0728)
- نام واحد ui-text به ui-text-core تغییر کرد (I57dec)
- بهبود دادن DrawModifier API:
- محدوده گیرنده را برای draw() به ContentDrawScope تغییر داد
- همه پارامترهای draw() برداشته شد
- DrawScope همان رابط کاربری CanvasScope سابق را دارد
- ContentDrawScope روش drawContent() دارد (Ibaced، b/152919067)
- ColoredRect منسوخ شده است. درعوض از
Box(Modifier.preferredSize(width, height).drawBackground(color))استفاده کنید. (I499fa، b/152753731) - جایگزین کردن «اصلاحگر بهعلاوه اپراتور» با توابع افزونه کارخانه (I225e4)
- اعضای RowScope و ColumnScope اکنون در خارج از Row و Column قابلدسترس هستند. (I3a641)
- نام LayoutFlexible به LayoutWeight تغییر کرد. نام پارامتر «محکم» به «پر کردن» تغییر کرد. (If4738)
- WithConstraints پارامتر LayoutDirection (I6d6f7) را دریافت کرد
- نام پسزمینه به DrawBackground تغییر کرد و بهطور پیشفرض بهخاطر سپرده میشود (Ia0bd3)
- ButtonStyle با توابع متمایز جایگزین شد و بار اضافه نوشتار (رشته) برداشته شد. برای اطلاعات استفاده، نمونههای بهروزشده را ببینید. (If63ab، b/146478620، b/146482131)
-
runOnIdleComposeوrunOnUiThreadاکنون کارکردهای سراسری هستند بهجای روشهایی در ComposeTestRule. (Icbe8f)
همیاری خارجی
- برداشتن API غیرضروری مثل Looper و Handler از لایه انتقال «زمان اجرای Compose» (I6847d)
-
Flow<T>.collectAsState()را بدون مقدار اولیه منسوخ کنید. درعوض ازStateFlow<T>استفاده کنید یا مقدار اولیه صریحی را ارسال کنید. (I63f98، b/157674865)