إنشاء بيئة التشغيل
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(الاطّلاع على المستندات المرجعية لواجهة برمجة التطبيقات لكل حِزم الإنشاء)
التعديل الأخير | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
4 سبتمبر 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
البنية
الإنشاء عبارة عن مزيج من 7 معرّفات مجموعات Maven ضمن androidx
. كل مجموعة
يحتوي على مجموعة فرعية مستهدفة من الوظائف، لكل منها مجموعة من الوظائف
الملاحظات.
يوضح هذا الجدول المجموعات والروابط لكل مجموعة من ملاحظات الإصدار.
مجموعة | الوصف |
---|---|
compos.animation | يمكنك إنشاء صور متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم. |
compose.compiler | يمكنك تحويل دوال @Composable وتفعيل التحسينات باستخدام المكون الإضافي لبرنامج التحويل البرمجي لـ Kotlin. |
composation.foundation | يمكنك كتابة تطبيقات Jetpack Compose باستخدام الوحدات الأساسية الجاهزة للاستخدام وتوسيع الأساس لإنشاء أجزاء نظام التصميم الخاصة بك. |
compose.material | يمكنك إنشاء واجهات المستخدم في Jetpack Compose باستخدام عناصر التصميم المتعدد الأبعاد. وهي نقطة الدخول ذات المستوى الأعلى في Compose، والتي تم تصميمها لتوفير مكونات تطابق العناصر المذكورة في www.material.io. |
compose.material3 | يمكنك إنشاء واجهات المستخدم في Jetpack Compose باستخدام مكونات Material Design 3، وهي المراحل المتطوّرة التالية في Material Design. تتضمّن المادة 3 تصاميم ومكوّنات محدّثة وميزات تخصيص Material You مثل الألوان الديناميكية، وهي مصممة لتكون متوافقة مع النمط المرئي الجديد في Android 12 وواجهة مستخدم النظام. |
compose.runtime | هي الوحدات الأساسية التي يستند إليها نموذج البرمجة وإدارة الحالة في Compose، بالإضافة إلى وقت التشغيل الأساسي الذي يستهدفه المكوِّن الإضافي Compose Compiler Plugin. |
compos.ui | يجب استخدام المكونات الأساسية لواجهة مستخدم الإنشاء للتفاعل مع الجهاز، بما في ذلك التنسيق والرسم والإدخال. |
إعلان التبعيات
لإضافة تبعية إلى Compose، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle
لـ
لتطبيقك أو الوحدة التي تستخدمها:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.7.0" implementation "androidx.compose.runtime:runtime-livedata:1.7.0" implementation "androidx.compose.runtime:runtime-rxjava2:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.7.0") implementation("androidx.compose.runtime:runtime-livedata:1.7.0") implementation("androidx.compose.runtime:runtime-rxjava2:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
لمزيد من المعلومات حول العناصر الاعتمادية، يُرجى الاطّلاع على إضافة تبعيات الإصدار.
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.
يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.
الإصدار 1.0 من تتبُّع وقت التشغيل
الإصدار 1.0.0-beta01
29 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.
الإصدار 1.0.0-alpha05
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تثبيت التبعيات على أدنى الإصدارات الثابتة المتوافقة (مثل com-runtime وtracing-perfetto) - إصلاح المشكلة حيث يؤدي إنشاء "التتبع في وقت التشغيل" إلى إصدار أحدث من وقت تشغيل إنشاء الرسالة في التطبيق.
الإصدار 1.0.0-alpha04
23 آب (أغسطس) 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على عمليات التنفيذ هذه.
الميزات الجديدة
- يتوافق هذا العرض مع أحدث إصدارَين من "مقاييس الأداء" و"تتبُّع أداء Perfetto"، ما يتيح دعم "تتبُّع المقطوعة الموسيقية" عند بدء تشغيل التطبيق (التشغيل على البارد)، على سبيل المثال. في مقياس الأداء AndroidX وAndroid Studio (بدءًا من الإصدار التجريبي من Hedgehog 2).
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية "
androidx.tracing.perfetto.Trace
" إلى "androidx.tracing.perfetto.PerfettoSdkTrace
". (I44af8) - الحفاظ على اتّساق واجهات برمجة التطبيقات Tracing Perfetto SDK مع "
android.os.Trace
" (I73ba0، b/282199917) - المتطلّبات الأساسية للتتبّع عند بدء تشغيل التطبيق (Iad890)
- ملفات واجهة برمجة تطبيقات تجريبية وعامة تم دمجها (I0f2e1 وb/278769092)
الإصدار 1.0.0-alpha02
8 شباط (فبراير) 2023
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على عمليات التنفيذ هذه.
الميزات الجديدة
- ما مِن تغييرات في الوظائف. تحسينات متعددة للأداء في اعتماديات ما بعد بيع المنتج
androidx.tracing:tracing-perfetto*
.
الإصدار 1.0.0-alpha01
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على عمليات التنفيذ هذه.
الميزات الجديدة
androidx.compose.runtime:runtime-tracing
هي مكتبة تتيح، في حال توفُّر أدوات متوافقة معها (تتوفّر قريبًا)، إمكانية التتبُّع الممتد في تطبيق Compose. هذا الإصدار الأولي هو 1.0.0-alpha01.
الإصدار 1.8
الإصدار 1.8.0-alpha01
4 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha01
. يحتوي الإصدار 1.8.0-alpha01 على عمليات التنفيذ هذه.
الإصدار 1.7
الإصدار 1.7.0
4 سبتمبر 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0
. يحتوي الإصدار 1.7.0 على عمليات التنفيذ هذه.
تغييرات مهمة منذ الإصدار 1.6.0
- تمت إضافة إمكانية توفير مقطوعة موسيقية محلية تم احتسابها استنادًا إلى قيم المقطوعات الموسيقية الأخرى المحلية إما تلقائيًا باستخدام
compositionLocalWithComputedDefault()
أو من خلال توفير lambda لاستخدامها في احتساب القيمة باستخدامprovidesComputed
بدلاً منprovides
. - يمكن الحصول على قيمة المقطوعة الموسيقية المحلية باستخدام خاصية
currentValue
للمقطوعة الموسيقية المحلية التي يمكن الوصول إليها من داخل دالة lambda حسب القيمة. يتم استخدام هذه السمة بدلاً من الدالةcurrent
التي لا يمكن الوصول إليها إلا من خلال دوال@Composable
. (Iadbc0) - يمكن الوصول على الفور إلى كائنات الحالة التي تم إنشاؤها حديثًا من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
- الحالة الأولية لـ
mutableStateOf()
، بالإضافة إلى نُسخها الأساسية، هي القيمة التي يتم تمريرها كمَعلمة إلىmutableStateOf()
. الحالة الأولية للسمتَينmutableStateListOf()
وmutableStateMapOf()
فارغة. - تمت إضافة
Snapshot.isInSnapshot
وSnapshot.PreexistingSnapshotId
اللذَين يتم استخدامهما لتفعيل عنصر حالة لإتاحة إمكانية الوصول إليه على الفور من خلال اللقطة العامة عند إنشائه. - يمكن أن تدعم كائنات الحالة المخصصة إمكانية الوصول إليها فورًا من خلال اتباع نمط التغييرات التي يتم إجراؤها على كائنات اللقطات المدمجة. (I84a17)
- تفعيل
nonSkippingGroupOptimization
لإنشاء المكتبات يؤدي ذلك إلى زيادة كفاءة الرمز الذي تم إنشاؤه لجميع الدوال القابلة للإنشاء غير القابلة لإعادة التشغيل في androidx. نخطط لتفعيل هذه الميزة تلقائيًا في المستقبل. I(acbc08) - يمكنك إيقاف دالة lambdas القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه. (98301c)
- يمكنك طلب معاودة الاتصال على "
onRelease
" بنفس ترتيب "onForgotten
". (2cd790) - تفعيل وضع التخطّي القوي (ed1766)
- جعل
currentCompoundHashKey
فريدًا في المزيد من الحالات (d4a872)
الإصدار 1.7.0-rc01
21 آب (أغسطس) 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-rc01
. يحتوي الإصدار 1.7.0-rc01 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta07
7 أغسطس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta07
. يحتوي الإصدار 1.7.0-beta07 على عمليات الالتزام هذه.
الإصدار 1.7.0-beta06
24 يوليو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta06
. يحتوي الإصدار 1.7.0-beta06 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta05
10 يوليو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta05
. يحتوي الإصدار 1.7.0-beta05 على عمليات الالتزام هذه.
الإصدار 1.7.0-beta04
26 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta04
. يحتوي الإصدار 1.7.0-beta04 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta03
12 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta03
. يحتوي الإصدار 1.7.0-beta03 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta02
29 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta02
. يحتوي الإصدار 1.7.0-beta02 على عمليات التنفيذ هذه.
الإصدار 1.7.0-beta01
14 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-beta01
. يحتوي الإصدار 1.7.0-beta01 على عمليات التنفيذ هذه.
الإصدار 1.7.0-alpha08
1 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha08
. تحتوي الإصدار 1.7.0-alpha08 على عمليات التنفيذ هذه.
الإصدار 1.7.0-alpha07
17 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha07
. يحتوي الإصدار 1.7.0-alpha07 على عمليات التنفيذ هذه.
الميزات الجديدة
- تمت إضافة إمكانية توفير مقطوعة موسيقية محلية تم احتسابها استنادًا إلى قيم المقطوعات الموسيقية الأخرى المحلية إما تلقائيًا باستخدام
compositionLocalWithComputedDefault()
أو من خلال توفير lambda لاستخدامها في احتساب القيمة باستخدامprovidesComputed
بدلاً منprovides
. - يمكن الحصول على قيمة المقطوعة الموسيقية المحلية باستخدام خاصية
currentValue
للمقطوعة الموسيقية المحلية التي يمكن الوصول إليها من داخل دالة lambda حسب القيمة. يتم استخدام هذه السمة بدلاً من الدالةcurrent
التي لا يمكن الوصول إليها إلا من خلال دوال@Composable
. (Iadbc0)
التغييرات في واجهة برمجة التطبيقات
- يمكن الوصول على الفور إلى كائنات الحالة التي تم إنشاؤها حديثًا من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
- الحالة الأولية لـ
mutableStateOf()
، بالإضافة إلى نُسخها الأساسية، هي القيمة التي يتم تمريرها كمَعلمة إلىmutableStateOf()
. الحالة الأولية للسمتَينmutableStateListOf()
وmutableStateMapOf()
فارغة. - تمت إضافة
Snapshot.isInSnapshot
وSnapshot.PreexistingSnapshotId
اللذَين يتم استخدامهما لتفعيل عنصر حالة لإتاحة إمكانية الوصول إليه على الفور من خلال اللقطة العامة عند إنشائه. - يمكن أن تدعم كائنات الحالة المخصصة إمكانية الوصول إليها فورًا من خلال اتباع نمط التغييرات التي يتم إجراؤها على كائنات اللقطات المدمجة. (I84a17)
إصلاح الأخطاء
- تم إصلاح دمج
readObserver
في اللقطات المتداخلة. وأدّى ذلك إلى عدم صلاحية الحالات المشتقة المدمَجة عند استخدامها فيsnapshotFlow
. (Idf138)
الإصدار 1.7.0-alpha06
3 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha06
. تحتوي الإصدار 1.7.0-alpha06 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- حلّ المشكلة التي توفّر قيمًا فردية تعالج
providesDefault
(538f45) - تجنُّب إيقاف مؤقت في أداة إعادة الإنشاء للوصول إلى ساعة الإطار (07e5c6)
الإصدار 1.7.0-alpha05
20 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha05
. يحتوي الإصدار 1.7.0-alpha05 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- محو التغييرات المتأخرة على التركيبة التي تم إيقافها (5950bc)
الإصدار 1.7.0-alpha04
6 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha04
. يحتوي الإصدار 1.7.0-alpha04 على عمليات التنفيذ هذه.
تحسينات الأداء
- طلب
Snapshot.current
مرة واحدة لكل تقييم حالة مشتق (ee7daf) - قراءة
currentRecord
مرة واحدة لكل ملاحظة في المقطوعة الموسيقية (b882b2) - إزالة التخصيص المكرّر غير المقصود في
snapshotFlow
(231e56) - تفعيل
nonSkippingGroupOptimization
لإنشاء المكتبات يؤدي ذلك إلى زيادة كفاءة الرمز الذي تم إنشاؤه لجميع الدوال القابلة للإنشاء غير القابلة لإعادة التشغيل في androidx. نخطط لتفعيل هذه الميزة تلقائيًا في المستقبل. I(acbc08)
الإصدار 1.7.0-alpha03
21 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha03
. يحتوي الإصدار 1.7.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- إدخال مجموعات الاستبدال لتحسين رصد التغييرات (0941b5)
تحسينات الأداء
- تحسين تخصيص الذاكرة عند رصد التغييرات (53e7fd)
- إصلاح تسرّب الذاكرة في المؤلف (0e097d)
- استخدِم
ScopeMap
لتمرير عمليات الإلغاء عند إعادة الإنشاء (e19a7e) - ربط "تحسين عمليات إلغاء الصلاحية" للاحتفاظ فقط بالحالات الناتجة (f11c44)
- استبدال
IdentityArraySet
استخدامات بـScatterSet
(db572e) - تحسين
removeScope
فيScopeMap
(bb0530)
الإصدار 1.7.0-alpha02
7 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha02
. يحتوي الإصدار 1.7.0-alpha02 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- يمكنك إيقاف دالة lambdas القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه. (98301c)
- يمكنك طلب معاودة الاتصال على "
onRelease
" بنفس ترتيب "onForgotten
". (2cd790) - فلترة الحالات التي تم تغييرها والتي لم يتم رصدها في
snapshotFlow
(796b80)
تحسينات الأداء
- تعديل مراقب اللقطة في مكانه عندما يكون شفافًا فعلاً. (f60f30)
- تحسين
SnapshotIdSet.lowest()
. (7ae149) - يمكنك استخدام
fold()
بدون تخصيص فيSnapshotIdSet
. (532b7d) - إزالة تخصيص المكرّر (83f96b)
الإصدار 1.7.0-alpha01
24 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.7.0-alpha01
. يحتوي الإصدار 1.7.0-alpha01 على هذه عمليات التنفيذ.
تحسينات الأداء
- إضافة إمكانية إنشاء خانات بعد إضافة مجموعة فرعية (b5960c)
- تحسين تسجيل تعديلات حالات اللقطات (28c3fe)
- تفعيل وضع التخطّي القوي (ed1766)
إصلاح الأخطاء
- حساب للمَعلمة التلقائية الوصفية في التذكّر الجوهري (096665)
- جعل
currentCompoundHashKey
فريدًا في المزيد من الحالات (d4a872) - إظهار المجموعات عند الخروج من استدعاء الدالة المضمّنة (2a90fc)
الإصدار 1.6
الإصدار 1.6.8
12 يونيو 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.8
. يحتوي الإصدار 1.6.8 على عمليات الالتزام هذه.
الإصدار 1.6.7
1 مايو 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.7
. يحتوي الإصدار 1.6.7 على عمليات الالتزام هذه.
الإصدار 1.6.6
17 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.6
. لم يتم إجراء أي تغييرات منذ الإصدار الأخير.
الإصدار 1.6.5
3 أبريل 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.5
. يحتوي الإصدار 1.6.5 على عمليات الالتزام هذه.
الإصدار 1.6.4
20 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.4
. يحتوي الإصدار 1.6.4 على عمليات الالتزام هذه.
الإصدار 1.6.3
6 مارس 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.3
. يحتوي الإصدار 1.6.3 على عمليات الالتزام هذه.
الإصدار 1.6.2
21 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.2
. يحتوي الإصدار 1.6.2 على هذه الالتزامات.
الإصدار 1.6.1
7 فبراير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.1
. يحتوي الإصدار 1.6.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- يمكنك طلب معاودة الاتصال على "
onRelease
" بنفس ترتيب "onForgotten
". (2cd790) - فلترة الحالات التي تم تغييرها والتي لم يتم رصدها في
snapshotFlow
(796b80)
الإصدار 1.6.0
24 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.0
. يحتوي الإصدار 1.6.0 على هذه الالتزامات.
تغييرات مهمة منذ الإصدار 1.5.0
الميزات الجديدة
- إعادة عرض الاستثناءات التي تم استيعابها أثناء تكرار إعادة الإنشاء (4dff9a)
تحسينات الأداء
- تحسين تسجيل تعديلات حالات اللقطات (28c3fe)
- تحسين
rememberSaveable
(f01d79) - تأجيل إعادة قراءة الحالات الناتجة حتى يتم تسجيل التغييرات (f38099)
- تحسين تقديم قيم محلية للتأليف (a337ea)
إصلاح الأخطاء
- إصلاح تسرّب الذاكرة في جدول الخانة (73fcfe)
- تخطي إعادة تركيب التركيبات الفرعية التي ستتم إزالتها. (Ieeb99، b/254645321)
- لا يتم تفعيل سوى مراحل نشاط "
RememberObserver
" عند تخزينها في عملية احتساب التذكُّر. (f6b4dc) - حصر التقاط
$dirty
على رموز lambda المضمّنة. (acfca0) - إصلاح المحتوى المنقول الذي يتلقى أحيانًا مقطوعة موسيقية محلية غير صحيحة. (035cd6)
الإصدار 1.6.0-rc01
10 يناير 2024
تم طرح androidx.compose.runtime:runtime-*:1.6.0-rc01
. يحتوي الإصدار 1.6.0-rc01 على هذه عمليات التنفيذ.
الإصدار 1.6.0-beta03
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta03
. يحتوي الإصدار 1.6.0-beta03 على هذه الالتزامات.
الإصدار 1.6.0-beta02
29 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta02
. يحتوي الإصدار 1.6.0-beta02 على عمليات التنفيذ هذه.
الإصدار 1.6.0-beta01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-beta01
. يحتوي الإصدار 1.6.0-beta01 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- نشر قيم استقرار معيّنة في التعليق التوضيحي (274a4c)
إصلاح الأخطاء
- استخدِم السياسة المرجعية لوضع حالة النطاق المحلي للمقطوعة في السياق. (83361c)
- حصر التقاط $dirty على ملفات lambdas المضمَّنة. (acfca0)
- إصلاح المحتوى المنقول الذي يتلقى أحيانًا مقطوعة موسيقية محلية غير صحيحة. (035cd6)
- يمكنك استخدام علامات تجزئة أسرع بدون تخصيص في
RecomposeScopeImpl
. (d79494) - يمكنك استخدام
ObjectIntMap
فيDerivedState
. (21862e) - استخدِم
IntRef
مع intSnapshotThreadLocal
فيDerivedState
. (04eaf4)
الإصدار 1.6.0-alpha08
18 تشرين الأول (أكتوبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha08
. يحتوي الإصدار 1.6.0-alpha08 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- لا يتم تفعيل سوى مراحل نشاط "
RememberObserver
" عند تخزينها في عملية احتساب التذكُّر. (f6b4dc) - يتم تحسين عمليات التخصيص في ترتيب قوائم إلغاء الصلاحية. (954d63)
- استخدام خرائط جديدة غير مخصصة في
SnapshotStateObserver
(4303ce) - محو حالات إلغاء الصلاحية عندما تكون المقطوعة الموسيقية غير مفعَّلة. (e001be)
الإصدار 1.6.0-alpha07
4 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha07
. يحتوي الإصدار 1.6.0-alpha07 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم وضع علامة
RandomAccess
علىSnapshotStateList
لإتاحة استخدام إصدار الفهرسة المباشرة من مساعدات القوائم. (I5210c، b/219554654)
الإصدار 1.6.0-alpha06
20 أيلول (سبتمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha06
. يحتوي الإصدار 1.6.0-alpha06 على هذه عمليات التنفيذ.
الإصدار 1.6.0-alpha05
6 أيلول (سبتمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha05
. يحتوي الإصدار 1.6.0-alpha05 على هذه عمليات التنفيذ.
الإصدار 1.6.0-alpha04
23 آب (أغسطس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha04
. يحتوي الإصدار 1.6.0-alpha04 على هذه عمليات التنفيذ.
الميزات الجديدة
- إعادة عرض الاستثناءات التي تم استيعابها أثناء تكرار إعادة الإنشاء (4dff9a)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طريقة لإيقاف
ReusableComposition
، وإزالة الملاحظات ولكن مع الاحتفاظ بالعُقد في مكانها. يمكن إعادة تفعيل المقطوعة الموسيقية التي تم إيقافها من خلال الاتصال بالرقمsetContent
. (Ib7f31) - إضافة واجهة
ReusableComposition
لإدارة مراحل النشاط وإعادة استخدام التركيبات الفرعية. (I812d1، b/252846775)
الإصدار 1.6.0-alpha03
9 آب (أغسطس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha03
. يحتوي الإصدار 1.6.0-alpha03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- إصلاح تحسين
CompositionLocalProvider
الجديد (3118e88) - تصحيح طريقة تفكيك عُقد المحتوى القابل للنقل. (5e3d59b)
الإصدار 1.6.0-alpha02
26 تموز (يوليو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha02
. يحتوي الإصدار 1.6.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة تحسينات الأداء
- تحسين
rememberSaveable
(f01d79) - تأجيل إعادة قراءة الحالات الناتجة حتى يتم تسجيل التغييرات (f38099)
- تحسين تقديم قيم محلية للتأليف (a337ea)
- تم وضع علامة
@ExplicitGroupsComposable
علىSideEffect
لتجنُّب إنشاء مجموعة. (I74815) - تجنب المقارنة بين الخرائط المحلية التي تم إنشاؤها عند إعادة الاستخدام (782071)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة حِمل زائد على حالة خاصة لـ
CompositionLocalProviders
لتجنُّب النفقات العامة المستخدمة لجعل تقديم قيم متعددة أسرع، ولكن مع ارتفاع أعباء العمل عند تقديم قيمة واحدة. (I6d640، b/288169379)
إصلاح الأخطاء
- إصلاح تسرّب الذاكرة في جدول الخانة (73fcfe)
- إصلاح طريقة استعادة
rememberSaveable
عندما يعرضstateSaver
قيمة فارغة (90748c)
الإصدار 1.6.0-alpha01
21 حزيران (يونيو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha01
. يحتوي الإصدار 1.6.0-alpha01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تخطي إعادة تركيب التركيبات الفرعية التي ستتم إزالتها. (Ieeb99، b/254645321)
- تم تقليل عمليات التخصيص عند تطبيق اللقطات. (I65c09)
- تجنَّب احتساب
readableHash
فيDerivedState
في حال عدم تعديل النبذة (68c565).
الإصدار 1.5
الإصدار 1.5.4
18 تشرين الأول (أكتوبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.4
. يحتوي الإصدار 1.5.4 على عمليات الالتزام هذه.
الإصدار 1.5.3
4 أكتوبر 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.3
. يحتوي الإصدار 1.5.3 على هذه الالتزامات.
الإصدار 1.5.2
27 أيلول (سبتمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.2
. يحتوي الإصدار 1.5.2 على عمليات الالتزام هذه.
الإصدار 1.5.1
6 أيلول (سبتمبر) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.1
. يحتوي الإصدار 1.5.1 على عمليات الالتزام هذه.
الإصدار 1.5.0
9 آب (أغسطس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0
. يحتوي الإصدار 1.5.0 على عمليات الالتزام هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة عمليات التخصيص في إعادة التركيب، والصور المتحركة للألوان، و
AndroidComposeView
. (Ib2bfa) - تمت إضافة تعليق توضيحي
@StateFactoryMarker
لوضع علامة على الدوال التي تنشئ حالات ويجب أن يتم تضمينها في طلبremember
. (I64550) - إضافة الإصدارات الأساسية من الحالة و
MutableState
(fb3d89) - تمت إضافة
Snapshot.isApplyObserverNotificationPending
(I672a5) - تمت إضافة إصدارات أساسية من واجهة برمجة التطبيقات
State
، ما يسمح بتتبُّع قيم Int وlong وFloat ومزدوجة في عناصر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 - إصلاح العلامات التي تم تغييرها لملف lambdas الذي تمت إعادة تشغيله ea81df9
- إصلاح تراجع التعديل المباشر للوضع القابل للتعديل في العُقد 73fd4d8
- يجب أن توقف تشغيل ON_STOP مؤقتًا عمليات بث ساعة الإطار بدلاً من التركيبة ae276f1.
- إلغاء صلاحية نطاقات
SnapshotStateObserver
للحالات المُشتقة غير المتغيّرة 84d9b1c - أصلح توقف القفل المحتمل عند التخلص من المقطوعات الموسيقية 28761fc
- إصلاح عملية نقل المحتوى إلى تركيبة فرعية 92d4156
- إصلاح العلامات التي تم تغييرها لتطبيقات lambda التي تمت إعادة تشغيلها (8a03e9)
- تنفيذ استدعاءات إلغاء التفعيل للحساب
LayoutNode
قبل التخلص من التأثيرات (8b0fa4) - يجب حلّ المشكلة
endToMarker()
عند إنهاء مجموعات العُقد. (d71d980) - استخدام مجموعة
SlotWriter
الحالية للتحقّق من الإيقاف (a0b518b) - إزالة
fill
فيSlotTable.moveSlotGapTo()
ونقله لإغلاقه (81f9935) - إصلاح حالات إلغاء الصلاحية المفقودة أثناء نقل المحتوى القابل للنقل (1d7c024)
- إصلاح عمليات الإلغاء الفورية للمحتوى القابل للنقل (8676618)
تحسينات الأداء
- تجنَّب احتساب
readableHash
فيDerivedState
إذا لم يتم تعديل النبذة. (307102) - تخصيصات أقلّ (I65c09 وd7ea77 و727974 و445808)
- إلغاء سريع لعملية الإنشاء
CoroutineScopes
(a55362 وbd382f) - استبدال سجلات كائنات الحالة التي تتضمن سجلات حالة يتعذّر الوصول إليها (c986960)
- استخدِم مؤلّف النطاق الصحيح عند إنشاء المجموعات (9a5e5b6).
- استخدام
IdentityArraySet
لتخزين عمليات إلغاء صلاحية اللقطات (7f60cca) - تقليل عمليات التخصيص للملاحظات الموجزة (5bc535f)
الإصدار 1.5.0-rc01
26 تموز (يوليو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-rc01
. يحتوي الإصدار 1.5.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
تأجيل إعادة قراءة الحالات الناتجة حتى يتم تسجيل التغييرات (f38099)
يتوفّر فحص اختياري للتوصية بنقل بيانات "
mutableStateOf()
" إلى الأنواع المتخصّصة المناسبة لها لإجراءات الإجراءات الأولية. معرّف الوبر هوAutoboxingStateCreation
. في السابق، تم تفعيل هذا الفحص تلقائيًا لجميع المشاريع. للاطّلاع على هذا التحذير في محرِّر "استوديو Android" ونتجات أداة Lint الخاصة بمشروعك، عليك تغيير درجة الخطورة من "معلومات" إلى تحذير (أو مستوى أعلى) من خلال تضمينwarning "AutoboxingStateCreation"
ضمن إعداد Builder.gradle أوbuild.gradle.kts على النحو الموضّح (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
الإصدار 1.5.0-beta03
28 حزيران (يونيو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta03
. يحتوي الإصدار 1.5.0-beta03 على هذه الالتزامات.
إصلاح الأخطاء
- تخطي إعادة تركيب التركيبات الفرعية التي ستتم إزالتها. (Ieeb99، b/254645321)
الإصدار 1.5.0-beta02
7 حزيران (يونيو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta02
. يحتوي الإصدار 1.5.0-beta02 على عمليات التنفيذ هذه.
تحسينات الأداء
- تجنَّب احتساب
readableHash
فيDerivedState
إذا لم يتم تعديل النبذة. (307102)
الإصدار 1.5.0-beta01
24 أيار (مايو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-beta01
. يحتوي الإصدار 1.5.0-beta01 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة التخصيصات في إعادة التركيب، والصور المتحركة بالألوان، و
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).
- إصلاح العلامات التي تم تغييرها لتطبيقات lambda التي تمت إعادة تشغيلها (8a03e9)
- تنفيذ استدعاءات إلغاء التفعيل للحساب
LayoutNode
قبل التخلص من التأثيرات (8b0fa4)
مساهمة خارجية
- تمت إضافة
Snapshot.isApplyObserverNotificationPending
(I672a5)
الإصدار 1.5.0-alpha04
10 أيار (مايو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha04
. يحتوي الإصدار 1.5.0-alpha04 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة إصدارات أساسية من واجهة برمجة التطبيقات
State
، ما يسمح بتتبُّع قيم Int وlong وFloat ومزدوجة في عناصرState
بدون فرض عقوبات على وضع الصناديق التلقائية. يُرجى استخدام طرق المصنع الجديدةmutableIntState(Int)
وmutableFloatStateOf(Float)
وما إلى ذلك لاستخدام هذه الطرق. (I48e43)
إصلاح الأخطاء
يمكنك طلب
onEndChanges
أثناء التخلص من المقطوعة الموسيقية. يتم الاشتراك في عُقد التركيز التي تمت إزالتها خلالComposition.dispose
فيonEndChanges
لإعادة ضبط التركيز.(03d4a47)تأكَّد من إبطال قيم الحالة المشتقّة التي لم يتم إعدادها. ترتبط كل حالة مشتقة بقائمة من العناصر التابعة لها في
SnapshotStateObserver
، ويتم استخدامها لإيقاف النطاقات المرتبطة بالحالة المستمدة عند تغيير التبعية. يتم تسجيل تغيير الاعتمادية عند تقدم اللقطة، ويمكن أن يحدث ذلك بعد قراءة الحالة المستمدة (بسبب طلبSnapshot.notifyObjectsInitialized()
).كان منطق ملاحظة الحالة المشتق السابق في
SnapshotStateObserver
هو تنظيف التبعيات القديمة، ثم قراءة القيمة الجديدة. أدّى ذلك إلى حدوث حالة سباق مع حالة عدم صلاحية، لم يتم تسجيل إلغاء التبعية.يؤدي هذا التغيير إلى إعادة ترتيب البيانات التي تم استخراجها من البيانات التي تم الاطّلاع عليها وإزالة التبعية، ما يضمن تنفيذ عملية الإيقاف دائمًا في حالة صالحة. (c472be6)
الإصدار 1.5.0-alpha03
19 نيسان (أبريل) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha03
. يحتوي الإصدار 1.5.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- ستحظر الآن أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android المكالمات الواردة إلى
withFrameNanos
فقط بدلاً من حظر جميع المقطوعات الموسيقية عند تلقّي إشعار ON_STOP. ويعني هذا أنّ النوافذ المرتبطة بالأنشطة التي تم إيقافها ستستمر في إعادة إنشائها بهدف إجراء تغييرات البيانات، ولكن سيتم حظر الصور المتحركة أو أي متصل آخر بـ "withFrameNanos
". (Id9e7f، b/240975572)
إصلاح الأخطاء
- إصلاح التوقف المؤقت المحتمل في قائمة اللقطات والخريطة 5c1a425
- تنفيذ استدعاءات إلغاء التفعيل للحساب
LayoutNode
قبل التخلص من التأثيرات 3784073 - إصلاح العلامات التي تم تغييرها لملف lambdas الذي تمت إعادة تشغيله ea81df9
- إصلاح تراجع التعديل المباشر للوضع القابل للتعديل في العُقد 73fd4d8
- يجب أن توقف تشغيل ON_STOP مؤقتًا عمليات بث ساعة الإطار بدلاً من التركيبة ae276f1.
- إلغاء صلاحية نطاقات
SnapshotStateObserver
للحالات المُشتقة غير المتغيّرة 84d9b1c - أصلح توقف القفل المحتمل عند التخلص من المقطوعات الموسيقية 28761fc
- إصلاح عملية نقل المحتوى إلى تركيبة فرعية 92d4156
الإصدار 1.5.0-alpha02
5 نيسان (أبريل) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha02
. يحتوي الإصدار 1.5.0-alpha02 على هذه عمليات التنفيذ.
الميزات الجديدة
- أصبح عامل التشغيل
getValue
في Kotlin قابلاً الآن للإنشاء (f174f6e).
إصلاح الأخطاء وتحسينات في الأداء
- استبدال سجلات كائنات الحالة التي تتضمن سجلات حالة يتعذّر الوصول إليها (c986960)
- استخدِم مؤلّف النطاق الصحيح عند إنشاء المجموعات (9a5e5b6).
- يجب حلّ المشكلة
endToMarker()
عند إنهاء مجموعات العُقد. (d71d980) - استخدام مجموعة
SlotWriter
الحالية للتحقّق من الإيقاف (a0b518b) - استخدام
IdentityArraySet
لتخزين عمليات إلغاء صلاحية اللقطات (7f60cca) - إزالة
fill
فيSlotTable.moveSlotGapTo()
ونقله لإغلاقه (81f9935) - إصلاح حالات إلغاء الصلاحية المفقودة أثناء نقل المحتوى القابل للنقل (1d7c024)
- إصلاح عمليات الإلغاء الفورية للمحتوى القابل للنقل (8676618)
- تقليل عمليات التخصيص للملاحظات الموجزة (5bc535f)
الإصدار 1.5.0-alpha01
22 آذار (مارس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha01
. يحتوي الإصدار 1.5.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
- إضافة
Modifier.Node#coroutineScope
للسماح لـModifier.Nodes
بإطلاق الكوروتينات (I76ef9) - السماح لـ
Modifier.Nodes
بقراءةCompositionLocals
من خلال تنفيذ واجهةCompositionLocalConsumerModifierNode
. (Ib44df)
الإصدار 1.4
الإصدار 1.4.3
3 أيار (مايو) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.3
بدون أي تغييرات.
الإصدار 1.4.2
19 نيسان (أبريل) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.2
. يحتوي الإصدار 1.4.2 على عمليات الالتزام هذه.
إصلاح الأخطاء
إصلاح التوقف المؤقت المحتمل في قائمة اللقطات والخريطة 2eb6570
قد تؤدي إضافة محتوى إلى
SnapshotStateList
أوSnapshotStateMap
إلى توقف تام إذا كان التعديل متزامنًا مع عملية كتابة مباشرة في سجلّ الحالة. ازداد احتمال مواجهة هذه المشكلة بشكل كبير مع التغييرات التي أجراها 93fcae828b التي تستخدم عمليات الكتابة المباشرة لإصدار السجلّات غير المستخدَمة.يتم ترتيب الأقفال الآن بحيث لا تتم محاولة الوصول إلى قفل لقطة الشاشة أبدًا عند الضغط باستمرار على قفل خريطة أو قائمة.
الإصدار 1.4.1
5 نيسان (أبريل) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.1
. يحتوي الإصدار 1.4.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- يجب حلّ المشكلة
endToMarker()
عند إنهاء مجموعات العُقد. d71d980
الإصدار 1.4.0
22 آذار (مارس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0
. يحتوي الإصدار 1.4.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ الإصدار 1.3.0
- استخدِم القيمة التي تم إعدادها من
LiveData
لأول مقطوعة موسيقية 3680e25. - أضِف
ComposeNodeLifecycleCallback
لمراقبة دورة حياة عُقد الإنشاء. 8b6a258 - إضافة السمة
parameterTypes
إلىComposableMethod
7b6c7ad
إصلاح الأخطاء التحسينات على الأداء
- محو كلا فهرسَي النطاق في
SnapshotStateObserver
29f4a3e - إضافة المجموعات المطلوبة في نص lambdas غير القابلة للتخطي 7d06752
- تحسين الخصائص المرجعية للذاكرة لحالة اللقطة 93fcae8
- إزالة الملاكمة في عمليات البحث المحلية عن المقطوعات الموسيقية 0875717
- استخدِم المفتاح الصحيح لمجموعات العُقد غير القابلة لإعادة الاستخدام 6388d8d.
- حماية
SnapshotStateObserver
من التطبيقات التكرارية والمتزامنة 98cb6ba - تمت إضافة عملية تحقُّق لحدود الفهرسة في عنصر "get" في
IdentityArraySet
. الطريقة 35a77d3 - تحديث وحدة الإنشاء لاستخدام إضافات
ViewTreeLifecycleOwner
21c2122 - يمكنك إرسال إشعارات التطبيق بعد انتهاء أداة إعادة إنشاء الإطار. 98f2641
- إصلاح عطل الفهرس خارج الحدود عند إلغاء أداة إعادة الإنشاء 8f8656f
- فرض إعادة الإنشاء دائمًا في حال تغيير الموفّرين الرئيسيين للمقطوعة الموسيقية 9526fcc
- تقبُّل أداة إعادة الإنشاء للوظائف الملغاة a55f7ed
- تحسين معالجة عمليات إلغاء الإلغاء لعدد كبير من المؤلفين 9b7ed67
- حلّ مشكلة إنشاء مجموعات الإغلاق للمرتجعات غير المحلية b6f590c
الإصدار 1.4.0-rc01
8 آذار (مارس) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-rc01
. يحتوي الإصدار 1.4.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
الإصدار 1.4.0-beta02
22 شباط (فبراير) 2023
تم طرح androidx.compose.runtime:runtime:1.4.0-beta02
وandroidx.compose.runtime:runtime-saveable:1.4.0-beta02
. يحتوي الإصدار 1.4.0-beta02 على عمليات التنفيذ هذه.
الإصدار 1.4.0-beta01
8 شباط (فبراير) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-beta01
. يحتوي الإصدار 1.4.0-beta01 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
ComposeNodeLifecycleCallback
مما يسمح بمراقبة دورة حياة عُقد Compose (I3731b) - تمت إضافة
@TestOnly
إلىComposer.disableSourceInformation()
لأنّ هذه الدالة آمنة فقط للاستدعاء في اختبار. (I896c8)
إصلاح الأخطاء
- إزالة الملاكمة في عمليات البحث المحلية عن المقطوعات الموسيقية (62f66a)
- تحسين الخصائص المرجعية للذاكرة لحالة اللقطة (dfb451)
الإصدار 1.4.0-alpha05
25 كانون الثاني (يناير) 2023
تم طرح androidx.compose.runtime:runtime:1.4.0-alpha05
وandroidx.compose.runtime:runtime-saveable:1.4.0-alpha05
. يحتوي الإصدار 1.4.0-alpha05 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- المزيد من أنواع/قابلية القيم الفارغة للدوال المضمَّنة/المخفية نهائيًا (I24f91)
الإصدار 1.4.0-alpha04
11 كانون الثاني (يناير) 2023
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha04
. يحتوي الإصدار 1.4.0-alpha04 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- يستخدم
TestMonotonicFrameClock
الآن التعليق التوضيحي التجريبي الصحيح. (I95c9e)
إصلاح الأخطاء
- حماية
SnapshotStateObserver
من عمليات التنفيذ المتكرّرة والمتزامنة (d902fb)
الإصدار 1.4.0-alpha03
7 كانون الأول (ديسمبر) 2022
تم طرح 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
9 تشرين الثاني (نوفمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha02
. يحتوي الإصدار 1.4.0-alpha02 على هذه عمليات التنفيذ.
الإصدار 1.4.0-alpha01
24 تشرين الأول (أكتوبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha01
. يحتوي الإصدار 1.4.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمّ تنفيذ
SnapshotStateList
وSnapshotStateMap
الآن بشكلٍ صريح على النحو التالي:toList()
وtoMap()
، مع الالتزام بالقواعد. تعرض هذه الطرق المحتوى الحالي بدون إنشاء نسخة بينما تعرض البيانات الداخلية غير القابلة للتغيير المستخدمة لتخزين المحتوى. يمكن استخدام هذه القيمة، على سبيل المثال، لإنشاء تدفق من القيم باستخدامsnapshotFlow
بدون الحاجة إلى نسخ البيانات. (Ica2bd)
الإصدار 1.3
الإصدار 1.3.3
11 كانون الثاني (يناير) 2023
تم طرح androidx.compose.runtime:runtime-*:1.3.3
. يحتوي الإصدار 1.3.3 على هذه الالتزامات.
- ما مِن تغييرات منذ 1.3.2
الإصدار 1.3.2
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.2
. يحتوي الإصدار 1.3.2 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم التحديث لإتاحة الإصدار androidx.compose.ui 1.3.2
الإصدار 1.3.1
9 تشرين الثاني (نوفمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.1
. يحتوي الإصدار 1.3.1 على عمليات الالتزام هذه.
الإصدار 1.3.0
24 تشرين الأول (أكتوبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0
. يحتوي الإصدار 1.3.0 على هذه عمليات التنفيذ.
تغييرات مهمة منذ الإصدار 1.2.0
التعامل مع الاستثناء / دعم التعديل المباشر
- لدعم التعديل المباشر بشكل أفضل، تمت إضافة واجهات برمجة تطبيقات لتسهيل معالجة الاستثناءات أثناء إنشاء المحتوى.
- معالجة خطأ في التركيبة لإعادة التحميل السريع
- التعامل مع أخطاء التعديل المباشر عند الحفظ أو الاستعادة
تتبُّع المقطوعات الموسيقية
- تمت إضافة واجهات برمجة التطبيقات لتتبُّع وقت التشغيل لدعم الأدوات الجديدة لتتبُّع التركيبة.
- إنشاء مكالمات بدء أو إنهاء حدث تتبُّع قابل للإنشاء
- تمت إعادة إضافة ComposerKt.traceEventStart(Int, String)
واجهات برمجة تطبيقات الانعكاس القابل للتعديل
- تمت إضافة واجهة برمجة تطبيقات
ComposableMethod
جديدة للسماح باستدعاءات أكثر موثوقية تستند إلى الانعكاس لواجهات برمجة التطبيقات القابلة للإنشاء. - نقل invokeComposable لإنشاء بيئة التشغيل
- Rework API لاستدعاء طريقة قابلة للإنشاء
إصلاحات وقت التشغيل
- إصلاح الأخطاء في اختبار النطاق بحثًا عن علامات تحديد في جدول الخانات
- السماح بنقل المحتوى القابل للنقل من وإلى SubcomposeLayout
- إصلاح عملية نقل المحتوى إلى محتوى جديد بمكوّنات فرعية
نظام اللقطات
- تم إدخال تحسينات متنوعة على نظام اللقطات في ما يتعلّق بإدارة الذاكرة والأداء والدقة.
- تحسين عملية إزالة النطاق في SnapshotStateObserver
- التخلص من اللقطات المدمجة التي تم إنشاؤها من لقطات شفافة
- حالة السباق الثابتة عند قراءة الحالة من اللقطة العامة
- دعم DerivedState في SnapshotStateObserver
- منع إزالة الحالة المشتقّة من التركيب عند قراءتها في نطاقات أخرى
- استخدام IdentityArrayMap بدلاً من HashMap داخل DerivedState
- تعديل أدوات مراقبة الحالة المستمدة من البيانات لاستخدام متّجه قابل للتغيّر
- تعديل حالة SnapshotStateObserver
- استبدال SnapshotStateObserver.disableated بـ ArraySet
- حالة السباق الثابتة عند قراءة الحالة من اللقطة العامة
- إصلاح استخدام سجلّ قديم في عملية احتساب تجزئة الدالة DerivedState
- إصلاح شرط السباق عند تقديم نبذة عامة
- تسريع تنظيف ملاحظات النطاق في SnapshotStateObserver
الإصدار 1.3.0-rc01
5 تشرين الأول (أكتوبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-rc01
. يحتوي الإصدار 1.3.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
ArrayIndexOutOfBoundsException
ثابت صادر من جدول الخانة (b/249076084)
الإصدار 1.3.0-beta03
21 أيلول (سبتمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta03
. يحتوي الإصدار 1.3.0-beta03 على هذه الالتزامات.
تغيير يخالف السلوك
- المعلمة إلى
remember
وrememberCoroutineScope
حيث تم تغييرها إلىcrossinline
. سيؤدي ذلك إلى الإبلاغ عن خطأ في عمليات الإرجاع المبكر بدلاً من السماح بالإرجاع المبكر، ما سيؤدي إلى الإبلاغ عن خطأ داخلي لاحق. - من المحتمل أن يؤدي هذا التغيير إلى الإبلاغ عن أخطاء جديدة في برنامج التجميع تتطلّب إزالة عمليات الإرجاع غير المحلية من دالة lambdas التي يتم تمريرها إلى هذه الدوال. (Ibea62)
الإصدار 1.3.0-beta02
7 أيلول (سبتمبر) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta02
. يحتوي الإصدار 1.3.0-beta02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- واجهة برمجة التطبيقات المعدّلة (I64ca0)
الإصدار 1.3.0-beta01
24 آب (أغسطس) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta01
. يحتوي الإصدار 1.3.0-beta01 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طريقة
find
إلىCompositionData
للسماح لأدوات المطوّرين التي تستخدم واجهة برمجة التطبيقات هذه بالعثور بسرعة على مجموعة فرعية للمقطوعة الموسيقية باستخدام هويتها. (I5794f)
الإصدار 1.3.0-alpha03
10 آب (أغسطس) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على هذه عمليات التنفيذ.
الإصدار 1.3.0-alpha02
27 تموز (يوليو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة إضافة
ComposerKt.traceEventStart(Int, String)
للتوافق مع الأنظمة القديمة (I6e6de)
الإصدار 1.3.0-alpha01
29 حزيران (يونيو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- نقل وظيفة الأداة إلى بيئة التشغيل (I4f729)
الإصدار 1.2
الإصدار 1.2.1
10 آب (أغسطس) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- إصلاح تسرّب الذاكرة: التخلص من اللقطات المتداخلة التي تم إنشاؤها من لقطات شفافة b/239603305
الإصدار 1.2.0
27 تموز (يوليو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0
. يحتوي الإصدار 1.2.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ 1.1.0
كان هناك العديد من الميزات التي تم تقديمها في الإصدار 1.2.0 من خلال ComposeAllowed، بالإضافة إلى العديد من عمليات إصلاح الأخطاء التي أدت إلى إصلاح الأخطاء. كانت أهم ميزة جديدة هي مقدمة عن
movableContentOf
واجهة برمجة التطبيقات التي يمكن استخدامها لتفعيل تجربة المستخدم المعقّدة، مثل انتقالات العناصر المشتركة. تحوِّل واجهة برمجة التطبيقاتmovableContentOf
دالة lambda قابلة للإنشاء إلى دالة lambda التي تنقل حالتها والعُقد المقابلة إلى أي مكان جديد يتم استدعاؤها. عندما يترك الاستدعاء السابق التكوين، يتم الاحتفاظ بالحالة مؤقتًا، وإذا دخل استدعاء جديد إلى lambda في التكوين، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع الاستدعاء الجديد. في حال عدم إضافة مكالمة جديدة، تتم إزالة الحالة نهائيًا وتذكُّر أنّه يتم إشعار المراقبين.إذا تم استدعاء دالة
movableContentOf
lambda عدة مرات في المقطوعة الموسيقية نفسها، يتم إنشاء حالة وعُقد جديدة لكل استدعاء، وعندما تغادر المكالمات المقطوعة وتدخل المكالمات الجديدة، يتم نقل الحالة من استدعاءات الخروج الأولى إلى استدعاءات الدخول بالترتيب الذي يتم استدعاؤها. تتم نهائيًا إزالة جميع الولايات التي لم تتم المطالبة بملكيتها في المكالمات الجديدة.بالإضافة إلى هذه الميزات وبعض الميزات الجديدة الأخرى، تم قضاء الكثير من الوقت في تثبيت بيئة التشغيل ونظام حالة اللقطة. تمت إزالة العديد من تسريب الذاكرة وتحسين مسارات الرموز البرمجية.
يمكنك الاطّلاع على قائمة موجزة بالتغييرات في ما يلي:
الميزات الجديدة في 1.2
- إضافة لقطة تجريبية غير آمنة للدخول/مغادرة
- إضافة واجهة برمجة التطبيقات التجريبية Snapshot.asContextElement
- تقديم Snapshot.without ReadNote
- السماح بتحرّك الحالة ضمن مقطوعة موسيقية
- تتبُّع عمليات إعادة الإنشاء في Compose
الأداء في 1.2
- تحسين الأداء المحلي في مجال تأليف الأغاني
- يجب اشتقاق الملفات الشخصية المرجعية لإنشاء الرسائل باستخدام مقاييس الأداء.
إصلاح الأخطاء في 1.2
- إزالة معلومات التتبّع من نطاقات إعادة إنشاء الإصدار
- منع إزالة الحالة المشتقّة من التركيب عند قراءتها في نطاقات أخرى
- استخدام removeScope() أكثر كفاءة في SnapshotStateObserver
- إزالة العناصر التابعة للحالة المستمدة من التكوين
- إصلاح تغيير الحاليCompositeKeyHash بعد إعادة التركيب الداخلي داخل المحتوى القابل للنقل
- إزالة التركيبات التي تم إبطال صلاحيتها أثناء التخلص منها
- إصلاح حالة اشتقاق البيانات التي تمت قراءتها أثناء إعادة التركيب
- إصلاح تسرُّب الذاكرة عند مراقبة عناصر الحالة المشتقّة
- تم إصلاح مفتاح التجزئة المركّب لـ movableContent ليصبح متسقًا
- إصلاح زاوية حالة تعطّل فيها الملحّن
- ضمان الإلغاء الإجباري لفرض إعادة هيكلة مجموعة
- إصلاح الخطأ عند تذكُّر أنّه يمكن استعادة البيانات بترتيب غير صحيح باستخدام البيانات التي تم إدخالها
الإصدار 1.2.0-rc03
29 حزيران (يونيو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc03
. يحتوي الإصدار 1.2.0-rc03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- كانت ملاحظات الحالة المشتقة في السابق تمت إزالتها بلا شروط من النطاق والتكوين معًا، مما أدى إلى تعطيل النطاقات الأخرى التي ربما لا تزال تراقب الحالة الناتجة. يؤدي هذا التغيير إلى إزالة مثيلات الحالة المستمدة فقط إذا لم تعد ملاحظتها في نطاقات أخرى. (b/236618362)
الإصدار 1.2.0-rc02
22 حزيران (يونيو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc02
. يحتوي الإصدار 1.2.0-rc02 على هذه عمليات التنفيذ.
الإصدار 1.2.0-rc01
15 حزيران (يونيو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- يتم الآن إنشاء الواجهات في مكتبات الإنشاء باستخدام طرق الواجهة التلقائية jdk8 (I5bcf1).
الإصدار 1.2.0-beta03
1 حزيران (يونيو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta03
. يحتوي الإصدار 1.2.0-beta03 على هذه الالتزامات.
الإصدار 1.2.0-beta02
18 أيار (مايو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على عمليات التنفيذ هذه.
الإصدار 1.2.0-beta01
11 أيار (مايو) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-beta01
. يحتوي الإصدار 1.2.0-beta01 على عمليات التنفيذ هذه.
الميزات الجديدة
- هذا هو أول إصدار تجريبي من 1.2!
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
Snapshot.unsafeEnter/unsafeLeave
التجريبي (I108f3) - تمت إضافة واجهة برمجة تطبيقات
Snapshot.asContextElement()
التجريبية (Iff072). - يمكن الآن استخدام تعليقات
@ComposableTarget
التوضيحية والتعليقات التوضيحية التي تم وضع علامة@ComposableTargetMarker
عليها على نطاق الملف باستخدام البادئة@file
. سيؤدي استخدام تعليق توضيحي هدف على نطاق الملف إلى أن تفترض أداة التحويل البرمجي أنّ جميع الدوال القابلة للإنشاء في الملف مُقصَدة لاستهداف تطبيق التطبيق المرتبط بها. على سبيل المثال، يشير استخدام@file:UiComposable
إلى أنّ جميع دوال@Composable
تستهدف تطبيق واجهة Compose. إنّ الدالة التي تحتاج إلى استهداف تطبيق آخر يجب أن توفّر بشكل صريح التعليق التوضيحي للعلامة المستهدفة للتطبيق المطلوب. (I40804)
الإصدار 1.2.0-alpha08
20 نيسان (أبريل) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha08
. يحتوي الإصدار 1.2.0-alpha08 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة
TracingInProgress
إلى واجهةCompositionTracer
. (Ic6f12) - إضافة
recomposeScopeIdentity
إلى Composer (I0c873) - تم تقييد واجهات برمجة التطبيقات للتتبّع (Composer.setTracer) على
OptIn(InternalComposeTracingApi)
. (I9187f) - تمت إضافة
ResuableContentHost
، ما يتيح التحكّم بشكل أفضل في تاريخ إنشاء المحتوى القابل لإعادة الاستخدام. على سبيل المثال، إذا لم يكن أحد التركيبات الفرعية مُستخدَمًا بشكل مؤقت، يمكن أن يتم إيقاف المحتوى، ما يؤدي إلى حذف كل الحالة التي يتم تذكرها في المقطوعة الموسيقية، ما يؤدي إلى حذف جميع التأثيرات القابلة لإعادة الاستخدام مثلاً. (I2c0f2، b/220322704)
الإصدار 1.2.0-alpha07
6 نيسان (أبريل) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha07
. يحتوي الإصدار 1.2.0-alpha07 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة الدالة الجديدة
Snapshot.withoutReadObservation { ... }
. تتيح هذه السياسة للمستخدمين تشغيل دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي تتم قراءتها أثناء هذا الحظر. قد تجدها مفيدة في حالات الاستخدام عندما تريد الاستفادة من الكتابة أو القراءة الآمنة لسلسلة المحادثات المستنِدة إلى اللقطة، ولكنك تريد التمكّن من قراءة القيمة بدون الحاجة إلى إعادة ابتكار أو إعادة قياس غير ضرورية. (I9f365، b/214054486)
الإصدار 1.2.0-alpha06
23 آذار (مارس) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha06
. يحتوي الإصدار 1.2.0-alpha06 على هذه عمليات التنفيذ.
الإصدار 1.2.0-alpha05
9 آذار (مارس) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha05
. يحتوي الإصدار 1.2.0-alpha05 على هذه عمليات التنفيذ.
مساهمة خارجية
- تم التحديث لاستخدام الكوروتينات في Kotlinx 1.6.0 (I3366d).
الإصدار 1.2.0-alpha04
23 شباط (فبراير) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha04
. يحتوي الإصدار 1.2.0-alpha04 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
تمت إضافة
ComposableTarget
وComposableTargetMarker
ComposableOpenTarget
التي تسمح بالإبلاغ عن وقت التجميع تسمى الدالة القابلة للإنشاء استهداف تطبيق لم يكن مصممة للاستخدام.في معظم الحالات، يمكن أن يتم استنتاج التعليقات التوضيحية بواسطة نافذة الإنشاء المكون الإضافي لبرنامج التحويل البرمجي، وبالتالي ينبغي أن يكون استخدام هذه التعليقات التوضيحية مباشرة نادر . تشمل الحالات التي لا يمكن استنتاجها إنشاء باستخدام تطبيق مخصص ودوال مجردة قابلة للإنشاء (مثل والحقول أو المتغيرات العمومية لامدا قابلة للإنشاء (يتم استنتاج المتغيرات والمعلمات المحلية) أو عند استخدام
ComposeNode
أو دوال ذات صلة قابلة للإنشاء.بالنسبة إلى التطبيقات المخصصة، تُستخدم الدوال القابلة للإنشاء التي تستدعي يجب على
ComposeNode
أوReusableComposeNode
إضافة التعليق التوضيحيCompoableTarget
للدالة وأي أنواع معلمات lambda القابلة للإنشاء. ومع ذلك، يوصى لإنشاء تعليق توضيحي قد تمت إضافة تعليقات توضيحية إليهComposableTargetMarker
ثم استخدام التعليق التوضيحي الذي تم وضع علامة عليه بدلاً منComposableTarget
مباشرةً. تعليق توضيحي قابل للإنشاء تم وضع علامةComposableTargetMarker
على أنه يعادلComposbleTarget
مع اسم السمة المؤهل بالكامل الفئة باعتبارها معلمة applier. للحصول على مثال على استخدامComposableTargetMarker
يُرجى الاطّلاع علىanroidx.compose.ui.UiComposable
. (I38f11)
الإصدار 1.2.0-alpha03
9 شباط (فبراير) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha03
. يحتوي الإصدار 1.2.0-alpha03 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
تمت إضافة
movableContentOf
، ما يؤدي إلى تحويل ملف قابل للإنشاء. لامدا في دالة lambda التي تنقل حالتها والعُقد المقابلة لها، إلى أي موقع جديد يتم تسميتها. عند مغادرة المكالمة السابقة والتكوين الذي يتم فيه الاحتفاظ بالولاية مؤقتًا، وإذا تمت استعادة تدخل كلمة lambda في المقطوعة الموسيقية ثم الولاية يتم نقل العُقد إلى موقع الاستدعاء الجديد. في حال عدم إجراء مكالمة جديدة تمت إزالة الحالة نهائيًا وتذكر أن المراقبين بشكل أفضل.إذا تم استدعاء دالة
movableContentOf
lambda عدة مرات بنفس يتم إنشاء حالة وعُقد جديدة لكل استدعاء، تترك المكالمات المقطوعة وتدخل المكالمات الجديدة، ويتم نقل الولاية بدءًا من أول مكالمات مغادرة وحتى الاتصالات الواردة بالترتيب الذي البيانات. تتم إزالة جميع الولايات التي لم تتم المطالبة بها في المكالمات الجديدة نهائيًا. (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
26 يناير 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha02
. يحتوي الإصدار 1.2.0-alpha02 على عمليات التنفيذ هذه.
الإصدار 1.2.0-alpha01
12 كانون الثاني (يناير) 2022
تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha01
. يحتوي الإصدار 1.2.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة حقل
identity
إلىCompositionData
لإنشاء معرفات ثابتة في عارض التخطيط. (Ic116e)
التحديثات المتعلقة بالاعتمادية
- تعتمد الآن على لغة
1.6.10
بلغة Kotlin.
الإصدار 1.1
الإصدار 1.1.1
23 شباط (فبراير) 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.1
. يحتوي الإصدار 1.1.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- إصلاح
NullPointerException
فيandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059، b/206677462) - إصلاح العطل الذي يسببه محتوى الحافظة أثناء القراءة من الحافظة على Android. (I06020، b/197769306)
- تم إصلاح اليمين من اليسار في
LazyVerticalGrid
(aosp/1931080، b/207510535)
الإصدار 1.1.0
9 شباط (فبراير) 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.0
. يحتوي الإصدار 1.1.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ الإصدار 1.0.0
- دعم ثابت لتأثير التمرير الزائد في Android 12
- تحسينات على حجم مساحة اللمس
- يُرجى العلم أنّه في ما يتعلّق بـ Compose 1.0، ستعمل مكونات التصميم المتعدد الأبعاد على توسيع مساحة التصميم الخاصة بها لاستيفاء إرشادات تسهيل استخدام المواد من أجل حجم هدف اللمس. على سبيل المثال، سيتم توسيع مساحة اللمس المستهدفة للزر إلى حد أدنى للحجم يبلغ
48x48dp
، حتى في حال ضبط حجم الزر ليكون أصغر. يؤدي ذلك إلى مواءمة مادة Compose مع سلوك مكونات التصميم المتعدد الأبعاد نفسه، ما يوفّر سلوكًا ثابتًا إذا مزجت بين طرق العرض و"الإنشاء". ويضمن هذا التغيير أيضًا استيفاء الحدّ الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات "مواد إنشاء المحتوى". - دعم ثابت لـ شريط التنقل
- ترقية عدد من واجهات برمجة التطبيقات التجريبية سابقًا إلى إصدار مستقر
- الدعم للإصدارات الأحدث من Kotlin
الإصدار 1.1.0-rc03
26 يناير 2022
تم طرح androidx.compose.runtime:runtime-*:1.1.0-rc03
. يحتوي الإصدار 1.1.0-rc03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم التعديل لدعم مواد Compose
1.1.0-rc03
.
الإصدار 1.1.0-rc01
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-rc01
. يحتوي الإصدار 1.1.0-rc01 على هذه عمليات التنفيذ.
الإصدار 1.1.0-beta04
1 كانون الأول (ديسمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta04
. يحتوي الإصدار 1.1.0-beta04 على عمليات التنفيذ هذه.
الميزات الجديدة
- تم التعديل للتوافق مع لغة "
1.6.0
" بلغة Kotlin.
الإصدار 1.1.0-beta03
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta03
. يحتوي الإصدار 1.1.0-beta03 على هذه الالتزامات.
الإصدار 1.1.0-beta02
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta02
. يحتوي الإصدار 1.1.0-beta02 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تم تقسيم رمز اللقطة إلى عدة ملفات، ولكن لا تزال جميع تتواجد في نفس فئة JVM. (Ic6c98)
الإصدار 1.1.0-beta01
27 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-beta01
. يحتوي الإصدار 1.1.0-beta01 على عمليات التنفيذ هذه.
الإصدار 1.1.0-alpha06
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha06
. يحتوي الإصدار 1.1.0-alpha06 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة
InternalCompilerApi
من طرق المؤلف التالية: مطلوب أن تُسمى "وحدات مشتركة" (I1aa0b) - تم إيقاف
Recomposer.state
واستبدالهRecomposer.currentState
لتغيير نوعه إلى StateFlow (Ic2ab3، وb/197773820)
الإصدار 1.1.0-alpha05
29 أيلول (سبتمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha05
. يحتوي الإصدار 1.1.0-alpha05 على هذه عمليات التنفيذ.
الإصدار 1.1.0-alpha04
15 أيلول (سبتمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha04
. يحتوي الإصدار 1.1.0-alpha04 على هذه عمليات التنفيذ.
الإصدار 1.1.0-alpha03
1 أيلول (سبتمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha03
. يحتوي الإصدار 1.1.0-alpha03 على هذه عمليات التنفيذ.
الميزات الجديدة
- أصبح محوّل إنشاء الرسائل متوافقًا الآن مع الإصدارات القديمة من "وقت تشغيل Compose" (1.0). قبل إجراء هذا التغيير، كانت "أداة إنشاء النصوص البرمجية" متوافقة فقط مع "وقت تشغيل Compose" للإصدار نفسه أو في إصدار أحدث. بعد هذا التغيير، يصبح Compose Compiler متوافقًا مع إصدار سابق من "وقت تشغيل Compose" (1.0). (aosp/1796968)
- تم تعديل سياسة ComposeAllowed التي تم تحديثها
1.1.0-alpha03
للاعتماد على لغة1.5.30
في لغة Kotlin. (I74545)
الإصدار 1.1.0-alpha02
18 آب (أغسطس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على عمليات التنفيذ هذه.
الإصدار 1.1.0-alpha01
4 آب (أغسطس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.1.0-alpha01
. يحتوي الإصدار 1.1.0-alpha01 على عمليات التنفيذ هذه.
الإصدار 1.0
الإصدار 1.0.5
3 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.5
. يحتوي الإصدار 1.0.5 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مثيلات الحالة المستمدة من تتبُّع الأعطال. (aosp/1792247)
الإصدار 1.0.4
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.4
. يحتوي الإصدار 1.0.4 على عمليات الالتزام هذه.
التحديثات المتعلقة بالاعتمادية
- تم التعديل لكي تعتمد على
1.5.31
بلغة Kotlin.
الإصدار 1.0.3
29 أيلول (سبتمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.3
. يحتوي الإصدار 1.0.3 على عمليات الالتزام هذه.
التحديثات المتعلقة بالاعتمادية
- تم التعديل لكي تعتمد على
1.5.30
بلغة Kotlin.
الإصدار 1.0.2
1 أيلول (سبتمبر) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.2
. يحتوي الإصدار 1.0.2 على عمليات الالتزام هذه.
تم التعديل لإتاحة إصدار 1.0.2
لميزة Compose. لا تزال ميزة إنشاء 1.0.2
متوافقة مع لغة 1.5.21
بلغة Kotlin.
الإصدار 1.0.1
4 آب (أغسطس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.1
. يحتوي الإصدار 1.0.1 على عمليات الالتزام هذه.
التحديثات المتعلقة بالاعتمادية
- تم التعديل لكي تعتمد على
1.5.21
بلغة Kotlin.
الإصدار 1.0.0
28 تموز (يوليو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0
. يحتوي الإصدار 1.0.0 على عمليات التنفيذ هذه.
الميزات الرئيسية للإصدار 1.0.0
هذا هو أول إصدار ثابت من Compose. يُرجى الاطّلاع على مدوّنة إصدارات Compose الرسمية للحصول على مزيد من التفاصيل.
المشاكل المعروفة
إذا كنت تستخدم Android Studio Bumblebee Canary 4 أو AGP
7.1.0-alpha04
/7.1.0-alpha05
، قد يحدث العُطل التالي:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف
build.gradle
. سيتم إصلاح هذه المشكلة في الإصدار التالي من Android Studio Bumblebee وAGP7.1
. (b/194289155)
الإصدار 1.0.0-rc02
14 يوليو 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc02
. يحتوي الإصدار 1.0.0-rc02 على عمليات التنفيذ هذه.
- إصلاح حالات العرق في SnapshotStateObserver والتي تؤدي إلى حدوث تشوّه NullPointerExceptions. (aosp/1763445 وaosp/1758105 وb/192677711)
- تم إصلاح المشاكل في لقطات بيئة التشغيل التي تسبّبت في حدوث أعطال في
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
. (b/193006595، b/192570897)
الإصدار 1.0.0-rc01
1 تموز (يوليو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc01
. يحتوي الإصدار 1.0.0-rc01 على هذه عمليات التنفيذ.
الإصدار 1.0.0-beta09
16 حزيران (يونيو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta09
. يحتوي الإصدار 1.0.0-beta09 على هذه الالتزامات.
قواعد الملف الشخصي المضافة
يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- .androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime.
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- .androidx.compose.ui.util
ما هي قواعد الملف الشخصي؟
تم تحديد قواعد الملف الشخصي للمكتبة في ملف نصي
baseline-prof.txt
فيsrc/main
أو في دليل مكافئ. يحدد الملف قاعدة في كل سطر، حيث تكون القاعدة في هذه الحالة نمطًا للمطابقة مع الطرق أو الفئات في المكتبة. تعتبر بنية هذه القواعد جزءًا رئيسيًا من تنسيق الملف الشخصي 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
2 حزيران (يونيو) 2021
تم طرح 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
18 أيار (مايو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta07
. يحتوي الإصدار 1.0.0-beta07 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات جديدة للمحول البرمجي تسمح سيتم إنشاء معلومات المصدر التي يتم إنشاؤها بواسطة برنامج التحويل البرمجي التي تمت إزالتها أثناء تصغير المصدر. (Ia34e6)
تقدم السياسة
ReusableContent
التي ستحاول إعادة استخدام عُقدًا في محتواها بدلاً من استبدالها عند الضغط على المفتاح التغييرات. عندما يتم تغيير المفتاح، فإن القيم السابقة في يتم تجاهل جدول الخانات الخاص بالمحتوى باستثناء العُقد التي تم إنشاؤها والقيم المستخدمة لتحديث العُقد.يقدّم
ReusableComposeNode
الذي سيعيد استخدام العقدة. المنبعثة بدلاً من استبدالها كما هي فيComposeNode
. (I1dd86)@ComposeCompilerApi
لم يعُد@RequiresOptIn
(Iab690)
إصلاح الأخطاء
- سيحتفظ العمود الكسول/الصف الآن بما يصل إلى عنصرَين نشطَين سابقًا (لا يتم التخلص منه) حتى عند الانتقال للأسفل أو للأعلى. يسمح هذا للمكون بإعادة استخدام الإنشاءات الفرعية النشطة عندما سنحتاج إلى إنشاء عنصر جديد يحسن أداء التمرير. (Ie5555)
الإصدار 1.0.0-beta06
5 أيار (مايو) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta06
. يحتوي الإصدار 1.0.0-beta06 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
@ComposeCompilerApi
لم يعُد@RequiresOptIn
(Iab690)
الإصدار 1.0.0-beta05
21 نيسان (أبريل) 2021
تم طرح 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
7 نيسان (أبريل) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta04
. يحتوي الإصدار 1.0.0-beta04 على عمليات التنفيذ هذه.
إصلاح الأخطاء
قبل إجراء هذا التغيير، كان بالإمكان تخطّي الدوال المحلية القابلة للإنشاء استنادًا إلى مَعلماتها. بعد هذا التغيير، لن يتم تخطّي أي دوال محلية قابلة للإنشاء. وتمّ إجراء هذا التغيير لأنّه من الشائع والمتوقّع أن تسجِّل الدوال المحلية المَعلمات من العنصر الرئيسي ويشكّل تخطّيها مصدرًا شائعًا للأخطاء.
للتلخيص، ضع في اعتبارك المثال:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
قبل هذا التغيير، كان يتم دائمًا تخطّي دالة
ShowCount
القابلة للإنشاء، حتى بعد تعديل مَعلمةcount
. لقد اختلف الوضع اليوم. (I5648a)تم إصلاح المشكلة التي كانت تحدث عندما كان يستعيد
rememberSaveable()
القيمة القديمة عند استخدامها مع مَعلمات الإدخال (I1b110، b/182403380)
الإصدار 1.0.0-beta03
24 آذار (مارس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta03
. يحتوي الإصدار 1.0.0-beta03 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف
DefaultMonotonicFrameClock
نهائيًا. إجراء المكالماتwithFrameNanos
أوRecomposer.runRecomposeAndApplyChanges
بدون سيطرح "MonotonicFrameClock
" الآن القيمة "IllegalStateException
". (I4eb0d)
الإصدار 1.0.0-beta02
10 آذار (مارس) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta02
. يحتوي الإصدار 1.0.0-beta02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- فرض قيود على الاستخدام العلني لواجهات برمجة التطبيقات التجريبية (I6aa29 وb/174531520)
- إصلاح
rememberSaveable { mutableStateOf(0) }
المعطّل عند استخدامه داخل وجهة إنشاء التنقل. (I1312b، وb/180042685، وb/180701630)
الإصدار 1.0.0-beta01
24 شباط (فبراير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.
هذا هو الإصدار الأول من الإصدار التجريبي من Compose 1.0.0.
التغييرات في واجهة برمجة التطبيقات
- إضافة الوضع "
Recomposer.runRecomposeConcurrentlyAndApplyChanges
" واجهة برمجة التطبيقات التجريبية لإعادة إنشاء المقطوعات الموسيقية التي تم إبطال صلاحيتها من واجهة برمجة التطبيقات حلقة الإطار. (I342d0) - يتم الآن التحقّق من صحة وقت التجميع لأي عناصر قابلة للإنشاء تم وضع علامة @ReadOnlyComposable عليها، وذلك لضمان إجراء اتصالات بـ @ReadOnlyComposables فقط (I58961).
defaultFactory
لـcompositionLocalOf
staticCompositionLocalOf
مطلوب الآن بدلاً من اختيارية.تؤدي هذه التغييرات إلى إزالة خطأ نوع محتمل لعناصر غير قابلة للقيم الفارغة التي لم يتم فيها توفير مصنع افتراضي. في السابق سيوفر مرجعًا فارغًا لنوع غير قابل للقيم الفارغة.
بالنسبة إلى الأنواع القابلة للقيم الفارغة، ننصحك بتقديم
{ null }
كإعداد تلقائي. المصنع.لا ننصح باستخدام مساحات محلية بأنواع غير قابلة للقيم الفارغة ما لم توفير طريقة افتراضية معقولة. إذا لم يكن هناك أي جهاز افتراضي معقول، يجب أن تطرح دالة
defaultFactory
lambda استثناءً. لكن طرح استثناء يعني أن المستهلكين المحليين سيكون لديهم تبعية ضمنية يتم تقديمها ولا يتم فرضها من خلال نظام الكتابة. (Ifbd2a)تمت إزالة الرموز المتوقّفة نهائيًا من وقت تشغيل الإنشاء (I3252c).
تمت إزالة
emptyContent()
المتوقفة. يمكنك استخدام{}
كبديل. (Idb33f، b/179432510)تمت إعادة تسمية مقدّمي الخدمات إلى HeadlineLocalProvider.
- لم تعد طريقة إنشاء المقطوعة الموسيقية تقبل معلَمة رئيسية، وتم إيقافها نهائيًا.
- تم تحويل currentCompositeKeyHash إلى سمة مستوى أعلى قابلة للإنشاء بدلاً من دالة مستوى أعلى قابلة للإنشاء.
- تم نقل GenreData وSurfaceGroup إلى مساحة الاسم androidx.compose.runtime.tooling
- تم إنشاء واجهة ComposableLambda بدلاً من فئة خرسانة ولم تعد تحتوي على معلمات من النوع.
- تم إنشاء واجهة ComposableLambdaN بدلاً من فئة خرسانية ولم تعد تحتوي على معلمات من النوع.
- تم نقل الدالة sampleFlow إلى مساحة الاسم androidx.compose.runtime.
- فطريقة دمج SnapshotMutationPolicy لم تعد تجريبية
- تمت إزالة الدالة clearRoots ذات المستوى الأعلى @TestOnly. لم يعد من الضروري استخدامه.
- تمت إزالة الدالتين keySourceInfoOf وresetSourceInfo. لم تعد ضرورية.
- تمت إزالة Composer.collectKeySource Information. لم يعد من الضروري استخدامه.
- تمت إزالة طرق isJOINedKey وjoinKeyLeft وjoinKeyRight. لم تعد ضرورية.
- تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. وبسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى تعطيل التوافق الثنائي ولكن ليس التوافق مع المصدر، لذا من المفترض ألا يمثّل ذلك مشكلة لمعظم المستخدمين.
- (I99b7d، b/177245490)
SnapshotStateObserver لم يعد تجريبيًا (Id2e6a)
تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da، وb/178633932).
تم إجراء التغييرات التالية على Material API:
- تمت إضافة مَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
- المعلَمات المُعاد ترتيبها في BackdropScaffold لاتّباع إرشادات واجهة برمجة التطبيقات للمَعلمات المطلوبة قبل المَعلمات الاختيارية.
- تم نقل المعلمة
icon
في Bottom NavigationItem ليكون بعدselected
وonClick
. - تمت إعادة تسمية المعلَمة
alwaysShowLabels
في Bottom NavigationItem إلىalwaysShowLabel
. - تمت إعادة تسمية معلَمات
bodyContent
في بعض المكوّنات لتصبحcontent
فقط. - تم إعادة ترتيب المعلمات في
ButtonDefaults.buttonColors()
. تجدر الإشارة إلى أنّه نظرًا لعدم تغيير نوع المَعلمات، لن يتسبب ذلك في حدوث خطأ في الرمز، لذا يُرجى التأكد من استخدام المَعلمات المُسَمّاة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز كما كان في السابق. - تمت إضافة المَعلمة
secondaryVariant
إلىdarkColors()
. عادةً ما يكون هذا اللون هو نفسه اللونsecondary
في المظهر الداكن، ولكنّه تتم إضافته لتوفير المزيد من الاتّساق وتخصيص المحتوى. - تمت إزالة EliffationDefaults وanimateEliffation() من واجهة برمجة التطبيقات العامة نظرًا لعدم استخدامهما بشكل شائع أو الاستفادة منهما.
- تمت إعادة تسمية
onValueChangeEnd
فيSlider
إلىonValueChangeFinished
وجعله قابلاً للقيم الفارغة. - تمت إعادة تسمية المعلَمة
text
فيSnackbar
إلىcontent
لتحقيق الاتساق. - تمت إضافة المَعلمة
contentPadding
إلىDropdownMenuItem
للسماح بتخصيص المساحة المتروكة التلقائية وتم جعلcontent
إضافة فيRowScope
. - تمت إعادة تسمية "
ModalDrawerLayout
" إلى "ModalDrawer
". - تمت إعادة تسمية "
BottomDrawerLayout
" إلى "BottomDrawer
". - (I1cc66)
الإصدار 1.0.0-alpha12
10 شباط (فبراير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha12
. يحتوي الإصدار 1.0.0-alpha12 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إزالة دعم ViewGroups من UiApplier. تمت إزالة عناصر emitView القابلة للإنشاء المتوقّفة. (Ifb214)
- تمت إعادة تسمية GenreReference إلى ChocolateContext (I53fcb)
- تم نقل ComponentActivity.setContent إلى استخدام androidx.activity.compose.setContent في وحدة androidx.activity:activity-compose. (Icf416)
- تم تحديث Snapshot API لتصبح أكثر اتّساقًا مع إرشادات واجهة برمجة التطبيقات بالإضافة إلى إخفاء فئات التنفيذ الداخلي من واجهة برمجة التطبيقات العامة. (Id9e32)
- تمت إعادة تسمية "وضع الاستراحة" ليتوافق مع "وضع الاستراحة" -> إعادة تسمية GenreLocal. كان يُطلق على "الأحياء" اسم AmbientFoo، أمّا الآن GenreLocals، فهو يطلق عليه LocalFoo. (I2d55d)
- تمت إعادة تسمية Ambient إلى SurfaceLocal، وAmbiOf / staticAmbientOf، إلى composeLocalOf / static المؤلفLocalOf. يساعد هذا التغيير في توضيح الغرض من SurfaceLocal: وهي آلية لتوفير أو استرداد القيم المحلية في المقطوعة الموسيقية. يجب أن تبدأ مثيلات ChocolateLocal بـ
Local
، مثل val LocalFoo = distributionLocalOf { Foo() }. (Ia55b6) - cannot translate لتصبح طرقًا مصاحبة لـ Snapshot. (I91f19)
تم إيقاف
@ComposableContract
نهائيًا لصالح ثلاثة تعليقات توضيحية أكثر تحديدًا.تغيّر اسم "
@ComposableContract(restartable = false)
" إلى "@NonRestartableComposable
" أصبح@ComposableContract(readonly = true)
@ReadOnlyComposable
تغيّر اسم "@ComposableContract(preventCapture = true)
" ليصبح@DisallowComposableCalls
. تمت إزالة@ComposableContract(tracked = true)
. (I60a9d)تم إيقاف الأدوات فارغة ( @Composable () و(@Composable ()) -> Unit).or وسيئًا () لأنّه لم يعُد له أي تأثير أو قيمة إيجابية في الأداء (I0484d).
لم يعُد
snapshotFlow
وwithMutableSnapshot
تجريبي (I6a45f)أصبح بالإمكان الآن إغلاق أدوات إعادة التركيب. ستنفّذ أدوات إعادة الإنشاء المغلقة حتى تكتمل عملية تكوين الكوروتينات الثانوية. تمت إعادة تسمية Recomposer.shutDown للإلغاء إلى "التباين" مع "إغلاق". (Ib6d76)
تم إيقاف عنصر
compose:runtime-dispatch
نهائيًا. يمكن الآن العثور على MonotonicFrameClock في إنشاء:وقت التشغيل يمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي للمحول البرمجي في Compose تمت إعادة هيكلته لاستخدام واجهة بدلاً من محددة. لم تعد الواجهة تستخدم معلمة نوع.
هذا تغيير داخلي يجب ألا يؤثر في المصدر التوافق مع التعليمات البرمجية ولكنه تغيير فاصل ثنائي. (I3b922، b/169406779)
تم تقديم SnapshotMutableState (Icfd03).
تمت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (Ica7c6).
تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم ضبط الإعدادات التلقائية على أدوات إعادة إنشاء على مستوى النافذة بشكل كسول والمستندة إلى ViewTreeLifecycleOwner للنافذة. إعادة التركيب يتم إيقاف علامات الصور المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء فترة حياة المضيف متوقف. (I38e11)
توفّر Recomposer.runningRecomposers الآن سلسلة StateFlow العالمية من RecomposerInfo للقراءة فقط لمراقبة حالة المقطوعة الموسيقية المستمرة في العملية. تفضيل واجهة برمجة التطبيقات هذه على Recomposer.current()، والتي أصبحت الآن نهائيًا. (If8ebe)
تمّت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (I3ea68).
الإصدار 1.0.0-alpha11
28 يناير 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha11
. يحتوي الإصدار 1.0.0-alpha11 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهات برمجة التطبيقات SideEffect وDisposableEffect API (If760e).
- تم نهائيًا إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائدة وإعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكن باسم مختلف فقط لاتباع اصطلاحات التسمية في Compose (I4137b)
- تم إيقافableate وCompateReference() نهائيًا لصالح currentRecomposeScope و"تذكُّر لبطاقة تحكُّم مستخدمة" على التوالي. (I583a8)
يستبدل تذكرObserver واجهة ConnectionLifecycleObserver وقد تم إيقاف ConnectionLifecycleObserver نهائيًا.
يُعد
RememberObserver
بديلاً لـCompositionLifecycleObserver
مع دلالات دلالية معدّلة الطرق التي تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة آليًا للكائنات التي لا يتم تذكرها سوى مرة واحدة والتي لا تزال هو الممارسة الموصى بها. ومع ذلك، إذا تم تحديد مرجع يتم تذكرها أكثر من مرة في المقطوعة الموسيقية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
13 كانون الثاني (يناير) 2021
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha10
. يحتوي الإصدار 1.0.0-alpha10 على هذه عمليات التنفيذ.
كسر التغيير
إعادة هيكلة برنامج التحويل البرمجي الداخلي تسمح واجهة برمجة التطبيقات بتجميع التغييرات على العُقد التي تم إنشاؤها نتيجة للتركيب في "تطبيق التغييرات" مرحلة التركيب، بعد كل دوال
@Composable
قد أكملتها.هذا خرق سلوكي التغيير الذي قد يؤثر على رمز التطبيق لم تعد متاحة من العُقد الداخلية واجهات برمجة التطبيقات التجريبية إلى أن يتم تطبيق التغييرات المنهجية. يمكن حل هذا عادةً من خلال التعليمات البرمجية المحيطة بهذه التبعيات في
SideEffect
قابل للإنشاء لتأجيل تنفيذ التعليمة البرمجية إلى أن يتم إنشاء العقد التهيئة. (I018da)
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة طريقة لتتبع ما إذا كان قامت أداة إعادة الإنشاء بتطبيق التغييرات. (I1b3e2)
توسيع واجهات برمجة تطبيقات ComposeView للسماح بإعادة التدوير مشاهدات من خلال التأليف مع عرض المقطوعات الموسيقية لإعادة ابتكارها لاحقًا. إضافة واجهات برمجة تطبيقات لتثبيت أدوات إعادة الإنشاء على مستوى النافذة واكتشافها و ComposeReferences لإنشاء مقطوعات موسيقية فرعية.
أضِف ViewCoverStrategy لإعداد ميزة التخلّص من المقطوعة الموسيقية. استراتيجية [Abstract]ComposeViews السلوك الافتراضي هو التخلص من من بين النوافذ. (I860ab)
إصلاح الأخطاء
- تعرض أداة إعادة الإنشاء الآن تدفقًا لحالتها الحالية، ما يسمح مراقبة نشاطه ونشاط التأثيرات المرتبطة به. (Ifb2b9)
- يمكن الآن الوصول إلى حدث keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397)
الإصدار 1.0.0-alpha09
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha09
. يحتوي الإصدار 1.0.0-alpha09 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
تمت إزالة سلوت Table وقارئ خانة TableauWriter من واجهة برمجة التطبيقات العامة. تم وضع علامة على هذه المهام على أنها داخلية ComposeAPI سابقًا. وهي الآن داخلية إلى وحدة الإنشاء.
تمّت إضافة لأجهزة ComposeData وSurface Group كـ لاستبدال واجهة برمجة تطبيقات أدوات ui لاستخدامها من أجل استخراج المقطوعة الموسيقية. هذه الإعلانات متاحة للجميع، ولكنّها ليست مُعَدة للاستخدام خارج واجهة برمجة تطبيقات ui-tooling API، وذلك لأنها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling API (I31a9c)
لم تعُد فئة Applier تُعتبر (Id85b0).
تم تغيير الواجهة
Applier
لتبسيط بناء الأشجار من أسفل إلى أعلى بدلاً من من أعلى إلى أسفل.تمت إعادة تسمية الطريقة
insert()
إلىinsertTopDown()
.تمت إضافة طريقة جديدة،
insertBottomUp()
.يُدرج التطبيق العُقد في الشجرة التي يعدّلها استخدام
insertTopDown()
أوinsertBottomUp()
حسب أيهما أفضل أداءًبعض الأشجار، مثل
LayoutNode
وView
، أكبر بكثير أكثر كفاءة في البناء من أسفل إلى أعلى من إنشاءه من أعلى إلى أسفل. قبل هذا التغيير، كان هناك حاجة إلى حزمة من الإدخالات لتنفيذ التغييرات من الأسفل إلى الأعلى يجب نسخه إلى كل تطبيق يحتاج إلى ترتيب الإنشاء من أجل الأداء. مع هذا التغيير،Applier
تلغيinsertBottomUp()
لإنشاء ترتيب متدرج من الأسفل إلى الأعلىinsertTopDown()
لبناء الشجرة من أعلى إلى أسفل (Icbdc2)تدعم ميزة Compose رموز الحصول على الخصائص التي يمكنها إنشاء استدعاءات قابلة للإنشاء. لن يتم إيقاف هذا الأمر، ولكن ستتغير بنية إعلان دالة getter عن الخاصية على أنها @Composable.
كانت الصيغة التي تم إيقافها نهائيًا الآن لإجراء ذلك هي من خلال إضافة تعليقات توضيحية إلى السمة نفسها:
@Composable val someProperty: Int get() = ...
بناء الجملة الصحيح الآن للقيام بذلك هو من خلال إضافة تعليق توضيحي للخاصية:
val someProperty: Int @Composable get() = ...
ستعمل كلتا البنيتين لبعض الوقت، ولكن البنية السابقة المتوقّفة ستصبح في النهاية خطأ في التجميع. (Id9197)
إصلاح الأخطاء
- AndroidOwner تم إنشاؤه داخليًا (Ibcad0، b/170296980)
- تم إنشاء subcomposeInto(LayoutNode) داخليًا (Id724a)
الإصدار 1.0.0-alpha08
2 كانون الأول (ديسمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha08
. يحتوي الإصدار 1.0.0-alpha08 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة فحص Lint لتسمية مَعلمات lambda القابلة للإنشاء وتحديد موضعها، وذلك للتحقّق من الاتساق مع إرشادات Compose.
تم أيضًا نقل بعض واجهات برمجة التطبيقات باستخدام
children
كاسم لملف lambda اللاحقة إلىcontent
، وفقًا لفحص Lint والإرشادات. (Iec48e) - لم تعد أداة إعادة الإنشاء تقبل EmbeddingContext. مطلوب تحديد خيار من تبعيات الجدولة التي يتم الحصول عليها من eventCoroutineContext. تم إيقاف FrameManager نهائيًا. ينبغي أن تبدأ عمليات تكامل النظام الأساسي طريقة معالجتها للّقطات العالمية. (I02369)
- تمت إعادة تسمية الدالة RestorableStateHolder.withRestorableState لتصبح RestorableStateProvider (I66640).
إصلاح الأخطاء
- تم إيقاف "وضع الاستراحة" نهائيًا باستخدام اللاحقة
Ambient
، واستبدلها بسمات جديدة تبدأ بـ "وضع الاستراحة"، وذلك وفقًا لإرشادات واجهة برمجة التطبيقات الخاصة بميزة "بيئة المحيطة" و"Compose" الأخرى. (I33440) - إزالة وحدة اختبار واجهة المستخدم القديمة وأذرعها (I3a7cb)
الإصدار 1.0.0-alpha07
11 تشرين الثاني (نوفمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.
الميزات الجديدة
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف التعليق التوضيحي
@UnionType
نهائيًا (I57cde) - تمت إضافة provideDefault كبديل لتوفير البيئة المحيطة، ويمكن استخدامه لتحديد القيم المحيطة التي لن يتم ضبطها إلا في حال عدم توفّر قيمة البيئة المحيطة. (Id6635، b/171024925)
- تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لتحقيق الاتساق مع واجهتَي برمجة التطبيقات SideEffect وDiveEffect. LaunchedEffect بدون لا يُسمح بمعلمات الموضوع للتشجيع على أفضل الممارسات. (Ifd3d4)
- لدى Applier الآن استدعاءات onStartupChanges/onEndChanges التي سيتم استدعاء هذه العملية عند بدء/انتهاء مُلحِّن من تطبيق التغييرات على الشجرة. ويمكن استخدام هذه البيانات لتجميع الموارد إذا لزم الأمر. (Icf476)
- تتطلّب أداة إعادة الإنشاء الآن توفُّر CoroutineContext عند الإنشاء (Ic4610).
- التغييرات التي تطرأ على تنفيذ جدول الشريحة الداخلية في واجهة برمجة التطبيقات العامة. (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
28 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- أصبحت الآن أداة إعادة إنشاء مرجعًا تابعًا للمقطوعة الموسيقية الأصل للمقطوعة الموسيقية. أصبحت أداة إعادة الإنشاء الصريح مطلوبة الآن في عدد أقل من الأماكن. (I4036f)
- تمت إضافة واجهة برمجة التطبيقات DiscableEffect API إلى SideEffect،
دور onCommit-with-params، ولكن مع استخدام onDispose.
- تمت إضافة واجهة برمجة التطبيقات writeUpdatedState لنشر البيانات من إعادة الإنشاء إلى العمليات الجارية أو طويلة الأجل مثل DisableEffects أو LaunchedTasks.
- (المعرّف 50b9)
- تنفِّذ MutableVector الآن دالة SpamAccess (I85d73، وb/170461551).
- تمت إضافة التأثير الجانبي القابل للإنشاء لتطبيق الآثار الجانبية التكوين مع الكائنات التي تديرها المقطوعة. SideEffect هو لاستبدال onCommit قابل للإنشاء. (Ia77c2)
- واجهة برمجة تطبيقات جديدة تجريبية، RestorableStateHolder. تسمح هذه الأداة بحفظ الحالة المحددة بـ [savedInstanceState] و[rememberSavedInstanceState] للشجرة الفرعية قبل التخلص منها ليصبح من الممكن تأليفها مرة أخرى في المرة القادمة مع الحالة التي تمت استعادتها. (I66884، b/166586419)
إصلاح الأخطاء
- تفعيل الانتقالات في ComposeTestRule إزالة الخيار إلى تفعيل المؤشر الوامض من ComposeTestRule. (If0de3)
الإصدار 1.0.0-alpha05
14 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- الإصدار التجريبي من Modifier.pointerInput لتعديل إدخال التعليق (Ia77d2)
- يتم تحسين أداء التمرير في عمود LazyColumn/Row من خلال تقليل العمل في الإنشاء الفرعي في كل تمرير. تمت إضافة طريقة has invalidations() الجديدة لفئة المقطوعة الموسيقية. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasValidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
- إضافة واجهة برمجة تطبيقات productState لتشغيل الكوروتين من التركيبة
تعمل على تعديل قيمة
State<T>
واحدة بمرور الوقت (Id4a57) - تمت إعادة تسمية launchInConnection إلى LaunchedTask لمطابقة Compose. إرشادات واجهة برمجة التطبيقات (I99a8e)
- يحدِّد ترتيب استدعاءات Place() في التنسيقات المخصّصة الآن ترتيب الرسم للعناصر الثانوية (Ibc9f6)
الإصدار 1.0.0-alpha04
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة OwnerScope للسماح بجمع تخطيط ورسم نطاقات الملاحظة بمجرد لم يعد صالحًا. (Ic4cf8)
- تمت إضافة واجهة برمجة التطبيقاتedStateOf API لإنشاء كائنات الحالة استنادًا إلى عملية حسابية قد تقرأ (وتستنتج من) كائنات الحالة الأخرى (If758b).
- تمت إضافة واجهة برمجة التطبيقات TestOnly API الخاصة بتطبيق SnapshotStateObserver (I6e2a9).
إصلاح الأخطاء
- تم إيقاف Foundation.Box نهائيًا. يُرجى استخدام Foundation.layout.Box بدلاً من ذلك. (Ie5950، b/167680279)
الإصدار 1.0.0-alpha03
16 أيلول (سبتمبر) 2020
تم طرح 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
2 أيلول (سبتمبر) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- إضافة واجهتَي برمجة تطبيقات
snapshotFlow
وwithMutableSnapshot
للاستهلاك وإنتاج تغييرات في بيانات اللقطة. (I3e722) يتضمن اصطلاح الاستدعاء للدوال القابلة للإنشاء بتغييره. وهذا التغيير يؤدّي إلى كسر ثنائي. يجب أن تكون جميع المكتبات للعمل مع هذا الإصدار من المكون الإضافي للمحول البرمجي للإنشاء.
لا يؤدي هذا التغيير إلى حدوث تغيير فاصل على مستوى المصدر فقط واجهات برمجة التطبيقات التي تم تغييرها هي واجهات برمجة تطبيقات للتجميع البرمجي تشتمل على الاشتراك. (I7afd2، b/158123185)
تمت إزالة طرق الجدولة من EmbeddingContext (I7b9be)
تم إيقاف onPreCommit نهائيًا. لدى onCommit الآن عناصر onPreCommit السلوك.
يعمل onCommit وonActive الآن في نفس إطار مصمم الرقصات الذي التغييرات التي تطرأ على المقطوعة الموسيقية بدلاً من في بدايتها لإطار مصمم الرقص التالي. (I70403)
الإصدار 1.0.0-alpha01
26 آب (أغسطس) 2020
تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على عمليات التنفيذ هذه.
الإصدار 0.1.0-dev
الإصدار 0.1.0-dev17
19 آب (أغسطس) 2020
تم طرح 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() ، وقد تم تعديل واجهة برمجة تطبيقات UiSavedStateRegistry لهذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).
إصلاح الأخطاء
- تم إيقاف
emitView
نهائيًا. استخدمAndroidView
بدلاً من ذلك إن أمكن لإرسال طرق العرض داخل Compose. تجدر الإشارة إلى أنّه لن تتوفّر إمكانية إنشاء "طرق العرض" و"ViewGroups" مباشرةً في المستقبل ما لم تتم إزالتها في شجرة الإنشاء، في حال توفّرت هذه الطريقة في AndroidView. (I29b1e، b/163871221)
الإصدار 0.1.0-dev16
5 آب (أغسطس) 2020
تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev16
. يحتوي الإصدار 0.1.0-dev16 على هذه العمليات.
التغييرات في واجهة برمجة التطبيقات
تمثّل سياسة التغيير التلقائية
mutableStateOf()
، تم تغييرambientOf()
وsavedInstanceStateOf()
ليكوناstructuralEqualityPolicy()
بدلاً منreferentialEqualityPolicy()
الإعداد الافتراضي لتحديد ما إذا كان قد تم تعيين قيمة جديدة يُعتبر المثيل
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 هي AnimationClockObserverable لسد الفجوة بين الساعات الجديدة المستندة إلى الكوروتينات وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القائمة على معاودة الاتصال.
أصبح الآن MonotonicFrameClock المكافئ لـ guideAnimationClock الساعة اليدوية. (I111c7، b/161247083)
تمت إعادة صياغة Modifier.stateDraggable بالكامل وإعادة تسميتها إلى Modifier.scacheable. تم طرح فئة جديدة لـ ShortableState، تمت إعادة ضبط DrawerState وBottomDrawerState، ليتم اكتسابه منها. [Modal/Bottom]لم يعد DrawerLayout يستخدم معلمة onStateChange. (I72332، b/148023068)
تم إيقاف Modifier.plus نهائيًا، لذا يُرجى استخدام Modifier.ثم بدلاً من ذلك. "ثم" لديه إشارة أقوى للطلب، بينما يمنع أيضًا كتابة
Modifier.padding().background() + anotherModifier
، ما يؤدي إلى كسر السلسلة ويصعب قراءته (Iedd58، b/161529964)تمت إضافة SubcomposeLayout. وهي دالة بدائية منخفضة المستوى تتيح تكوين الأطفال أثناء القياس إذا أردنا استخدام بعض القيم المتاحة فقط في وقت لاحق أثناء قياس تكوين الشجرة الفرعية. على سبيل المثال، لا يتم تنفيذ WithConstraints باستخدام SubcomposeLayout. (I25cc8)
تمت إعادة تسمية Material filledTextField ليصبح TextField، كما تمت إعادة تسمية حقل TextField الأساسي إلى BaseTextField لتسهيل العثور على واجهة برمجة التطبيقات المطلوبة واستخدامها (Ia6242، وb/155482676).
تمت إعادة تسمية Modifier. drawBackground إلى Modifier.background (I13677).
الإصدار 0.1.0-dev15
22 تموز (يوليو) 2020
تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev15
. يحتوي الإصدار 0.1.0-dev15 على هذه العمليات.
تحديث التبعيات
- لاستخدام إصدار
0.1.0-dev15
من Compose، عليك تعديل العناصر الاعتمادية. وفقًا لمقتطفات الرمز الجديدة الموضّحة أعلاه في بيان التبعيات.
التغييرات في واجهة برمجة التطبيقات
تم الآن إيقاف التعليق التوضيحي
@Model
نهائيًا. استخدِم State وmutableStateOf كبدائل. وقد تم التوصل إلى قرار الإيقاف هذا بعد الكثير من المناقشات المتأنية.السبب
وتشمل الأسباب، على سبيل المثال لا الحصر، ما يلي:
- تقليل مساحة عرض واجهة برمجة التطبيقات والمفاهيم التي نحتاج إلى تدريسها
- تتوافق بشكل أكبر مع مجموعات الأدوات الأخرى المشابهة (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 } ) }
الخيار البديل 1: استخدام
State<OriginalClass>
وإنشاء نُسختم تسهيل هذا النهج باستخدام فئات بيانات Kotlin. بشكل أساسي، يمكنك تحويل جميع سمات
var
السابقة إلى سماتval
من فئة بيانات، ثم استخدامstate
بدلاً منremember
، وتعيين قيمة الحالة للنُسخ المستنسَخة من الأصل باستخدام طريقة تسهيل فئة البيانات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) } ) }
البديل 2: استخدام التفويضات في حالة الميزات القابلة للتغيير ومفوَّضي الملكية
وقد تم تسهيل هذه الطريقة باستخدام ميزة تفويض السمة في Kotlin وواجهة برمجة التطبيقات
mutableStateOf
التي تتيح لك إنشاء مثيلات 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/143263)Ⴏ
يغيّر استراتيجية إنشاء الرموز البرمجية للمحول البرمجي في Compose. قبل التغيير، كان المحول البرمجي للإنشاء يحول الاستدعاءات إلى دوال قابلة للإنشاء. مع هذا التغيير، نحوّل الآن نص دالة قابلة للإنشاء ونترك موقع الاتصال بدون تعديل (في الغالب).
هذا يعني أن معظم المنطق الذي يتواصل مع بيئة تشغيل الإنشاء يحدث في بداية نص الدالة، بدلاً من موقع الاتصال.
يجب أن يكون هذا التغيير متوافقًا مع المصدر لجميع استخدامات Compose. يجب ألا يضطر معظم مستخدمي واجهة برمجة التطبيقات إلى تحديث أي رمز نتيجة لهذا التغيير.
ولدعم هذا العمل، تغيّر توقيع JVM لجميع الدوال القابلة للإنشاء. تتحول الدالة القابلة للتعديل التي تقبل معلمة واحدة إلى دالة تقبل 3 معلمات، والمعلمات الإضافية هي Composer، وهو عدد صحيح 'key'. عدد صحيح لقناع البت يُستخدم لنشر البيانات الوصفية عبر الاستدعاءات.
تعمل ميزة "إنشاء" الآن على تحويل الوسيطات التلقائية إلى دالة قابلة للإنشاء. ويتم ذلك بدون إدخال حِمل زائد اصطناعي إضافي تلقائي على الدالة نفسها، وبالتالي سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.
التغييرات السلوكية المقصودة المعروفة الناتجة عن ما يلي:
- سيتم تخطّي بعض المكالمات إلى الأماكن التي لم يكن ممكنًا إجراؤها سابقًا
- التعبيرات القابلة للإنشاء في تعبيرات الوسيطات التلقائية مشتركة الآن وتعالجها بشكل صحيح
وتضمّن هذا العمل بعض التحسينات: 1- يتم نشر نتيجة مقارنات المعلَمات من خلال الرسم البياني للاستدعاء إلى دوال أخرى قابلة للإنشاء. سيؤدي ذلك إلى تقليل المقارنات في وقت التشغيل، وتقليل حجم جدول الخانة، وتخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها في السابق. 2- إنّ المقاييس التي يتم تحديدها على أنّها "ثابتة" في وقت التجميع لا تتم مقارنتها أو تخزينها في بيئة التشغيل بعد الآن. وهذا ما يقلّل من عدد المقارنات ويقلّل حجم جدول الخانة. 3- يتم استخدام هيكل تدفق التحكم في نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يقلل هذا من حجم جدول الخانة ويؤدي إلى تقليل العمل في بيئة التشغيل 4- لا يتم تضمين معلمات الإرسال والاستقبال غير المستخدمة للدوال في تحديد قابلية تخطي الدالة في حال عدم استخدامها داخل نص الدالة.
كانت معظم التغييرات التي قد تؤدي إلى أعطال في واجهات برمجة التطبيقات التي يستهدفها المحول البرمجي بشكل مباشر، ولن يتأثر الاستخدام المعتاد للإنشاء: 1- تمت إزالة Composer::startExpr. 2- تمت إزالة Composer::endExpr. 3- تم إيقاف Compose::call نهائيًا 4- تمّت إزالة الأحمال الزائدة للسمة
key
والتي لا تتضمّن أيّ اختلافات. وسيتم استخدام إصدارvararg
من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي المحوري نهائيًا. يمكنك استخدامkey
كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع دالة 3 بدلاً من Function1. 7. تم تحديث autoableFunction وacceptableFunctionN بحيث تتضمن معلمات إضافية لوقت التجميع. (I60756، b/143464846)تمت إضافة sortWith وRemoveRange إلى MutableVector (Icccf7)
تمت إضافة عمليات تنفيذ الطرق التلقائية لـ SegmentLifecycleObserver (I24289)
يتطلب Applier الآن طريقة clear() للتخلص من المقطوعات الموسيقية (Ibe697)
تمت إضافة asMutableList() إلى MutableVector للسماح بذلك. يتم تمريره إلى واجهة برمجة تطبيقات عامة بدون الحاجة إلى نسخ الحالية. (I298df)
تمت إضافة writeCoroutineScope() للحصول على قاعدة بيانات مُدارة. منصة CoroutineScope لإطلاق الوظائف استجابةً للأحداث (I0e264)
وMutableVector هي مجموعة جديدة تنفيذ أي من واجهات المجموعة القياسية. هذا النمط جمع البيانات بسرعة تفوق المتطلبات الأخرى تُستخدم فقط في عمليات التنفيذ الداخلية. (I8ebd6)
تمت إزالة
StableMutableList
وStableMutableMap
مؤقتًا. لتجنب حدوث مشكلة في إصدار إنشاء لغة Kotlin. هذه ستتم إعادة تقديم الواجهات بمجرد تحديث أداة الإنشاء إلى إصدار في لغة Kotlin لا تواجه هذه المشكلة.تم نشر
SnapshotStateList
وSnapshotStateMap
بشكل علني الآن ولكن سيتم يتم إيقافها نهائيًا بعد استعادةStableMutableList
وStableMutableMap
. (Ia7769)إضافة دالة withFrameNanos ذات المستوى الأعلى لتوقيت الصورة المتحركة (Ie34c5)
تم إيقاف التعليق التوضيحي @Untracked نهائيًا. الاستبدال بـ @Composable خطوات(tracked=false) (Id211e)
تمت إعادة تسمية واجهة برمجة التطبيقات RedirectableFunction وواجهات برمجة التطبيقات المرتبطة بها إلى ComposableLambda وما إلى ذلك. وقد تم استهداف واجهات برمجة التطبيقات هذه من خلال برنامج التحويل البرمجي فقط، لذا لن يؤثر ذلك بشكل طبيعي على التوافق على مستوى المصدر. لقد تمت إعادة التسمية في الأساس لتوضيح ما هو أفضل لهذا الصف عند ظهوره في عمليات تتبع تسلسل استدعاء الدوال البرمجية (I7eb25).
لم يعُد التعليق التوضيحي @Composable صالحًا للفئات (Ia5f02).
أصبحت
Ambient<T>
الآن ثابتة بدلاً من @Immutable (I0b4bb).قبل هذا التغيير، كان المكون الإضافي لبرنامج التحويل البرمجي يعترض بطريقة غير تافهة الطلبات الواردة إلى دوال الإنشاء داخل الدالة @Composable في حالة وجود (I5205a، b/158123804)
لم يعد العنصر "إعادة التركيب" تجريدًا مفيدًا. يُفترض أن تحدث معظم عمليات إعادة التركيب نتيجة تعيينات MutableState. لإجراء ذلك، ننصحك باستخدام الدالة
invalidate
لإعادة تركيب النطاق الحالي. (Ifc992)لم تعد الملاحظة مجرد محتوى مفيد. إذا كنت بحاجة إلى تكرارها، يمكن تكرار تنفيذها من خلال إنشاء دالة قابلة للإنشاء تنفِّذ مَعلمة lambda قابلة للإنشاء. على سبيل المثال،
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)تم إيقاف @Direct نهائيًا لصالح @Composable أهدافك(restartable=false) (If4708).
تمت إضافة محوّل خاص بـ StateFlow الذي تم طرحه مؤخرًا، ويتيح تعبئة القيمة الأولية تلقائيًا بحيث تكون الحالة التي تم إرجاعها غير قابلة للقيم الفارغة (I61dd8 وb/156233789).
تمت إضافة محوّل لتطبيق Flow. مثال على الاستخدام: قيمة val من خلال flow.collectAsState() (If2198, b/153375923)
[Mutable]تم نقل عوامل تشغيل التفويض الخاصة بالموقع الإلكتروني في الولاية إلى الإضافات لإتاحة تحسينات تفويض المواقع على 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.disposeAccounts نهائيًا. بدلاً من ذلك، استخدِم طريقة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 اللاحقة لكي يدير بيئة التشغيل عملية التنفيذ بشكل صحيح. ويُعد هذا تغييرًا كبيرًا لأعطال النظام الثنائي، ولكن يجب أن يحافظ هذا التغيير على التوافق على مستوى المصدر في جميع الاستخدامات الخاضعة لعقوبات. (I7971c)تغييرات قد تؤدي إلى تغيُّر واجهة برمجة تطبيقات البيئة المحيطة يمكنك الاطّلاع على مستندات "
Ambient<T>
" والسجلّ للحصول على التفاصيل (I4c7ee، وb/143769776).تمت إضافة ui-livedata: عنصر جديد مزوّد بمحوّل لـ LiveData. مثال على الاستخدام: قيمة val حسب liveData.observeAsState() (Ie9e8c, b/150465596)
ويتم إيقاف محوّلات Rx التي لا تتضمّن قيمة أولية صريحة نهائيًا. لا يُعدّ استخدام القيمة "فارغ" الخيار التلقائي الأفضل دائمًا، على سبيل المثال، عندما تكون لديك قائمة، يُفضّل البدء بـ "blankList() " أو أي خيار تلقائي معقول آخر (I00025, b/161348384).
تمت إضافة ui-rxjava2 - عنصر جديد مع محوّلات لـ RxJava2. مثال على الاستخدام: قيمة val من خلال observerable.subscribeAsState() (Ifab4b, b/153369097)
يمكن الآن استخدام
savedInstanceState()
مع الأنواع القابلة للقيم الفارغة (I6847f وb/153532190).New listSaver() وmapSaver() لتسهيل كتابة كائنات Saver المخصصة (I8cf68 وb/152331508)
الدوال الجديدة: savedInstanceState() وYouSavedInstanceState(). وهما يشبهان State() و"rename()" ولكن يتضمّنان دعم حالة مثيل محفوظة (If1987, b/152025209)
إصلاح الأخطاء
- تمت إعادة تسمية
runOnIdleCompose
إلىrunOnIdle
(I83607). - تم تصميم واجهة برمجة التطبيقات LayoutNode تجريبية (I4f2e9)
- androidx.ui.foundation.TextFieldValue و تم إيقاف androidx.ui.input.EditorValue نهائيًا. حقل نصي، العناصر القابلة للإنشاء FileedTextField وCoreTextField التي تستخدم تم أيضًا إيقاف هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
- تمت إزالة DrawBackground المتوقّفة نهائيًا واجهة برمجة التطبيقات لصالح إضافة drawBackground واجهات برمجة التطبيقات في Modifier. إعادة الهيكلة اللون والفرشاة والتلوين كخلفية عمليات التنفيذ لتقليل مسارات الرمز أيضًا كشرط لإزالة المُعدّل لإنشاء المُعدّل كجزء من التكوين. (I0343a)
- تم تعديل المستوى الأعلى. لإنشاء واجهات برمجة تطبيقات تعرض لوحة رسم عرض CanvasScope بدلاً من ذلك. سيؤدي هذا إلى إزالة حاجة المستهلكين إلى الحفاظ على طلاء الأجسام الخاصة بك. بالنسبة إلى المستهلكين الذين لا تزال بحاجة إلى الوصول إلى لوحة رسم يمكنه استخدام إضافة drawCanvas توفر رد الاتصال للمشكلة أوامر الرسم باستخدام الدالة لوحة. (I80afd)
- تم تغيير واجهة برمجة تطبيقات lambda اللاحقة بالقيود الخاصة بالقيود المفروضة على واجهة برمجة تطبيقات lambda. فبدلاً من مَعلمتَين، أصبح لديه نطاق للمستلِم، بالإضافة إلى القيود وLayoutDirection الذي يوفّر خصائص minRate وmaxwidth وminHeight وmaxHeight في Dp (I91b9a، وb/149979702)
- تمت إضافة أداة تعديل المساحة المتروكة المتماثلة. (I39840)
- تم تعديل wrapContentwidth وwrapContentHeight لتوقُّع محاذاة رأسية أو أفقية بدلاً من أي محاذاة. تم تحديث معدِّل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تحديث الصف والعمود والتكديس لدعم المحاذاة المستمرة المخصصة. (Ib0728)
- تمت إعادة تسمية وحدة ui-text باسم ui-text-core (I57dec).
- تحسين واجهة برمجة تطبيقات DrawModifier:
- تم إنشاء نطاق المُستلِم لـ draw() ContentDrawScope
- تمت إزالة جميع المعلمات على draw()
- واجهة DrawScope هي نفس واجهة تطبيق CanvasScope السابق
- يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
- تم إيقاف ColoredRect نهائيًا. يمكنك استخدام
Box(Modifier.preferredSize(width, height).drawBackground(color))
كبديل. (I499fa، b/152753731) - تم استبدال أداة التعديل بالإضافة إلى عامل التشغيل بوظائف إضافة على الإعدادات الأصلية (I225e4).
- يمكن الآن الوصول إلى أعضاء RowScope وColumnScope خارج الصف والعمود. (I3a641)
- تمت إعادة تسمية Layoutflex إلى Layoutweight. تمت إعادة تسمية معلَمة ضيقة للتعبئة. (If4738)
- حصلت WithConstraints على معلمة LayoutDirection (I6d6f7)
- تمت إعادة تسمية الخلفية إلى DrawBackground وإدراجها في الذاكرة تلقائيًا (Ia0bd3).
- تم استبدال ButtonStyle بدوال مميّزة وإزالة الحمل الزائد للنص (السلسلة). يمكنك الاطّلاع على النماذج المعدّلة للحصول على معلومات الاستخدام. (If63ab وb/146478620 وb/146482131)
runOnIdleCompose
وrunOnUiThread
هما الآن دالتان عموميتان بدلاً من الطرق في ComposeTestRule. (Icbe8f)
مساهمة خارجية
- إزالة واجهة برمجة التطبيقات غير الضرورية، مثل Looper وHatler، من طبقة نقل بيئة تشغيل Compose (I6847d)
- إيقاف
Flow<T>.collectAsState()
بدون قيمة مبدئية يمكنك استخدامStateFlow<T>
أو ضبط قيمة أوّلية صريحة بدلاً من ذلك. (I63f98، b/157674865)