زمان اجرای Compose

واحدهای سازنده بنیادی مدل برنامه‌نویسی و مدیریت وضعیت Compose، و زمان اجرای اصلی برای هدف‌یابی «افزایه کامپایلر 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.writableRecord IllegalStateExceptionهای غیرضروری ایجاد کند برطرف شد (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 را فراهم می‌کند که برای مقادیر پیش‌فرض خود به محیط میزبانی (برای نمونه، برچسب‌های Android View) برمی‌گردند.

مشاهده 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 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫RetainScopeHolder API برای مدیریت مجموعه‌ای از RetainScopes اضافه شد. از این ویژگی می‌توان برای پیاده‌سازی نگهداری برای محتویات و میزبان‌های پیمایش که از چندین فرزند با طول عمر نگهداری متفاوت تشکیل شده‌اند استفاده کرد. (I10e0f)
  • ‫RetainedContentHost و retainControlledRetainScope API اضافه شد که می‌توان از آن‌ها برای ایجاد 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 اضافه شد که می‌تواند برای حاشیه‌نویسی انواع استفاده‌نشده با retain API استفاده شود، احتمالاً به این دلیل که منابع را لو می‌دهد. (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، «نگه داشتن» می‌تواند مقادیر به‌یادمانده‌ای را که سلسله‌مراتب ترکیب را ترک می‌کنند حفظ و ذخیره کند. مقادیر نگهداری‌شده سریال‌سازی نمی‌شوند و طول عمر کوتاه‌تری نسبت‌به مقادیر ذخیره‌شده دارند و عملکردی مشابه androidx ViewModel دارند. برای جزئیات بیشتر، مستندات را ببینید. (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)
  • ‫PausableComposition isApplied و isCancelled getters آشکارشده که امکان بررسی وضعیت 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)
  • ‫PausableComposition isCancelled getters که امکان بررسی وضعیت 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)

رفع اشکال‌ها

نسخه 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) اضافه شد
  • نسخه‌های ابتدایی State API اضافه شد که به مقادیر Int،‏ Long،‏ Float، و Double اجازه می‌دهد در اشیای State بدون متحمل شدن جریمه برای تبدیل خودکار جعبه‌ای ردیابی شوند. برای استفاده از این موارد، از روش‌های کارخانه‌ای جدید mutableIntState(Int)، mutableFloatStateOf(Float)، و غیره استفاده کنید. (I48e43)

رفع اشکال‌ها

  • از ترکیب مجدد قطعات فرعی که برداشته خواهند شد صرف‌نظر کنید. (Ieeb99، b/254645321)
  • مرجع تصویر کلی در ComposerImpl (0206f7) حفظ نشود
  • ترکیب‌بندی دوبار اعمال نشود (f5791b)
  • اطمینان از نامعتبر شدن مقادیر وضعیت مشتق‌شده غیرمقداردهی‌شده (aa2a92)
  • درطول دور ریختن ترکیب، با onEndChanges تماس بگیرید. (62cc8c)
  • رفع مشکل انتقال محتوا به یک ترکیب فرعی (4beb41)
  • رفع بن‌بست‌های احتمالی (c1a425 و 8edce0)
  • ترکیب‌کننده مجددی که برای پنجره Android ایجاد شده است اکنون فقط تماس‌های 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 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نسخه‌های ابتدایی State API اضافه شد که به مقادیر 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 به ComposableMethod 7b6c7ad

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

  • پاک کردن هر دو نمایه حوزه در SnapshotStateObserver 29f4a3e
  • افزودن گروه‌های موردنیاز در بدنه لامبداهای غیرقابل رد کردن 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 منتشر شد. نسخه ۱.۳.۰ حاوی این تعهدات است.

تغییرات مهم از نسخه ۱.۲.۰

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

ردیابی ترکیب

میاناهای برنامه‌سازی کاربردی بازتابی ترکیبی

رفع اشکال‌های زمان اجرا

سیستم عکس آنی

نسخه 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 بود که می‌توان از آن برای فعال کردن تجربه کاربری پیچیده مثل انتقال عناصر مشترک استفاده کرد. ‫movableContentOf API لامبدای ترکیبی را به لامبدایی تبدیل می‌کند که وضعیت و گره‌های مربوطه را به هر مکان جدیدی که فراخوانی می‌شود منتقل می‌کند. وقتی تماس قبلی از ترکیب خارج می‌شود، وضعیت به‌طور موقت حفظ می‌شود و اگر تماس جدیدی با لامبدا وارد ترکیب شود، وضعیت و «گره‌های» مرتبط به مکان تماس جدید منتقل می‌شوند. اگر تماس جدیدی اضافه نشود، وضعیت برای همیشه برداشته می‌شود و به ناظران اطلاع داده می‌شود.

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

  • علاوه‌بر این و چند ویژگی جدید دیگر، زمان زیادی صرف پایدارسازی سیستم وضعیت «زمان اجرا» و «نمای فوری» شد. چندین نشت حافظه برداشته شد و مسیرهای کد بهینه‌سازی شد.

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

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

عملکرد در 1.2

رفع اشکال‌ها در 1.2

نسخه 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 به‌روزرسانی شد تا به Kotlin 1.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 و AGP 7.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 برداشته شد.

    ‫RememberObserver‏ onAbandoned را اضافه می‌کند که اگر نمونه 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، برای ساختن از پایین به بالا بسیار کارآمدتر از ساختن از بالا به پایین هستند. قبل‌از این تغییر، برای پیاده‌سازی از پایین به بالا، پشته‌ای از درج‌ها لازم بود که باید در هر برنامه‌ای که به ساختار از پایین به بالا برای عملکرد نیاز داشت کپی می‌شد. با این تغییر، Applier insertBottomUp() را ملغی می‌کند تا درخت را از پایین به بالا بسازد و insertTopDown() درخت را از بالا به پایین می‌سازد. (Icbdc2)

  • «ترکیب» از دریافت‌کننده‌های دارایی که می‌توانند فراخوانی‌های ترکیبی انجام دهند پشتیبانی می‌کند. پشتیبانی از این قابلیت حذف نخواهد شد، اما دستورگان برای اعلام اینکه یک دریافت‌کننده دارایی @Composable است تغییر می‌کند.

    نحو منسوخ‌شده برای انجام این کار ازطریق حاشیه‌نویسی خود دارایی بود:

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

    نحو صحیح برای انجام این کار، حاشیه‌نویسی کردن دریافت‌کننده دارایی است:

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

    هر دو نحو برای مدتی کار خواهند کرد، اما نحو منسوخ‌شده قبلی در نهایت به خطای کامپایل تبدیل خواهد شد. (Id9197)

رفع اشکال‌ها

نسخه 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 و mutableStateOf API که به شما امکان می‌دهد نمونه‌های 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 اکنون آرگومان‌های پیش‌فرض را نیز به تابع ترکیب‌شدنی تبدیل می‌کند. این کار بدون معرفی سربار پیش‌فرض مصنوعی اضافی برای خود تابع انجام می‌شود، بنابراین این تغییر منجر به تعریف توابع کمتری خواهد شد.

    تغییرات رفتاری عمدی شناخته‌شده ناشی از این:

    1. برخی‌از تماس‌ها در جایی که قبلاً رد نمی‌شدند رد خواهند شد
    2. اکنون عبارت‌های ترکیبی در عبارت‌های آرگومان پیش‌فرض به‌درستی مشترک می‌شوند و مدیریت می‌شوند

    این کار شامل برخی بهینه‌سازی‌ها بود: ‫۱. نتیجه مقایسه‌های پارامترها ازطریق گراف تماس به دیگر توابع ترکیبی منتقل می‌شود. این کار منجر به مقایسه‌های کمتر در زمان اجرا می‌شود، اندازه جدول جایگاه را کاهش می‌دهد، و همچنین باعث می‌شود توابع ترکیبی که قبلاً رد نمی‌شدند بیشتر رد شوند ۲. پارامترهایی که در زمان ترجمه «ایستا» تشخیص داده می‌شوند دیگر در زمان اجرا مقایسه یا ذخیره نمی‌شوند. این کار تعداد مقایسه‌ها و اندازه جدول جایگاه را کاهش می‌دهد. ۳. از ساختار جریان کنترل بدنه توابع برای به‌حداقل رساندن تعداد گروه‌های تولیدشده استفاده می‌شود. این کار اندازه جدول شکاف را کاهش می‌دهد و درنتیجه زمان اجرا کار کمتری انجام می‌دهد ‫۴. پارامترهای گیرنده و اعزام استفاده‌نشده به توابع در تعیین قابلیت رد کردن تابع لحاظ نمی‌شوند، مگر اینکه در بدنه تابع استفاده شوند.

    بیشتر تغییرات اساسی مربوط به میاناهای برنامه‌سازی کاربردی‌ای بود که کامپایلر مستقیماً آن‌ها را هدف قرار می‌دهد و استفاده معمول از 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)