ضبط حدث

يؤدي حدث إلى تغييرات في الحالة وبدء الإجراءات. تعمل الأحداث كإشارات يتم إرسالها من واجهة مستخدم النظام أو من خارج العملية باستخدام هدف. تُعلم الأحداث واجهة المستخدم القابلة للتوسيع بشأن الحالات التي تتطلّب استجابة.

حدث Scalable UI هو إشارة نظام يتم تشغيلها من خلال تغييرات في الأجهزة أو البرامج، ويمكن أن تؤدي إلى تغيير حالة اللوحة. تُعلم هذه الأحداث إطار العمل بشأن الحالات التي تتطلّب استجابة من واجهة المستخدم. للحصول على تحكّم أكثر دقة في حالات اللوحة، يمكنك أيضًا تحديد أحداث مخصّصة، بالإضافة إلى أحداث النظام المضمّنة.

بنية الحدث

يحدّد المعرّف الفريد الإلزامي (ID) حدثًا. يصنّف هذا المعرّف نوع التكرار، مثل _System_TaskOpenEvent أو _System_PanelEmptyEvent.

بالإضافة إلى هذا المعرّف، يمكن أن يتضمّن الحدث اختياريًا رموزًا مميّزة وأزواجًا من المفاتيح والقيم لتوفير سياق وتفاصيل حول الحدث. تسمح هذه الرموز المميزة بفلترة الأحداث بشكل أكثر دقة، ما يتيح تشغيل الانتقالات أو الإجراءات فقط في ظل شروط معيّنة.

يتم تمرير الرموز المميّزة إلى الحدث كقائمة من أزواج المفاتيح والقيم مفصولة بفاصلة منقوطة (;). إليك قائمة بالمفاتيح التي يدعمها النظام:

المفتاح الوصف
panelId تحدّد هذه السمة لوحة معيّنة من واجهة المستخدِم مرتبطة بالحدث.
component تحدّد هذه السمة اسم المكوّن، مثل نشاط مرتبط بالحدث.
package تشير إلى اسم الحزمة المرتبط بالحدث.
panelToVariantId تحدّد هذه السمة نوع اللوحة المستهدَف في سياقات معيّنة. استخدِم هذه السمة لتسلسل الحركات من خلال الاستماع إلى انتقال اللوحة. على سبيل المثال، بدء انتقال اللوحة (ب) إلى حالة الإغلاق عند انتقال اللوحة (أ) إلى حالة الفتح.

على سبيل المثال:

"component=com.android.app;panelId=panel1"

منطق مطابقة الأحداث

عند إرسال حدث، يجب مطابقته مع المعايير المحدّدة لبدء انتقال أو إجراء. تتم عملية المطابقة على مرحلتَين:

  • مطابقة id للأحداث بدقة: يجب أن يتطابق id للحدث المُرسَل تمامًا مع id المحدّد في فلتر حدث الانتقال أو الإجراء. إذا لم تتطابق المعرّفات، سيتم اعتبار الحدث غير مطابق.

  • المطابقة الجزئية لرموز الأحداث المميّزة: عندما تتطابق أرقام تعريف الأحداث، يستخدم النظام المطابقة الجزئية لتقييم رموز الأحداث المميزة مقارنةً بالرموز المميزة المحدّدة في الفلتر.

    لكي يحدث تطابق، يجب أن تتطابق جميع خصائص الحدث (الرموز المميّزة) المحدّدة في تعريف حدث الانتقال تطابقًا تامًا مع الخصائص المقابلة في الحدث الذي تم إرساله.

    ومع ذلك، يمكن أن يحتوي الحدث الذي تم إرساله على رموز مميّزة إضافية لم يتم تحديدها بشكل صريح في الفلتر. لا تمنع الرموز المميزة الإضافية حدوث تطابق. بدلاً من ذلك، يتم تجاهلها في تقييم المطابقة.

    في المقابل، إذا كان الفلتر يحدّد رمزًا مميزًا غير متوفّر في الحدث الذي تم إرساله، أو إذا كانت قيمة الرمز المميز المطابق لا تتوافق، لن يتم اعتباره مطابقًا.

على سبيل المثال، لنفترض أنّ هناك انتقالًا محدّدًا ليتم تشغيله عند حدوث id="app_open" على panelId="panel1" باستخدام component="com.android.myapp.Activity".

إذا كان الحدث المُرسَل يتضمّن id="app_open" وpanelId="panel1" وcomponent="com.android.myapp.Activity"، سيتم إجراء مطابقة. تم استيفاء جميع معايير الفلتر، والقيمة الأكثر تحديدًا هي Activity value in the dispatched event is considered a match forcom.android.myapp`.

ومع ذلك، يتعذّر الربط إذا كان الحدث المُرسَل عند id="app_open" وpanelId="panel1" وcomponent="com.android.yourapp.Activity". على الرغم من تطابق id وpanelId، فإنّ component لا يساوي component في الانتقال — com.android.myapp — لا يتطابق مع com.android.yourapp في الحدث الذي تم إرساله.

مشغّل الانتقال

على الرغم من أنّ الانتقال قد يكون مطابقًا، هذا لا يعني أنّه يتم تشغيله. يمكن تشغيل انتقال واحد فقط لكل حدث. تهدف واجهة المستخدم القابلة للتوسيع إلى عرض أقرب تطابق فقط.

على سبيل المثال، عندما يكون هناك تطابق بين انتقالَين، أحدهما يتضمّن اسم مكوّن والآخر لا يتضمّن اسم مكوّن -m، يتم تشغيل الانتقال الذي يتضمّن اسم المكوّن فقط.

إرسال الأحداث ومعالجتها

تُعدّ الأحداث أساسية للسلوك الديناميكي لواجهة المستخدم القابلة للتوسيع. يمكن إرسال الأحداث من واجهة مستخدم النظام أو من عمليات خارجية باستخدام Intent.

أحداث النظام

يحدّد إطار العمل العديد من أحداث النظام التي تسهّل هذه الإجراءات:

السمة الوصف
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
يشير إلى أنّ النظام تلقّى طلبًا لعرض شاشة الشاشة الرئيسية. في AAOS، يمكن أن تكون الشاشة الرئيسية إعدادًا مرنًا للنوافذ، مثل مجموعة من التطبيقات المصغّرة أو حتى خريطة. هذا الحدث مهم جدًا للانتقالات أو الإجراءات التي تعتمد على عرض المستخدم لواجهة الشاشة الرئيسية الأساسية.
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

يتم إرسال هذا الحدث عند فتح مهمة أو تطبيق. يمكن أن يؤدي هذا الحدث العام إلى تشغيل إجراءات أو انتقالات استنادًا إلى تشغيل تطبيق.

يحتوي هذا الحدث على رموز مميزة مثل panelId وcomponent.

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
تشير إلى أنّ مهمة أو تطبيقًا قد تم إغلاقهما، وهي عكس _System_TaskOpenEvent. يتيح ذلك للنظام الاستجابة عند إغلاق التطبيقات. ويمكن أن يؤدي ذلك إلى تشغيل عمليات انتقال لإعادة اللوحة إلى حالتها التلقائية أو بدء إجراءات تنظيف أخرى.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

يتم إرسال هذا الحدث عندما تصبح لوحة معيّنة فارغة، ويتضمّن الرمز panelId كرمز مميّز ليتم فلترة المشغّلات وفقًا للوحة الفارغة.

هذا الحدث مهم لاستعادة البيانات بشكل سليم عند حدوث أخطاء وإعادة تشغيل التطبيقات عندما يتعطّل المحتوى المرتبط أو يتم إنهاؤه بشكل غير متوقّع لمنع عرض لوحات واجهة مستخدم فارغة.

على سبيل المثال، إذا تعذّر تشغيل تطبيق ControlBar، يمكنك ضبط إجراء لرصد هذا الحدث في لوحة التطبيق وإعادة تشغيل ControlBar تلقائيًا.

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
تشير إلى دخول النظام إلى "معالج الإعداد" (SUW). يشير هذا الحدث إلى أنّ النظام جاهز، ويمكن ضبطه لتشغيل التطبيقات أو عرض اللوحات المحدّدة بعد تهيئة النظام. ويتطلّب الدخول في حالة نظام حرجة كهذه حدثًا مخصّصًا لتفعيل التعديلات أو الإجراءات المناسبة في واجهة المستخدم.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
تشير هذه السمة إلى خروج النظام من "معالج الإعداد" (SUW). على غرار _System_EnterSuwEvent، يتيح هذا الحدث للنظام الاستجابة لإكمال عملية الإعداد من خلال تشغيل التطبيقات التلقائية أو الانتقال إلى واجهة مستخدم عادية.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
يتم تشغيله عند اكتمال صورة متحركة في واجهة المستخدم. يمكنك استخدام هذا الحدث لتشغيل إجراءات لاحقة أو تغييرات في الحالة تعتمد على إكمال انتقال مرئي.

يحتوي هذا الحدث على رمز مميّز variantId للإشارة إلى نوع اللوحة الذي تم عرضه في نهاية الحركة.