يؤدي الحدث إلى تشغيل تغييرات الحالة وبدء الإجراءات. تعمل الأحداث كإشارات يتم إرسالها من واجهة مستخدم النظام أو من خارج العملية باستخدام هدف. تُعلم الأحداث واجهة المستخدم القابلة للتوسيع بشأن الحالات التي تتطلّب استجابة.
حدث واجهة المستخدم القابلة للتوسيع هو إشارة نظام يتم تشغيلها من خلال تغييرات في الأجهزة أو البرامج، ويمكن أن تؤدي إلى تغيير حالة اللوحة. تُعلم هذه الأحداث إطار العمل بشأن الحالات التي تتطلّب استجابة من واجهة المستخدم. للحصول على تحكّم أكثر دقة في حالات اللوحة، يمكنك أيضًا تحديد أحداث مخصّصة، بالإضافة إلى أحداث النظام المضمّنة.
بنية الحدث
يحدّد المعرّف الفريد الإلزامي (ID) حدثًا. يصنّف هذا المعرّف نوع التكرار، مثل _System_AppOpenEvent
أو _System_PanelEmptyEvent
.
بالإضافة إلى هذا المعرّف، يمكن أن يتضمّن الحدث اختياريًا رموزًا مميّزة وأزواجًا من المفاتيح والقيم لتوفير سياق وتفاصيل حول الحدث. تسمح هذه الرموز المميزة بفلترة الأحداث بشكل أكثر تفصيلاً، ما يتيح تشغيل عمليات الانتقال أو الإجراءات فقط في ظل شروط معيّنة.
يتم تمرير الرموز المميّزة إلى الحدث كقائمة من أزواج المفاتيح والقيم مفصولة بفواصل منقوطة (;
). في ما يلي قائمة بالمفاتيح التي يدعمها النظام:
المفتاح | الوصف |
---|---|
panelId |
تحدّد هذه السمة لوحة معيّنة في واجهة المستخدِم مرتبطة بالحدث. |
component |
تحدّد هذه السمة اسم المكوّن، مثل نشاط مرتبط بالحدث. |
package |
تشير إلى اسم الحزمة المرتبط بالحدث. |
panelToVariantId |
تحدّد هذه السمة نوع اللوحة المستهدَف في سياقات معيّنة. استخدِم هذه السمة لتسلسل الحركات من خلال الاستماع إلى انتقال اللوحة. على سبيل المثال، يمكنك بدء انتقال اللوحة B إلى حالة الإغلاق عند انتقال اللوحة A إلى حالة الفتح. |
مثلاً:
"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 for
com.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 ) |
يتم إرسال هذا الحدث عند فتح مهمة أو تطبيق. يمكن أن يؤدي هذا الحدث العام إلى تشغيل إجراءات أو انتقالات استنادًا إلى تشغيل تطبيق. يحتوي هذا الحدث على رموز مميّزة مثل |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) |
تشير إلى أنّ مهمة أو تطبيقًا قد تم إغلاقهما، وهي عكس _System_TaskOpenEvent . يتيح ذلك للنظام الاستجابة عند إغلاق التطبيقات. يمكن أن يؤدي ذلك إلى تشغيل عمليات انتقال لإعادة اللوحة إلى حالتها التلقائية أو لبدء إجراءات تنظيف أخرى.
|
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) |
يتم إرسال هذا الحدث عندما تصبح لوحة معيّنة فارغة، ويتضمّن الرمز هذا الحدث مهم لاستعادة البيانات بشكل سليم عند حدوث أخطاء وإعادة تشغيل التطبيقات عندما يتعطّل المحتوى المرتبط أو يتم إنهاؤه بشكل غير متوقّع لمنع عرض لوحات فارغة لواجهة المستخدم. على سبيل المثال، إذا تعذّر تشغيل تطبيق |
_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 ) |
يتم تشغيله عند اكتمال صورة متحركة في واجهة المستخدم. يمكنك استخدام هذا الحدث لتشغيل إجراءات لاحقة أو تغييرات في الحالة تعتمد على إكمال انتقال مرئي.
يحتوي هذا الحدث على رمز مميّز |