یک رویداد باعث ایجاد تغییرات در وضعیت و آغاز اقدامات میشود. رویدادها به عنوان سیگنالهایی عمل میکنند که از رابط کاربری سیستم یا از خارج از فرآیند با استفاده از یک هدف ارسال میشوند. رویدادها رابط کاربری مقیاسپذیر را در مورد رویدادهایی که نیاز به پاسخ دارند، مطلع میکنند.
یک رویداد رابط کاربری مقیاسپذیر، یک سیگنال سیستمی است که توسط تغییرات سختافزاری یا نرمافزاری فعال میشود و میتواند وضعیت یک پنل را تغییر دهد. این رویدادها، فریمورک را از رویدادهایی که نیاز به پاسخ رابط کاربری دارند، مطلع میکنند. برای کنترل دقیقتر وضعیت پنل، میتوانید علاوه بر رویدادهای سیستمی داخلی، رویدادهای سفارشی نیز تعریف کنید.
ساختار یک رویداد
یک شناسه منحصر به فرد (ID) اجباری، یک رویداد را شناسایی میکند. این شناسه نوع وقوع را دستهبندی میکند، مانند _System_AppOpenEvent
یا _System_PanelEmptyEvent
.
علاوه بر این شناسه، یک رویداد میتواند به صورت اختیاری توکنها، جفتهای کلید-مقدار را برای ارائه زمینه و جزئیات مربوط به رویداد حمل کند. این توکنها امکان فیلتر کردن دقیقتر رویدادها را فراهم میکنند و امکان اجرای انتقالها یا اقدامات را فقط تحت شرایط خاص فراهم میکنند.
توکنها به صورت فهرستی از جفتهای کلید-مقدار که با نقطهویرگول ( ;
) از هم جدا شدهاند، به رویداد ارسال میشوند. در اینجا فهرست کلیدهای پشتیبانیشده توسط سیستم آمده است:
کلید | توضیحات |
---|---|
panelId | یک پنل رابط کاربری خاص مرتبط با رویداد را شناسایی میکند. |
component | نام کامپوننت، مانند فعالیتی که به رویداد لینک شده است را مشخص میکند. |
package | نام بسته مربوط به رویداد را نشان میدهد. |
panelToVariantId | نوع هدف یک پنل را در زمینههای خاص مشخص میکند. از این ویژگی برای انیمیشنهای آبشاری با گوش دادن به انتقال یک پنل استفاده کنید. به عنوان مثال، فعال کردن انتقال پنل B به حالت بسته هنگامی که پنل A به حالت باز منتقل میشود. |
برای مثال:
"component=com.android.app;panelId=panel1"
منطق تطبیق رویداد
وقتی رویدادی ارسال میشود، باید با معیارهای تعریفشده تطبیق داده شود تا یک انتقال یا یک اقدام آغاز شود. فرآیند تطبیق در دو مرحله انجام میشود:
تطبیق دقیق
id
رویداد:id
رویداد ارسال شده باید دقیقاً باid
مشخص شده در فیلتر رویداد انتقال یا اکشن مطابقت داشته باشد. اگر شناسهها مطابقت نداشته باشند، رویداد به عنوان یک رویداد نامتناسب در نظر گرفته میشود.تطبیق جزئی توکن رویداد: وقتی شناسههای رویداد مطابقت دارند، سیستم از تطبیق جزئی برای ارزیابی توکنهای یک رویداد در برابر توکنهای تعریفشده در فیلتر استفاده میکند.
برای اینکه یک تطابق رخ دهد، تمام ویژگیهای رویداد (توکنها) که در تعریف رویداد انتقال مشخص شدهاند، باید دقیقاً با ویژگیهای مربوطه در رویداد ارسالشده مطابقت داشته باشند.
با این اوصاف، رویداد ارسالشده میتواند شامل توکنهای اضافی باشد که به صراحت در فیلتر تعریف نشدهاند. توکنهای اضافی مانع از تطابق نمیشوند. در عوض، در ارزیابی تطابق نادیده گرفته میشوند.
برعکس، اگر فیلتر توکنی را مشخص کند که در رویداد dispatched وجود ندارد، یا اگر مقدار توکن منطبق با آن همتراز نباشد، آن توکن به عنوان یک تطبیق در نظر گرفته نمیشود.
برای مثال، یک گذار (transition) را در نظر بگیرید که طوری تعریف شده است که وقتی id="app_open"
روی panelId="panel1"
با component="com.android.myapp.Activity"
رخ میدهد، فعال شود.
اگر یک رویداد dispatched دارای id="app_open"
، panelId="panel1"
و component="com.android.myapp.Activity"
باشد، یک تطابق انجام میشود. تمام معیارهای فیلتر رعایت شده و مقدار خاصتر برای Activity value in the dispatched event is considered a match for
.
با این حال، اگر رویداد dispatched با id="app_open"
، panelId="panel1"
و component="com.android.yourapp.Activity"
مطابقت نداشته باشد، این تطابق با شکست مواجه میشود. اگرچه id
و panelId
مطابقت دارند، component
که در transition با component
برابر نیست - com.android.myapp
- در رویداد dispatched 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 ) | نشان دهنده ورود سیستم به Setup Wizard (SUW) است. این رویداد، آمادگی سیستم را نشان میدهد و میتواند طوری پیکربندی شود که پس از راهاندازی اولیه سیستم، برنامهها را اجرا کند یا پنلهای تعیینشده را نمایش دهد. ورود به چنین وضعیت بحرانی سیستم، نیازمند یک رویداد اختصاصی برای فعال کردن تنظیمات یا اقدامات مناسب رابط کاربری است. |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ) | نشاندهندهی خروج سیستم از Setup Wizard (SUW) است. مشابه _System_EnterSuwEvent ، این رویداد به سیستم اجازه میدهد تا با اجرای برنامههای پیشفرض یا انتقال به یک رابط کاربری استاندارد، به تکمیل فرآیند راهاندازی پاسخ دهد. |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID پایان) | زمانی که یک انیمیشن در رابط کاربری تکمیل میشود، فعال میشود. میتوانید از این رویداد برای فعال کردن اقدامات بعدی یا تغییرات وضعیتی که به تکمیل یک گذار بصری بستگی دارند، استفاده کنید. این رویداد شامل یک توکن برای |