مثل الإصدارات السابقة، يتضمّن الإصدار 16 من نظام التشغيل Android تغييرات في السلوك قد تؤثر في تطبيقك. تنطبق تغييرات السلوك التالية حصريًا على التطبيقات التي تستهدف الإصدار 16 من نظام التشغيل Android أو الإصدارات الأحدث. إذا كان تطبيقك يستهدف الإصدار 16 من نظام التشغيل Android أو الإصدارات الأحدث، عليك تعديل تطبيقك لتفعيل هذه السلوكيات، حيثما ينطبق ذلك.
احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثر في جميع التطبيقات
التي تعمل بنظام التشغيل Android 16 بغض النظر عن targetSdkVersion
تطبيقك.
تجربة المستخدم وواجهة المستخدم للنظام
يتضمّن الإصدار 16 من Android التغييرات التالية التي تهدف إلى توفير تجربة استخدام أكثر اتساقًا وسهولة.
إيقاف ميزة "العرض حتى حافة الشاشة" نهائيًا
فرض نظام التشغيل Android 15 عرض التطبيقات على الشاشة بالكامل للتطبيقات التي تستهدف الإصدار 15 من Android (المستوى
35 لواجهة برمجة التطبيقات)، ولكن يمكن لتطبيقك إيقاف هذه الميزة من خلال ضبط قيمة true
بدلاً من
R.attr#windowOptOutEdgeToEdgeEnforcement
. بالنسبة إلى التطبيقات التي تستهدف الإصدار R.attr#windowOptOutEdgeToEdgeEnforcement
من Android، سيتم إيقاف السمة نهائيًا ولن تتمكّن من إيقاف ميزة "العرض حتى حافة الشاشة".
لإجراء الاختبار في الإصدار التجريبي 2 من Android 16، تأكَّد من أنّ تطبيقك متوافق مع الشاشة الكاملة
وأزِل أي استخدام لR.attr#windowOptOutEdgeToEdgeEnforcement
. لتفعيل الشاشة المملوءة، يُرجى الاطّلاع على إرشادات الإنشاء والعروض. يُرجى إعلامنا بالمخاوف في أداة تتبُّع المشاكل على صفحة الملاحظات.
نقل البيانات أو إيقاف ميزة "الرجوع إلى الخلف بشكلٍ تنبؤي" مطلوب
بالنسبة إلى التطبيقات التي تستهدف الإصدار 16 من نظام التشغيل Android أو الإصدارات الأحدث وتعمل على
جهاز يعمل بالإصدار 16 من نظام التشغيل Android أو إصدار أحدث، تكون الصور المتحركة في النظام لإيماءة الرجوع إلى الخلف التنبؤية فعالة تلقائيًا
(الرجوع إلى الشاشة الرئيسية والتنقّل بين المهام وتنفيذ عدة أنشطة في الوقت نفسه).
بالإضافة إلى ذلك، لا يتم استدعاء onBackPressed
ولا يتم إرسال
KeyEvent.KEYCODE_BACK
بعد الآن.
إذا كان تطبيقك يعترض حدث الرجوع ولم تنقل إلى ميزة التنقّل التلقائي
للرجوع بعد، عليك تحديث تطبيقك لاستخدام واجهات برمجة التطبيقات المتوافقة للتنقّل للخلف أو
إيقاف هذه الميزة مؤقتًا من خلال ضبط سمة
android:enableOnBackInvokedCallback
على false
في علامة
<application>
أو <activity>
من ملف AndroidManifest.xml
في تطبيقك.
واجهات برمجة التطبيقات لخطوط Elegant المتوقّفة نهائيًا والمتوقفة
في التطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android (المستوى 35 لواجهة برمجة التطبيقات)، يتم ضبط سمة
elegantTextHeight
TextView
على true
بشكلٍ
تلقائي، ما يؤدي إلى استبدال الخط المكثّف بخط يسهل قراءته. يمكنك
إلغاء ذلك من خلال ضبط السمة elegantTextHeight
على false
.
سيتوقف نظام التشغيل Android 16 عن استخدام سمة
elegantTextHeight
،
وسيتم تجاهل السمة بعد أن يستهدف تطبيقك الإصدار 16 من نظام التشغيل Android. سيتم إيقاف "خطوط واجهة المستخدم" التي تتحكّم فيها واجهات برمجة التطبيقات هذه، لذا عليك تعديل أي تنسيقات لضمان عرض نص متسق ومناسب للمستقبل باللغات العربية أو البورمية أو التايلاندية أو التاميلية أو الغوجاراتية أو الكانادا أو المالايالامية أو الأوديا أو اللاتفية أو التيلوغوية.

elegantTextHeight
للتطبيقات التي تستهدف الإصدار
14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأقدم، أو للتطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android (المستوى 35 لواجهة برمجة التطبيقات)
والتي تم إلغاء الإعداد التلقائي فيها من خلال ضبط السمة elegantTextHeight
على false
.
elegantTextHeight
للتطبيقات التي تستهدف الإصدار
16 من نظام التشغيل Android، أو للتطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android (المستوى 35 لواجهة برمجة التطبيقات) والتي لم تلغي الإعداد
التلقائي من خلال ضبط السمة elegantTextHeight
على
false
.الوظيفة الأساسية
يتضمّن الإصدار 16 من Android التغييرات التالية التي تعدّل أو توسّع الإمكانات الأساسية المختلفة لنظام Android.
تحسين جدولة العمل بسعر ثابت
قبل استهداف الإصدار 16 من Android، عندما يفوت scheduleAtFixedRate
تنفيذ مهمة بسبب عدم التزامه بدورة حياة
صالحة للعمليات، يتم تنفيذ جميع عمليات التنفيذ الفائتة
على الفور عند عودة التطبيق إلى دورة حياة صالحة.
عند استهداف Android 16، يتم تنفيذ مرة واحدة على الأكثر من عملية تنفيذ
scheduleAtFixedRate
الفائتة على الفور عندما يعود التطبيق
إلى دورة حياة صالحة. من المتوقّع أن يؤدي تغيير السلوك هذا إلى تحسين أداء التطبيق. يمكنك اختبار هذا السلوك في تطبيقك لمعرفة ما إذا كان تطبيقك متأثرًا.
يمكنك أيضًا إجراء الاختبار باستخدام إطار عمل توافق التطبيقات
وتفعيل علامة التوافق STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
.
أشكال الأجهزة
يتضمّن الإصدار 16 من Android التغييرات التالية على التطبيقات عند عرضها على الأجهزة ذات الشاشات الكبيرة.
التنسيقات التكيُّفية
بما أنّ تطبيقات Android تعمل الآن على مجموعة متنوعة من الأجهزة (مثل الهواتف والأجهزة اللوحية والأجهزة القابلة للطي وأجهزة الكمبيوتر المكتبي والسيارات وأجهزة التلفزيون) ووضعيات النوافذ على الشاشات الكبيرة (مثل شاشة مُقسّمة ووضع نافذة على الكمبيوتر المكتبي)، على المطوّرين إنشاء تطبيقات Android تتماشى مع أي حجم شاشة ونافذة، بغض النظر عن اتجاه الجهاز. إنّ النماذج، مثل فرض قيود على الاتجاه وإمكانية تغيير الحجم، تكون صارمة جدًا في عالم الأجهزة المتعددة اليوم.
تجاهل قيود الاتجاه وإمكانية تغيير الحجم ونسبة العرض إلى الارتفاع
بالنسبة إلى التطبيقات التي تستهدف الإصدار 16 من نظام التشغيل Android، يتضمّن هذا الإصدار تغييرات على كيفية إدارة النظام لقيود الاتجاه وإمكانية تغيير الحجم ونسب العرض إلى الارتفاع. على الشاشات التي يبلغ أصغر عرض لها 600dp أو أكثر، لن تعود القيود مفعّلة. تملأ التطبيقات أيضًا نافذة العرض بالكامل، بغض النظر عن نسبة قياس الشاشة أو الاتجاه المفضّل للمستخدم، ولا يتم استخدام وضع "عرض عمودي للمحتوى في شاشة أفقية".
يقدّم هذا التغيير سلوكًا عاديًا جديدًا للمنصة. يتجه نظام التشغيل Android نحو نموذج يُتوقّع فيه أن تتكيّف التطبيقات مع مختلف الاتجاهات وأحجام الشاشات ونسَب العرض إلى الارتفاع. إنّ القيود، مثل اتجاه ثابت أو إمكانية تغيير الحجم بشكل محدود، تمنع إمكانية تكيّف التطبيق، لذا ننصحك بجعل تطبيقك قابلاً للتكيّف لتقديم أفضل تجربة ممكنة للمستخدمين.
يمكنك أيضًا اختبار هذا السلوك باستخدام
[إطار عمل توافق التطبيقات][a16-kilo-14] و
تفعيل علامة التوافق UNIVERSAL_RESIZABLE_BY_DEFAULT
.
التغييرات الشائعة التي قد تؤدي إلى حدوث أعطال
قد يؤدي تجاهل القيود المفروضة على الاتجاه وإمكانية إعادة الحجم ونسبة العرض إلى الارتفاع إلى التأثير في واجهة مستخدم تطبيقك على بعض الأجهزة، خاصةً العناصر المصمّمة لتنسيقات شاشة صغيرة ومُقفَلة في الوضع العمودي، مثل مشاكل التنسيقات الممدودة والمكوّنات والصور المتحركة التي تظهر خارج الشاشة. يمكن أن تؤدي أي افتراضات حول نسبة قياس الارتفاع إلى العرض أو الاتجاه إلى حدوث مشاكل مرئية في تطبيقك. مزيد من المعلومات حول كيفية تجنُّب هذه المشاكل وتحسين السلوك التكيُّفي لتطبيقك
يؤدي السماح بتبديل الأجهزة إلى إعادة إنشاء المزيد من الأنشطة، ما قد يؤدي بدوره إلى فقدان حالة المستخدم في حال عدم الحفاظ عليها بشكل صحيح. تعرَّف على كيفية حفظ حالة واجهة المستخدم بشكل صحيح في مقالة حفظ حالات واجهة المستخدم.
تفاصيل التنفيذ
يتم تجاهل سمات البيان وواجهات برمجة التطبيقات لوقت التشغيل التالية على الأجهزة المزوّدة بشاشات كبيرة في وضعَي ملء الشاشة وتعدد النوافذ:
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
يتم تجاهل القيم التالية للعناصر screenOrientation
وsetRequestedOrientation()
و
getRequestedOrientation()
:
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
في ما يتعلّق بإمكانية تغيير حجم الشاشة، لا يكون لـ android:resizeableActivity="false"
android:minAspectRatio
وandroid:maxAspectRatio
أي تأثير.
بالنسبة إلى التطبيقات التي تستهدف الإصدار 16 من نظام التشغيل Android، يتم تلقائيًا تجاهل قيود اتجاه التطبيق وإمكانية تغيير حجمه ونسبة العرض إلى الارتفاع على الشاشات الكبيرة، ولكن يمكن لكل تطبيق غير جاهز تمامًا إلغاء هذا السلوك بشكل مؤقت من خلال إيقافه (ما يؤدي إلى السلوك السابق المتمثل في وضعه في وضع التوافق).
الاستثناءات
لا تنطبق قيود الاتجاه وإمكانية تغيير الحجم ونسبة العرض إلى الارتفاع في نظام التشغيل Android 16 في الحالات التالية:
- الألعاب (استنادًا إلى علامة
android:appCategory
) - المستخدمون الذين يوافقون صراحةً على السلوك التلقائي للتطبيق في إعدادات نسبة العرض إلى الارتفاع للجهاز
- الشاشات التي يقل حجمها عن
sw600dp
إيقاف الميزة مؤقتًا
لإيقاف نشاط معيّن، يجب تحديد
PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
سمة البيان:
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
إذا لم تكن أجزاء كثيرة من تطبيقك جاهزة لنظام التشغيل Android 16، يمكنك إيقاف الميزة تمامًا من خلال تطبيق السمة نفسها على مستوى التطبيق:
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
الصحة واللياقة البدنية
يتضمّن نظام التشغيل Android 16 التغييرات التالية المتعلّقة ببيانات الصحة واللياقة البدنية.
أذونات الصحة واللياقة البدنية
بالنسبة إلى التطبيقات التي تستهدف الإصدار 16 من نظام التشغيل Android أو الإصدارات الأحدث، سيتم نقل أذونات
BODY_SENSORS
إلى أذونات
المفصّلة ضمن android.permissions.health
التي يستخدمها أيضًا Health
Connect. أي واجهة برمجة تطبيقات كانت تتطلّب في السابق الحصول على إذن BODY_SENSORS
أو
BODY_SENSORS_BACKGROUND
تتطلّب الآن الحصول على إذن
android.permissions.health
المقابل. ويؤثّر ذلك في أنواع البيانات و
واجهات برمجة التطبيقات وأنواع الخدمات التي تعمل في المقدّمة التالية:
HEART_RATE_BPM
من Wear Health ServicesSensor.TYPE_HEART_RATE
من "مدير أجهزة الاستشعار" في AndroidheartRateAccuracy
وheartRateBpm
من WearProtoLayout
FOREGROUND_SERVICE_TYPE_HEALTH
حيث يلزم الحصول على إذنandroid.permission.health
المعني بدلاً منBODY_SENSORS
إذا كان تطبيقك يستخدم واجهات برمجة التطبيقات هذه، من المفترض أن يطلب الآن إذنَي التنقّل المفصّلَين التاليَين:
- لرصد معدل ضربات القلب أو تشبع الأكسجين في الدم أو درجة حرارة الجلد أثناء الاستخدام:
اطلب الإذن المفصّل ضمن
android.permissions.health
، مثلREAD_HEART_RATE
بدلاً منBODY_SENSORS
. - للوصول إلى أجهزة الاستشعار في الخلفية: اطلب
READ_HEALTH_DATA_IN_BACKGROUND
بدلاً منBODY_SENSORS_BACKGROUND
.
هذه الأذونات هي نفسها الأذونات التي تحظر الوصول إلى قراءة البيانات من Health Connect، وهو مستودع بيانات Android لبيانات الصحة واللياقة البدنية والعافية.