Multi-Window: جوهر أنماط تعدد المهام على Android

المؤلف: IT Sectr نُشر: 2026-06-08 وقت القراءة: 10 دق

Multi-Window هو مجموعة من أوضاع تعدد المهام في Android تتيح تشغيل عدة تطبيقات على الشاشة في وقت واحد. يتضمن النظام ثلاثة أوضاع: Split Screen لتقسيم الشاشة إلى جزأين، Picture-in-Picture للفيديو في نافذة مصغرة، و Freeform لنوافذ ذات حجم عشوائي على الشاشات الكبيرة. وفقًا لـ Android Developers (2025)، فإن دعم Multi-Window إلزامي للأجهزة التي يبلغ عرض شاشتها 600 dp أو أكثر، ويجب على كل مطور تكييف تطبيقه مع تغييرات حجم النافذة المحتملة.

الخلاصة

  • Multi-Window — نظام تعدد المهام في Android بثلاثة أوضاع: Split Screen و PiP و Freeform.
  • Split Screen — تطبيقان جنبًا إلى جنب، الفاصل قابل للسحب، تتغير النسب.
  • Picture-in-Picture — فيديو في نافذة مصغرة فوق التطبيقات الأخرى.
  • Freeform — نوافذ ذات حجم عشوائي على Android TV والشاشات الكبيرة.
  • ResizeableActivity — علامة في المانيifest للإعلان عن دعم النوافذ المتعددة.

ما هو Multi-Window في Android؟

Multi-Window هي ميزة في Android تم تقديمها في الإصدار 7.0 Nougat (API 24) تتيح تشغيل تطبيقين أو أكثر على الشاشة في وقت واحد. كان هذا الوضع استجابة Google للشعبية المتزايدة للأجهزة اللوحية والشاشات الكبيرة، حيث يحد وضع المهمة الواحدة من الإنتاجية.

قبل Android 7.0، كان كل تطبيق يشغل الشاشة بأكملها — عند التبديل بين التطبيقات، كان التطبيق السابق يُصغر. غير Multi-Window هذا النموذج: الآن يمكن للتطبيق أن يشغل جزءًا من الشاشة مع الحفاظ على حالته النشطة. بالنسبة للمطورين، هذا يعني أن onConfigurationChanged ومعالجة تغييرات الحجم تصبح إلزامية.

في Android 12L (2022)، جعل Google Multi-Window الوضع الافتراضي للأجهزة ذات الشاشات الكبيرة — جميع التطبيقات على الأجهزة اللوحية تعمل في وضع يسمح بالنوافذ المتعددة. الاستثناءات الوحيدة هي التطبيقات ذات الحظر الصريح في المانيifest.

أنماط Multi-Window: Split Screen و PiP و Freeform

Split Screen — الوضع الأكثر شيوعًا. يتم تقسيم الشاشة إلى جزأين أفقيًا أو رأسيًا، ويقوم المستخدم بسحب الفاصل. متاح على الهواتف والأجهزة اللوحية. يتم التنشيط عبر Overview (Recents) — عن طريق سحب أيقونة التطبيق إلى الحافة العلوية أو السفلية.

Picture-in-Picture (PiP) — وضع لتطبيقات الفيديو والملاحة. يتم عرض المحتوى في نافذة مصغرة عائمة (حوالي 15–25% من الشاشة) يمكن تحريكها. متاح على Android 8.0+. للتنشيط، استخدم enterPictureInPictureMode() في Activity.

Freeform — وضع للنوافذ ذات الحجم العشوائي، يشبه مديري النوافذ على سطح المكتب. متاح على Android TV وبعض أجهزة الشاشات الكبيرة من الشركات المصنعة (Samsung DeX). تعمل التطبيقات في نوافذ بشريط عنوان و أزرار تحكم.

كيف يعمل Multi-Window

عندما يقوم المستخدم بتنشيط Multi-Window، يقوم Android بإنشاء مثيل Activity جديد لكل تطبيق ويوزع مساحة الشاشة المتاحة. يتم وضع الأنشطة في Tasks منفصلة ولكنها تستخدم نفس StackView مع فاصل بينها.

يقوم النظام بإخطار كل Activity بتغيير الحجم من خلال onConfigurationChanged(). إذا لم تعالج Activity هذا الحدث، يتم إعادة إنشائها. بالنسبة لـ Split Screen، يمكن أن ينخفض عرض النافذة إلى 220 dp — الحد الأدنى للعرض الذي تدعمه المنصة.

يسمح Android للتطبيق بتعريف عرض أدنى من خلال android:minWidth و android:minHeight في المانيifest. إذا كانت المساحة المتاحة أقل من هذه القيم، تدخل Activity في حالة الإيقاف المؤقت.

تكييف Activity مع وضع النوافذ المتعددة

لدعم Multi-Window، تحتاج إلى تعيين العلامة android:resizeableActivity="true" في المانيifest. هذا يعني أن التطبيق يمكنه تغيير الحجم عندما تتغير النافذة. افتراضيًا على Android 12L+، تعتبر جميع التطبيقات قابلة لتغيير الحجم — يتم تجاهل العلامة.

عندما يتغير حجم النافذة، يمكن إعادة إنشاء Activity (افتراضيًا) أو معالجة الحدث في onConfigurationChanged إذا تم تحديد configChanges="screenSize|smallestScreenSize" في المانيifest. يُوصى بتحديد configChanges للأنشطة الرئيسية لتجنب فقدان الحالة.

xml
<activity
    android:name=".MainActivity"
    android:resizeableActivity="true"
    android:configChanges="screenSize|smallestScreenSize|orientation" />

بالنسبة للتطبيقات التي لا تدعم تغيير الحجم، يعرض Android مربع حوار تحذيري. في هذه الحالة، عند التبديل إلى وضع النوافذ المتعددة، قد يقوم النظام بإنهاء Activity وإظهار snackbar مع عرض لإعادة التشغيل.

Multi-Window ودورة حياة Activity

يغير Multi-Window دورة حياة Activity القياسية. عندما يصبح تطبيق آخر نشطًا في النافذة المجاورة، تتلقى Activity الحالية استدعاء onPause() ولكن ليس onStop() — تظل مرئية، وإن لم تكن في التركيز. هذا مهم: يجب أن يستمر مشغل الفيديو في التشغيل عند onPause، وليس عند onStop.

يحتاج المطورون إلى التمييز بين الحالات: onPause + isInMultiWindowMode() = true يعني فقط فقدان التركيز، وليس الخروج من الشاشة. بالنسبة للفيديو والرسوم المتحركة، هذه إشارة لعدم إيقاف التشغيل ولكن فقط لإلغاء تحديد عناصر التحكم.

عند الخروج من Multi-Window، يتم استدعاء onMultiWindowModeChanged() قبل onResume(). هذا يعطي الفرصة لإعادة بناء الواجهة لوضع ملء الشاشة قبل أن يبدأ المستخدم في التفاعل.

أفضل الممارسات لـ Multi-Window

القاعدة الأولى هي حفظ الحالة. في وضع النوافذ المتعددة، يمكن إعادة إنشاء Activity في أي لحظة. استخدم SavedStateHandle في ViewModel أو onSaveInstanceState لجميع البيانات التي يجب أن تستمر بين تغييرات التكوين.

القاعدة الثانية هي الاختبار بعرض أدنى يبلغ 220 dp. تعتبر هذه القيمة أضيق نافذة في Split Screen. يجب أن تظل الواجهة قابلة للقراءة والعملية. إذا تجاوزت بعض العناصر الحدود، استخدم Window Size Class للتبديل بين التخطيطات.

القاعدة الثالثة هي تعطيل الوظائف التي لا تعمل في Multi-Window. على سبيل المثال، قد لا تكون Camera متاحة إذا كانت الشاشة صغيرة جدًا. تحقق من isInMultiWindowMode() قبل بدء تشغيل الكاميرا أو وظائف ملء الشاشة الأخرى.

الأسئلة الشائعة

كيفية تعطيل Multi-Window لتطبيقي؟

قم بتعيين android:resizeableActivity="false" في المانيifest. على Android 12L+، يتم تجاهل العلامة للأجهزة ذات الشاشات الكبيرة، لذا للحظر الكامل استخدم android:maxAspectRatio.

كيفية تحديد ما إذا كان التطبيق في Multi-Window؟

قم باستدعاء isInMultiWindowMode() من Activity. يعيد الأسلوب true إذا كان التطبيق يعمل في Split Screen أو PiP أو Freeform. يمكنك أيضًا الاشتراك في onMultiWindowModeChanged().

هل يعمل Multi-Window على Android TV؟

على Android TV، يتوفر فقط وضع Picture-in-Picture. Split Screen و Freeform غير مدعومين — تستخدم أجهزة التلفزيون شاشة رئيسية واحدة مع نافذة PiP في الزاوية.

ماذا يحدث لخدمة المقدمة (foreground service) في Multi-Window؟

تستمر خدمة المقدمة في العمل بغض النظر عن الوضع. ومع ذلك، إذا تحول التطبيق إلى PiP، فقد يقوم النظام بإيقاف التنفيذ مؤقتًا لتوفير الموارد.

كيفية التعامل مع السحب والإفلات بين النوافذ؟

يدعم Android السحب والإفلات بين النوافذ في Multi-Window عبر ClipData و View.OnDragListener. يتم نقل البيانات من خلال ContentProvider أو Intent مع FLAG_GRANT_READ_URI_PERMISSION.

الملخص

  • Multi-Window — تعدد مهام Android بثلاثة أوضاع للعمل المتزامن للتطبيقات.
  • Split Screen — تقسيم الشاشة إلى جزأين بفاصل قابل للسحب.
  • Picture-in-Picture — فيديو في نافذة مصغرة لـ Android 8.0+.
  • Freeform — نوافذ ذات حجم عشوائي على Android TV و Samsung DeX.
  • resizeableActivity — علامة إلزامية في المانيifest لدعم الوضع.
  • onMultiWindowModeChanged — استدعاء لإعادة بناء الواجهة عند الدخول/الخروج.
  • الخلاصة — Multi-Window إلزامي لجميع التطبيقات على الشاشات الكبيرة منذ 2022.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا