किसी इवेंट को कॉन्फ़िगर करना

इवेंट से, स्थिति में बदलाव होते हैं और कार्रवाइयां शुरू होती हैं. इवेंट, सिग्नल के तौर पर काम करते हैं. इन्हें सिस्टम यूज़र इंटरफ़ेस (यूआई) से या प्रोसेस के बाहर से, इंटेंट का इस्तेमाल करके भेजा जाता है. इवेंट, स्केलेबल यूज़र इंटरफ़ेस (यूआई) को उन स्थितियों के बारे में बताते हैं जिनके लिए जवाब देना ज़रूरी होता है.

स्केलेबल यूज़र इंटरफ़ेस (यूआई) इवेंट, सिस्टम सिग्नल होता है. यह हार्डवेयर या सॉफ़्टवेयर में हुए बदलावों की वजह से ट्रिगर होता है. इससे पैनल की स्थिति में बदलाव हो सकता है. इन इवेंट से फ़्रेमवर्क को उन घटनाओं के बारे में सूचना मिलती है जिनके लिए यूज़र इंटरफ़ेस (यूआई) से जवाब देने की ज़रूरत होती है. पैनल की स्थितियों को ज़्यादा सटीक तरीके से कंट्रोल करने के लिए, सिस्टम में पहले से मौजूद इवेंट के अलावा, कस्टम इवेंट भी तय किए जा सकते हैं.

किसी इवेंट का स्ट्रक्चर

ज़रूरी यूनीक आइडेंटिफ़ायर (आईडी) से किसी इवेंट की पहचान की जाती है. इस आईडी से, किसी समस्या के टाइप का पता चलता है. जैसे, _System_AppOpenEvent या _System_PanelEmptyEvent.

इस आईडी के अलावा, किसी इवेंट में टोकन और की-वैल्यू पेयर भी शामिल किए जा सकते हैं. इनसे इवेंट के बारे में कॉन्टेक्स्ट और जानकारी मिलती है. इन टोकन की मदद से, इवेंट को ज़्यादा बारीकी से फ़िल्टर किया जा सकता है. इससे ट्रांज़िशन या कार्रवाइयों को सिर्फ़ खास शर्तों के तहत ट्रिगर किया जा सकता है.

टोकन को इवेंट में, सेमी-कोलन (;) से अलग किए गए की-वैल्यू पेयर की सूची के तौर पर पास किया जाता है. यहां सिस्टम के साथ काम करने वाली कुंजियों की सूची दी गई है:

सुरक्षा कुंजी ब्यौरा
panelId यह कुकी, इवेंट से जुड़े किसी खास यूज़र इंटरफ़ेस (यूआई) पैनल की पहचान करती है.
component यह कॉम्पोनेंट का नाम बताता है. जैसे, इवेंट से जुड़ी कोई गतिविधि.
package इससे इवेंट से जुड़े पैकेज का नाम पता चलता है.
panelToVariantId यह कुकी, खास कॉन्टेक्स्ट में पैनल के टारगेट वैरिएंट के बारे में बताती है. पैनल ट्रांज़िशन को सुनकर ऐनिमेशन को कैस्केड करने के लिए, इस एट्रिब्यूट का इस्तेमाल करें. उदाहरण के लिए, जब पैनल A को ओपन स्टेट में ट्रांज़िशन किया जाता है, तब पैनल B को क्लोज़ स्टेट में ट्रांज़िशन करने के लिए ट्रिगर करना.

उदाहरण के लिए:

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

इवेंट मैचिंग लॉजिक

जब कोई इवेंट भेजा जाता है, तो ट्रांज़िशन या कार्रवाई को ट्रिगर करने के लिए, उसे तय की गई शर्तों से मैच करना ज़रूरी होता है. मैच करने की प्रोसेस दो चरणों में होती है:

  • इवेंट id का सटीक मिलान: भेजे गए इवेंट का id, ट्रांज़िशन या ऐक्शन इवेंट फ़िल्टर में बताए गए id से पूरी तरह मेल खाना चाहिए. अगर आईडी मेल नहीं खाते हैं, तो इवेंट को मेल नहीं खाने वाला इवेंट माना जाता है.

  • इवेंट टोकन का कुछ हिस्सा मैच होना: जब इवेंट आईडी मैच होते हैं, तो सिस्टम, फ़िल्टर में तय किए गए टोकन के हिसाब से इवेंट के टोकन का आकलन करने के लिए, कुछ हिस्से के मैच होने की सुविधा का इस्तेमाल करता है.

    मैच होने के लिए, ट्रांज़िशन की इवेंट डेफ़िनिशन में बताई गई सभी इवेंट प्रॉपर्टी (टोकन), भेजे गए इवेंट की प्रॉपर्टी से ज़रूर मेल खानी चाहिए.

    हालांकि, भेजे गए इवेंट में ऐसे अतिरिक्त टोकन शामिल हो सकते हैं जिन्हें फ़िल्टर में साफ़ तौर पर तय नहीं किया गया है. अतिरिक्त टोकन होने पर भी, मैचिंग की जा सकती है. इसके बजाय, इन्हें मैचिंग के आकलन में अनदेखा किया जाता है.

    इसके उलट, अगर फ़िल्टर में ऐसा टोकन दिया गया है जो भेजे गए इवेंट में मौजूद नहीं है या अगर मैच करने वाले टोकन की वैल्यू मेल नहीं खाती है, तो इसे मैच नहीं माना जाता.

उदाहरण के लिए, मान लें कि कोई ट्रांज़िशन तब ट्रिगर होता है, जब panelId="panel1" पर id="app_open" होता है और 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 — मैच होते हैं, तो सिर्फ़ कॉम्पोनेंट के नाम वाला ट्रांज़िशन ट्रिगर होता है.

इवेंट डिस्पैच और हैंडलिंग

स्केलेबल यूज़र इंटरफ़ेस (यूआई) के डाइनैमिक व्यवहार के लिए इवेंट बहुत ज़रूरी होते हैं. इवेंट को सिस्टम यूज़र इंटरफ़ेस (यूआई) या बाहरी प्रोसेस से, किसी मकसद के साथ भेजा जा सकता है.

सिस्टम इवेंट

फ़्रेमवर्क, कई सिस्टम इवेंट तय करता है. इनसे इन कार्रवाइयों को पूरा करने में मदद मिलती है:

एट्रिब्यूट ब्यौरा
_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)
इससे पता चलता है कि सिस्टम, सेटअप विज़र्ड (एसयूडब्ल्यू) में शामिल हो रहा है. यह इवेंट, सिस्टम के तैयार होने का सिग्नल देता है. इसे कॉन्फ़िगर किया जा सकता है, ताकि सिस्टम के शुरू होने के बाद ऐप्लिकेशन लॉन्च किए जा सकें या तय किए गए पैनल दिखाए जा सकें. सिस्टम की ऐसी गंभीर स्थिति में, यूज़र इंटरफ़ेस (यूआई) में ज़रूरी बदलाव करने या कार्रवाइयां करने के लिए, एक खास इवेंट को ट्रिगर करना ज़रूरी होता है.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
इससे पता चलता है कि सिस्टम, सेटअप विज़र्ड (एसयूडब्ल्यू) से बाहर निकल रहा है. _System_EnterSuwEvent की तरह ही, यह इवेंट सिस्टम को सेटअप प्रोसेस पूरी होने पर जवाब देने की अनुमति देता है. इसके लिए, सिस्टम डिफ़ॉल्ट ऐप्लिकेशन लॉन्च करता है या स्टैंडर्ड यूज़र इंटरफ़ेस (यूआई) पर स्विच करता है.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
यह इवेंट तब ट्रिगर होता है, जब यूज़र इंटरफ़ेस में ऐनिमेशन पूरा हो जाता है. इस इवेंट का इस्तेमाल, बाद की कार्रवाइयों को ट्रिगर करने या स्थिति में बदलाव करने के लिए किया जा सकता है. ये कार्रवाइयां या बदलाव, विज़ुअल ट्रांज़िशन के पूरा होने पर निर्भर करते हैं.

इस इवेंट में variantId के लिए एक टोकन होता है. इससे यह पता चलता है कि ऐनिमेशन के आखिर में पैनल का कौनसा वैरिएंट दिखाया गया.