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

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

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

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

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

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

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

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

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

"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` की ज़्यादा सटीक वैल्यू को 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 मैच होने के बावजूद, ट्रांज़िशन में मौजूद componentcom.android.myapp — भेजे गए इवेंट में मौजूद com.android.yourapp से मैच नहीं करता.component

ट्रांज़िशन ट्रिगर

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

उदाहरण के लिए, जब दो ट्रांज़िशन — एक कॉम्पोनेंट के नाम के साथ और दूसरा कॉम्पोनेंट के नाम के बिना -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 के लिए एक टोकन शामिल होता है. इससे पता चलता है कि ऐनिमेशन के खत्म होने पर, पैनल किस वैरिएंट के साथ खत्म हुआ.