- सिंटैक्स:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] android:directBootAware=["true" | "false"] android:documentLaunchMode=["intoExisting" | "always" | "none" | "never"] android:enabled=["true" | "false"] android:enabledOnBackInvokedCallback=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:immersive=["true" | "false"] android:label="string resource" android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance" | "singleInstancePerTask"] android:lockTaskMode=["normal" | "never" | "if_whitelisted" | "always"] android:maxRecents="integer" android:maxAspectRatio="float" android:multiprocess=["true" | "false"] android:name="string" android:noHistory=["true" | "false"] android:parentActivityName="string" android:persistableMode=["persistRootOnly" | "persistAcrossReboots" | "persistNever"] android:permission="string" android:process="string" android:relinquishTaskIdentity=["true" | "false"] android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" | "readOrWrite" | "write"] android:resizeableActivity=["true" | "false"] android:screenOrientation=["unspecified" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "userLandscape" | "userPortrait" | "sensor" | "fullSensor" | "nosensor" | "user" | "fullUser" | "locked"] android:showForAllUsers=["true" | "false"] android:stateNotNeeded=["true" | "false"] android:supportsPictureInPicture=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > ... </activity>
- इनमें शामिल है:
<application>
- इसमें ये चीज़ें शामिल हो सकती हैं:
<intent-filter>
<meta-data>
<layout>
- description:
- ऐसी ऐक्टिविटी (
Activity
सबक्लास) का एलान करता है जो ऐप्लिकेशन के विज़ुअल यूज़र इंटरफ़ेस का हिस्सा लागू करती है. सभी गतिविधियों को मेनिफ़ेस्ट फ़ाइल में<activity>
एलिमेंट से दिखाया जाना चाहिए. जिन विज्ञापनों के लिए यह एलान नहीं किया गया है उन्हें सिस्टम नहीं देखता और वे कभी नहीं चलते. - एट्रिब्यूट:
android:allowEmbedded
-
इससे पता चलता है कि गतिविधि को किसी दूसरी गतिविधि के एम्बेड किए गए चाइल्ड के तौर पर लॉन्च किया जा सकता है. ऐसा खास तौर पर तब होता है, जब चाइल्ड किसी कंटेनर में मौजूद हो, जैसे कि किसी ऐसी
Display
जिसका मालिकाना हक किसी दूसरी गतिविधि के पास हो. उदाहरण के लिए, Wear की कस्टम सूचनाओं के लिए इस्तेमाल की जाने वाली गतिविधियां, इसकी जानकारी देती हैं, ताकि Wear अपनी कॉन्टेक्स्ट स्ट्रीम में गतिविधि दिखा सके. यह स्ट्रीम, किसी दूसरी प्रोसेस में मौजूद होती है.इस एट्रिब्यूट की डिफ़ॉल्ट वैल्यू
false
है. android:allowTaskReparenting
- क्या गतिविधि को उस टास्क से उस टास्क पर ले जाया जा सकता है जिससे वह शुरू हुई थी. अगर यह टास्क से दूसरे टास्क पर जा सकता है, तो इसे
"true"
के तौर पर सेट करें. अगर यह टास्क से दूसरे टास्क पर नहीं जा सकता, तो इसे"false"
के तौर पर सेट करें.अगर यह एट्रिब्यूट सेट नहीं है, तो
<application>
एलिमेंट केallowTaskReparenting
एट्रिब्यूट की वैल्यू, गतिविधि पर लागू होती है. डिफ़ॉल्ट वैल्यू"false"
है.आम तौर पर, जब कोई गतिविधि शुरू की जाती है, तो वह उस गतिविधि के टास्क से जुड़ी होती है जिसने उसे शुरू किया है. यह टास्क, गतिविधि के पूरे जीवनकाल तक उससे जुड़ा रहता है. इस एट्रिब्यूट का इस्तेमाल करके, उस टास्क को फिर से पैरंट के तौर पर जोड़ा जा सकता है जिससे यह जुड़ा है. ऐसा तब किया जा सकता है, जब इसका मौजूदा टास्क न दिखे. आम तौर पर, इसका इस्तेमाल किसी ऐप्लिकेशन की गतिविधियों को उस ऐप्लिकेशन से जुड़े मुख्य टास्क पर ले जाने के लिए किया जाता है.
उदाहरण के लिए, अगर किसी ईमेल मैसेज में किसी वेब पेज का लिंक शामिल है, तो लिंक पर क्लिक करने से एक गतिविधि दिखती है. इस गतिविधि से, पेज को दिखाया जा सकता है. उस गतिविधि को ब्राउज़र ऐप्लिकेशन से तय किया जाता है, लेकिन उसे ईमेल टास्क के हिस्से के तौर पर लॉन्च किया जाता है. अगर इसे ब्राउज़र टास्क के साथ फिर से जोड़ा जाता है, तो यह तब दिखता है, जब ब्राउज़र अगली बार फ़्रंट पर आता है. साथ ही, ईमेल टास्क फिर से फ़्रंट पर आने पर, यह नहीं दिखता.
किसी गतिविधि की दिलचस्पी,
taskAffinity
एट्रिब्यूट से तय होती है. किसी टास्क की अफ़िनिटी, उसकी रूट गतिविधि की अफ़िनिटी को पढ़कर तय की जाती है. इसलिए, परिभाषा के हिसाब से, रूट गतिविधि हमेशा एक ही तरह के अफ़िनिटी वाले टास्क में होती है."singleTask"
या"singleInstance"
लॉन्च मोड वाली गतिविधियां, सिर्फ़ किसी टास्क के रूट में हो सकती हैं. इसलिए, टास्क को फिर से पैरंट के तौर पर सेट करने की सुविधा,"standard"
और"singleTop"
मोड तक ही सीमित है. (launchMode
एट्रिब्यूट भी देखें.) android:alwaysRetainTaskState
- क्या सिस्टम हमेशा उस टास्क की स्थिति को बनाए रखता है जिसमें गतिविधि की गई है.
"true"
अगर ऐसा है, तो"false"
क्या सिस्टम कुछ स्थितियों में टास्क को उसकी शुरुआती स्थिति पर रीसेट कर सकता है. डिफ़ॉल्ट वैल्यू"false"
है. यह एट्रिब्यूट सिर्फ़ किसी टास्क की रूट गतिविधि के लिए काम का होता है. इसे अन्य सभी गतिविधियों के लिए अनदेखा किया जाता है.आम तौर पर, सिस्टम किसी टास्क को मिटा देता है. साथ ही, रूट टास्क के ऊपर मौजूद स्टैक से सभी टास्क हटा देता है. ऐसा कुछ मामलों में होता है, जब उपयोगकर्ता होम स्क्रीन से उस टास्क को फिर से चुनता है. आम तौर पर, ऐसा तब किया जाता है, जब उपयोगकर्ता ने टास्क पर 30 मिनट जैसे किसी तय समय तक विज़िट न किया हो.
हालांकि, जब इस एट्रिब्यूट की वैल्यू
"true"
होती है, तो उपयोगकर्ता हमेशा टास्क पर वापस आते हैं. भले ही, वे किसी भी तरह से टास्क पर वापस आए हों. यह वेब ब्राउज़र जैसे ऐप्लिकेशन में काम आता है, जहां कई खुले टैब जैसे कई स्टेटस होते हैं. उपयोगकर्ता इन स्टेटस को नहीं खोना चाहते. android:autoRemoveFromRecents
- इस एट्रिब्यूट की मदद से शुरू की गई गतिविधि से शुरू किए गए टास्क, हाल ही की गतिविधि स्क्रीन पर तब तक दिखते हैं, जब तक टास्क में आखिरी गतिविधि पूरी नहीं हो जाती. अगर
true
, तो टास्क को हाल ही में इस्तेमाल किए गए आइटम की स्क्रीन से अपने-आप हटा दिया जाता है. इससे कॉलर केFLAG_ACTIVITY_RETAIN_IN_RECENTS
के इस्तेमाल को बदल दिया जाता है. यह वैल्यू, बूलियन वैल्यू होनी चाहिए. जैसे,"true"
या"false"
. android:banner
- ड्रॉ किए जा सकने वाला संसाधन, जो उससे जुड़े आइटम के लिए बड़ा ग्राफ़िक बैनर उपलब्ध कराता है. किसी खास गतिविधि के लिए डिफ़ॉल्ट बैनर देने के लिए,
<activity>
टैग के साथ इस्तेमाल करें. इसके अलावा, ऐप्लिकेशन की सभी गतिविधियों के लिए बैनर देने के लिए,<application>
टैग के साथ इस्तेमाल करें.सिस्टम, Android TV की होम स्क्रीन पर किसी ऐप्लिकेशन को दिखाने के लिए बैनर का इस्तेमाल करता है. बैनर सिर्फ़ होम स्क्रीन पर दिखता है. इसलिए, इसे सिर्फ़ उन ऐप्लिकेशन के लिए तय किया जाता है जिनमें ऐसी ऐक्टिविटी होती है जो
CATEGORY_LEANBACK_LAUNCHER
इंटेंट को मैनेज करती है.इस एट्रिब्यूट को, इमेज वाले ड्रॉबल संसाधन के रेफ़रंस के तौर पर सेट किया जाता है. जैसे,
"@drawable/banner"
. कोई डिफ़ॉल्ट बैनर नहीं है.ज़्यादा जानकारी के लिए, टीवी ऐप्लिकेशन इस्तेमाल करना लेख में होम स्क्रीन पर बैनर उपलब्ध कराना देखें.
android:canDisplayOnRemoteDevices
-
इससे पता चलता है कि गतिविधि को किसी ऐसे रिमोट डिवाइस पर दिखाया जा सकता है या नहीं जिस पर Android हो सकता है या नहीं. यह वैल्यू, बूलियन वैल्यू होनी चाहिए. जैसे,
"true"
या"false"
.इस एट्रिब्यूट की डिफ़ॉल्ट वैल्यू
"true"
है. android:clearTaskOnLaunch
- होम स्क्रीन से टास्क को फिर से लॉन्च करने पर, रूट गतिविधि को छोड़कर, टास्क से सभी गतिविधियां हटाई जाती हैं या नहीं.
"true"
अगर टास्क को हमेशा उसकी रूट गतिविधि तक सीमित रखा जाता है, तो"false"
. डिफ़ॉल्ट वैल्यू"false"
है. यह एट्रिब्यूट सिर्फ़ उन गतिविधियों के लिए काम का है जो कोई नया टास्क शुरू करती हैं. जैसे, रूट गतिविधि. टास्क में मौजूद अन्य सभी गतिविधियों के लिए, इसे अनदेखा कर दिया जाता है.जब वैल्यू
"true"
होती है, तो उपयोगकर्ता जब भी टास्क शुरू करते हैं, तो उन्हें उसकी रूट गतिविधि पर ले जाया जाता है. भले ही, वे टास्क में आखिरी बार क्या कर रहे थे और भले ही, उन्होंने टास्क छोड़ने के लिए, 'वापस जाएं' या 'होम' बटन का इस्तेमाल किया हो. अगर वैल्यू"false"
है, तो कुछ मामलों में टास्क से गतिविधियों को हटाया जा सकता है. हालांकि, ऐसा हमेशा नहीं किया जा सकता. ज़्यादा जानकारी के लिए,alwaysRetainTaskState
एट्रिब्यूट देखें.मान लें कि उपयोगकर्ता, होम स्क्रीन से गतिविधि P को लॉन्च करता है और वहां से गतिविधि Q पर जाता है. इसके बाद, उपयोगकर्ता 'होम' पर टैप करता है और फिर गतिविधि P पर वापस जाता है. आम तौर पर, उपयोगकर्ता को गतिविधि Q दिखती है, क्योंकि वह आखिरी बार P के टास्क में यही कर रहा था. हालांकि, अगर P ने इस फ़्लैग को
"true"
पर सेट किया है, तो होम स्क्रीन से गतिविधि P को लॉन्च करने पर, उसके ऊपर मौजूद सभी गतिविधियां हटा दी जाती हैं. इस मामले में, Q को हटा दिया जाता है. इसलिए, टास्क पर वापस जाने पर उपयोगकर्ता को सिर्फ़ P दिखता है.अगर इस एट्रिब्यूट और
allowTaskReparenting
के लिए वैल्यू"true"
है, तो जिन गतिविधियों को फिर से पैरंट के तौर पर जोड़ा जा सकता है उन्हें उस टास्क में ले जाया जाता है जिससे वे मिलती-जुलती हैं. इसके बाद, बाकी गतिविधियों को हटा दिया जाता है.अगर
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
सेट नहीं किया गया है, तो इस एट्रिब्यूट को अनदेखा कर दिया जाता है. android:colorMode
ऐक्टिविटी के कलर मोड की जानकारी देता है. अगर इसकी वैल्यू दी गई है, तो यह
hdr
याwideColorGamut
हो सकती है.अगर
hdr
, डिवाइस के साथ काम करने पर गतिविधि को हाई डाइनैमिक रेंज में दिखाने का अनुरोध करता है.अगर
wideColorGamut
, गतिविधि को काम करने वाले डिवाइसों पर वाइड कलर गैमट मोड में दिखाने का अनुरोध करता है. वाइड कलर गैमट मोड में, विंडोSRGB
गैमट के बाहर रेंडर कर सकती है, ताकि ज़्यादा चमकदार रंग दिखाए जा सकें. अगर डिवाइस पर वाइड कलर गैमट रेंडरिंग की सुविधा काम नहीं करती, तो इस एट्रिब्यूट का कोई असर नहीं पड़ता. वाइड कलर मोड में रेंडर करने के बारे में ज़्यादा जानने के लिए, वाइड कलर कॉन्टेंट की मदद से ग्राफ़िक को बेहतर बनाना देखें.android:configChanges
- कॉन्फ़िगरेशन में ऐसे बदलावों की सूची बनाता है जिन्हें गतिविधि खुद मैनेज करती है. जब रनटाइम के दौरान कॉन्फ़िगरेशन में कोई बदलाव होता है, तो गतिविधि बंद हो जाती है और डिफ़ॉल्ट रूप से फिर से शुरू हो जाती है. हालांकि, इस एट्रिब्यूट की मदद से कॉन्फ़िगरेशन का एलान करने पर, गतिविधि फिर से शुरू नहीं होती. इसके बजाय, गतिविधि जारी रहती है और उसका
onConfigurationChanged()
तरीका इस्तेमाल किया जाता है.ध्यान दें: ऐप्लिकेशन की परफ़ॉर्मेंस और रिस्पॉन्सिवनेस को बेहतर बनाने के लिए, इस एट्रिब्यूट का इस्तेमाल सिर्फ़ खास मामलों में करें. ज़्यादा जानकारी के लिए, कॉन्फ़िगरेशन में बदलाव मैनेज करना लेख पढ़ें.
इस एट्रिब्यूट के लिए, ये स्ट्रिंग मान्य वैल्यू हैं. एक से ज़्यादा वैल्यू को
|
से अलग किया जाता है, जैसे कि"locale|navigation|orientation"
.वैल्यू ब्यौरा "colorMode"
स्क्रीन के कलर मोड (कलर गैमट या डाइनैमिक रेंज) की सुविधाएं बदल गई हैं.
ध्यान दें:
colorMode
एट्रिब्यूट की मदद से या रनटाइम के दौरान, गतिविधि के लिए अनुरोध किया गया रंग मोड, अलग-अलग रंग मोड की सुविधा से अलग होता है. किसी गतिविधि के रंग मोड में बदलाव करने से, कॉन्फ़िगरेशन में बदलाव नहीं होता. इसकी वजह यह है कि डिसप्ले की कलर क्षमताओं में कोई बदलाव नहीं हुआ है."density"
डिसप्ले की डेंसिटी में बदलाव, जैसे कि जब उपयोगकर्ता कोई अलग डिसप्ले स्केल तय करता है या कोई दूसरा डिसप्ले चालू होता है.
एपीआई लेवल 24 में जोड़ा गया.
"fontScale"
फ़ॉन्ट स्केलिंग फ़ैक्टर में बदलाव, जैसे कि जब उपयोगकर्ता कोई नया ग्लोबल फ़ॉन्ट साइज़ चुनता है. "fontWeightAdjustment"
फ़ॉन्ट की मोटाई में हुई बढ़ोतरी की संख्या बदल गई है. "grammaticalGender"
भाषा के व्याकरण के हिसाब से लिंग बदल गया है. देखें GrammaticalInflectionManager
.एपीआई लेवल 34 में जोड़ा गया.
"keyboard"
कीबोर्ड टाइप में बदलाव, जैसे कि जब उपयोगकर्ता कोई बाहरी कीबोर्ड प्लग इन करता है. "keyboardHidden"
कीबोर्ड की सुलभता में बदलाव, जैसे कि जब उपयोगकर्ता हार्डवेयर कीबोर्ड को दिखाता है. "layoutDirection"
लेआउट की दिशा में बदलाव, जैसे कि बाएं से दाएं (LTR) से दाएं से बाएं (RTL) में.
एपीआई लेवल 17 में जोड़ा गया.
"locale"
स्थानीय भाषा में बदलाव होना. जैसे, जब उपयोगकर्ता कोई नई भाषा चुनता है, तो टेक्स्ट उस भाषा में दिखता है. "mcc"
मोबाइल देश कोड (एमसीसी) में बदलाव, जब ऐसा सिम कार्ड का पता चलता है जो एमसीसी को अपडेट करता है. "mnc"
आईएमएसआई मोबाइल नेटवर्क कोड (एमएनसी) में बदलाव तब होता है, जब ऐसा सिम कार्ड इस्तेमाल किया जाता है जो एमएनसी को अपडेट करता है. "navigation"
TA नेविगेशन टाइप (ट्रैकबॉल या डी-पैड) में बदलें. आम तौर पर, ऐसा नहीं होता. "orientation"
स्क्रीन के ओरिएंटेशन में बदलाव, जैसे कि जब उपयोगकर्ता डिवाइस को घुमाता है.
ध्यान दें: अगर आपका ऐप्लिकेशन, Android 3.2 (एपीआई लेवल 13) या उसके बाद के वर्शन को टारगेट करता है, तो
"screenLayout"
और"screenSize"
कॉन्फ़िगरेशन के बारे में भी बताएं. ऐसा इसलिए, क्योंकि डिवाइस के पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के बीच स्विच करने पर, स्क्रीन लेआउट और स्क्रीन साइज़ बदल सकता है."screenLayout"
स्क्रीन लेआउट में बदलाव, जैसे कि कोई दूसरा डिसप्ले चालू होने पर. "screenSize"
स्क्रीन के मौजूदा साइज़ में बदलाव.
यह मौजूदा आसपेक्ट रेशियो के हिसाब से, फ़िलहाल उपलब्ध साइज़ में हुए बदलाव को दिखाता है. इसलिए, जब उपयोगकर्ता लैंडस्केप और पोर्ट्रेट के बीच स्विच करता है, तो यह बदल जाता है.
एपीआई लेवल 13 में जोड़ा गया.
"smallestScreenSize"
स्क्रीन के साइज़ में बदलाव.
यह ओरिएंटेशन के बावजूद, साइज़ में हुए बदलाव को दिखाता है. इसलिए, यह सिर्फ़ तब बदलता है, जब स्क्रीन का असल साइज़ बदलता है. जैसे, किसी बाहरी डिसप्ले पर स्विच करना. इस कॉन्फ़िगरेशन में बदलाव करने पर,
smallestWidth
कॉन्फ़िगरेशन में भी बदलाव होता है.एपीआई लेवल 13 में जोड़ा गया.
"touchscreen"
टचस्क्रीन में बदलाव. आम तौर पर, ऐसा नहीं होता. "uiMode"
यूज़र इंटरफ़ेस मोड में बदलाव. जैसे, जब उपयोगकर्ता डिवाइस को डेस्क या कार डॉक में रखता है या नाइट मोड बदलता है. यूज़र इंटरफ़ेस (यूआई) के अलग-अलग मोड के बारे में ज़्यादा जानकारी के लिए, UiModeManager
देखें.एपीआई लेवल 8 में जोड़ा गया.
कॉन्फ़िगरेशन में किए गए इन सभी बदलावों से, ऐप्लिकेशन को दिखने वाली संसाधन वैल्यू पर असर पड़ सकता है. इसलिए, जब
onConfigurationChanged()
को कॉल किया जाता है, तो आम तौर पर बदलाव को सही तरीके से मैनेज करने के लिए, व्यू लेआउट और ड्रॉबल के साथ-साथ सभी संसाधनों को फिर से हासिल करना ज़रूरी होता है.ध्यान दें: मल्टी-विंडो से जुड़े कॉन्फ़िगरेशन में बदलाव करने के लिए,
"screenLayout"
और"smallestScreenSize"
, दोनों का इस्तेमाल करें. मल्टी-विंडो की सुविधा, Android 7.0 (एपीआई लेवल 24) या इसके बाद के वर्शन पर काम करती है. android:directBootAware
गतिविधि डायरेक्ट-बूट के बारे में जानकारी रखती है या नहीं. इसका मतलब है कि उपयोगकर्ता के डिवाइस को अनलॉक करने से पहले, यह गतिविधि चल सकती है या नहीं.
ध्यान दें: डायरेक्ट बूट के दौरान, आपके ऐप्लिकेशन में मौजूद कोई गतिविधि सिर्फ़ उस डेटा को ऐक्सेस कर सकती है जो डिवाइस के सुरक्षित स्टोरेज में सेव होता है.
डिफ़ॉल्ट वैल्यू
"false"
है.android:documentLaunchMode
- इससे पता चलता है कि किसी टास्क को लॉन्च करने पर, उसमें गतिविधि का नया इंस्टेंस कैसे जोड़ा जाता है.
इस एट्रिब्यूट की मदद से, उपयोगकर्ता को एक ही ऐप्लिकेशन के कई दस्तावेज़, हाल ही में इस्तेमाल किए गए ऐप्लिकेशन वाली स्क्रीन पर दिख सकते हैं.
इस एट्रिब्यूट की चार वैल्यू होती हैं. इनसे, उपयोगकर्ता के ऐप्लिकेशन से कोई दस्तावेज़ खोलने पर ये असर पड़ते हैं:
वैल्यू ब्यौरा "intoExisting"
सिस्टम, ऐसा टास्क खोजता है जिसका बेस इंटेंट का ComponentName
और डेटा यूआरआई, लॉन्च करने वाले इंटेंट से मैच करता हो. अगर सिस्टम को ऐसा कोई टास्क मिलता है, तो सिस्टम उस टास्क को हटा देता है और फिर से शुरू हो जाता है. साथ ही, रूट गतिविधि कोonNewIntent(android.content.Intent)
पर कॉल मिलता है. अगर सिस्टम को ऐसा कोई टास्क नहीं मिलता है, तो सिस्टम एक नया टास्क बनाता है."always"
इस गतिविधि से, दस्तावेज़ के लिए एक नया टास्क बन जाता है. भले ही, दस्तावेज़ पहले से ही खुला हो. यह FLAG_ACTIVITY_NEW_DOCUMENT
औरFLAG_ACTIVITY_MULTIPLE_TASK
, दोनों फ़्लैग को सेट करने जैसा ही है."none"
गतिविधि के लिए नया टास्क नहीं बनता. यह डिफ़ॉल्ट वैल्यू है, जो सिर्फ़ FLAG_ACTIVITY_NEW_TASK
सेट होने पर नया टास्क बनाती है. हाल ही में इस्तेमाल किए गए आइटम की स्क्रीन पर, ऐक्टिविटी को डिफ़ॉल्ट तौर पर दिखाया जाता है: इसमें ऐप्लिकेशन के लिए एक टास्क दिखता है. यह टास्क उसी ऐक्टिविटी से शुरू होता है जिसे उपयोगकर्ता ने आखिरी बार इस्तेमाल किया था."never"
भले ही, इंटेंट में FLAG_ACTIVITY_NEW_DOCUMENT
शामिल हो, लेकिन गतिविधि को नए दस्तावेज़ में लॉन्च नहीं किया जाता. अगर गतिविधि में इनमें से कोई एक फ़्लैग सेट है, तो इस सेटिंग को सेट करने पर,FLAG_ACTIVITY_NEW_DOCUMENT
औरFLAG_ACTIVITY_MULTIPLE_TASK
फ़्लैग के व्यवहार पर असर पड़ता है. साथ ही, हाल ही की स्क्रीन पर ऐप्लिकेशन के लिए एक टास्क दिखता है. यह टास्क, उस गतिविधि से फिर से शुरू होता है जिसे उपयोगकर्ता ने आखिरी बार इस्तेमाल किया था.ध्यान दें:
"none"
और"never"
के अलावा अन्य वैल्यू के लिए, गतिविधि कोlaunchMode="standard"
के साथ दिखाया जाता है. अगर इस एट्रिब्यूट की वैल्यू सबमिट नहीं की जाती है, तोdocumentLaunchMode="none"
का इस्तेमाल किया जाता है. android:enabled
- क्या सिस्टम, गतिविधि को इंस्टैंशिएट कर सकता है. अगर ऐसा किया जा सकता है, तो
"true"
डालें और अगर नहीं, तो"false"
डालें. डिफ़ॉल्ट वैल्यू"true"
है.<application>
एलिमेंट का अपनाenabled
एट्रिब्यूट होता है. यह एट्रिब्यूट, गतिविधियों के साथ-साथ ऐप्लिकेशन के सभी कॉम्पोनेंट पर लागू होता है.<application>
और<activity>
, दोनों एट्रिब्यूट की वैल्यू"true"
होनी चाहिए, क्योंकि ये दोनों डिफ़ॉल्ट रूप से"true"
होती हैं. इससे सिस्टम, गतिविधि को इंस्टैंशिएट कर पाता है. अगर कोई भी"false"
है, तो उसे इंस्टैंशिएट नहीं किया जा सकता. android:enableOnBackInvokedCallback
- इस फ़्लैग की मदद से, गतिविधि के लेवल पर सिस्टम के अनुमानित ऐनिमेशन के लिए ऑप्ट-इन किया जा सकता है. इस व्यवहार की वजह से, कई गतिविधियों वाले बड़े ऐप्लिकेशन को, अनुमानित बैक जेस्चर पर माइग्रेट करना आसान हो जाता है.
android:enableOnBackInvokedCallback=false
सेटिंग से, ऐक्शन के लेवल पर या ऐप्लिकेशन के लेवल पर, अनुमानित बैक ऐनिमेशन बंद हो जाते हैं. यह इस बात पर निर्भर करता है कि आपने टैग कहां सेट किया है. साथ ही, यह सिस्टम कोOnBackInvokedCallback
प्लैटफ़ॉर्म एपीआई के कॉल को अनदेखा करने का निर्देश देता है. android:excludeFromRecents
इस गतिविधि से शुरू किए गए टास्क को हाल ही की गतिविधियों की स्क्रीन से हटाया जाए या नहीं. इसका मतलब है कि जब यह गतिविधि किसी नए टास्क की रूट गतिविधि होती है, तो यह एट्रिब्यूट यह तय करता है कि टास्क, हाल ही में इस्तेमाल किए गए ऐप्लिकेशन की सूची में दिखेगा या नहीं. अगर टास्क को सूची से हटाया गया है, तो यह
"true"
होगा. अगर टास्क को सूची में शामिल किया गया है, तो यह"false"
होगा. डिफ़ॉल्ट वैल्यू"false"
है.android:exported
क्या इस ऐक्टिविटी को अन्य ऐप्लिकेशन के कॉम्पोनेंट से लॉन्च किया जा सकता है:
- अगर
"true"
है, तो गतिविधि को किसी भी ऐप्लिकेशन से ऐक्सेस किया जा सकता है. साथ ही, इसे क्लास के सटीक नाम से लॉन्च किया जा सकता है. - अगर
"false"
है, तो गतिविधि को सिर्फ़ एक ही ऐप्लिकेशन के कॉम्पोनेंट, एक ही उपयोगकर्ता आईडी वाले ऐप्लिकेशन या खास सुविधाओं वाले सिस्टम कॉम्पोनेंट लॉन्च कर सकते हैं. जब कोई इंटेंट फ़िल्टर नहीं होता है, तो यह डिफ़ॉल्ट वैल्यू होती है.
अगर आपके ऐप्लिकेशन की किसी गतिविधि में इंटेंट फ़िल्टर शामिल हैं, तो अन्य ऐप्लिकेशन को इसे शुरू करने की अनुमति देने के लिए, इस एलिमेंट को
"true"
पर सेट करें. उदाहरण के लिए, अगर गतिविधि ऐप्लिकेशन की मुख्य गतिविधि है और इसमेंcategory
android.intent.category.LAUNCHER
शामिल है.अगर यह एलिमेंट
"false"
पर सेट है और कोई ऐप्लिकेशन गतिविधि शुरू करने की कोशिश करता है, तो सिस्टमActivityNotFoundException
दिखाता है.किसी गतिविधि को दूसरे ऐप्लिकेशन के लिए सीमित करने का यह एकमात्र तरीका नहीं है. अनुमतियों का इस्तेमाल, गतिविधि को ट्रिगर करने वाली बाहरी इकाइयों को सीमित करने के लिए भी किया जाता है.
permission
एट्रिब्यूट देखें.- अगर
android:finishOnTaskLaunch
- रूट गतिविधि को छोड़कर, गतिविधि का मौजूदा इंस्टेंस बंद हो जाता है या नहीं. ऐसा तब होता है, जब उपयोगकर्ता होम स्क्रीन पर टास्क चुनकर उसे फिर से लॉन्च करता है. अगर यह बंद है, तो
"true"
और अगर नहीं है, तो"false"
डालें. डिफ़ॉल्ट वैल्यू"false"
है.अगर इस एट्रिब्यूट और
allowTaskReparenting
एट्रिब्यूट की वैल्यू दोनों"true"
है, तो इस एट्रिब्यूट की वैल्यू को प्राथमिकता दी जाएगी. गतिविधि के अफ़िनिटी को अनदेखा किया जाता है. गतिविधि को फिर से पैरंट नहीं किया जाता, बल्कि उसे मिटा दिया जाता है.अगर
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
सेट नहीं किया गया है, तो इस एट्रिब्यूट को अनदेखा कर दिया जाता है. android:hardwareAccelerated
- इस गतिविधि के लिए, हार्डवेयर से तेज़ी लाने की सुविधा चालू है या नहीं. अगर यह चालू है, तो
"true"
डालें और अगर नहीं है, तो"false"
डालें. डिफ़ॉल्ट वैल्यू"false"
है.Android 3.0 और इसके बाद के वर्शन पर, ऐप्लिकेशन के लिए हार्डवेयर से तेज़ किया गया OpenGL रेंडरर उपलब्ध है. इससे, 2D ग्राफ़िक्स से जुड़े कई सामान्य ऑपरेशन की परफ़ॉर्मेंस बेहतर होती है. हार्डवेयर से तेज़ किए गए रेंडरर की सुविधा चालू होने पर, कैनवस, पेंट, Xfermode, ColorFilter, शेडर, और कैमरे में ज़्यादातर कार्रवाइयां तेज़ी से होती हैं.
इससे ऐनिमेशन और स्क्रोलिंग बेहतर तरीके से काम करती है. साथ ही, ऐप्लिकेशन के रिस्पॉन्स में भी बढ़ोतरी होती है. ऐसा उन ऐप्लिकेशन के लिए भी होता है जो फ़्रेमवर्क की OpenGL लाइब्रेरी का इस्तेमाल नहीं करते. हार्डवेयर एक्सेलरेशन की सुविधा चालू करने के लिए ज़्यादा संसाधनों की ज़रूरत होती है. इस वजह से, आपका ऐप्लिकेशन ज़्यादा रैम का इस्तेमाल करता है.
OpenGL 2D के सभी ऑपरेशन तेज़ नहीं किए जाते. अगर हार्डवेयर से तेज़ी लाने की सुविधा वाले रेंडरर को चालू किया जाता है, तो जांचें कि आपका ऐप्लिकेशन, रेंडरर का इस्तेमाल बिना किसी गड़बड़ी के कर सकता है या नहीं.
android:icon
गतिविधि को दिखाने वाला आइकॉन. यह आइकॉन, उपयोगकर्ताओं को तब दिखाया जाता है, जब स्क्रीन पर गतिविधि को दिखाना ज़रूरी हो. उदाहरण के लिए, टास्क शुरू करने वाली गतिविधियों के आइकॉन, लॉन्चर विंडो में दिखाए जाते हैं. आइकॉन के साथ अक्सर एक लेबल होता है. लेबल के बारे में जानकारी के लिए,
android:label
एट्रिब्यूट देखें.इस एट्रिब्यूट को, इमेज की परिभाषा वाले ड्रॉबल संसाधन के रेफ़रंस के तौर पर सेट किया जाता है. अगर यह सेट नहीं है, तो इसके बजाय पूरे ऐप्लिकेशन के लिए तय किए गए आइकॉन का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए,
<application>
एलिमेंट केicon
एट्रिब्यूट देखें.गतिविधि का आइकॉन, यहां सेट किया गया हो या
<application>
एलिमेंट से, यह गतिविधि के सभी इंटेंट फ़िल्टर के लिए डिफ़ॉल्ट आइकॉन भी होता है. ज़्यादा जानकारी के लिए,<intent-filter>
एलिमेंट काicon
एट्रिब्यूट देखें.android:immersive
- मौजूदा गतिविधि के लिए, इमर्सिव मोड की सेटिंग सेट करता है. अगर यह
"true"
है, तोActivityInfo.flags
सदस्य काFLAG_IMMERSIVE
बिट हमेशा सेट रहता है. भले ही,setImmersive()
तरीके का इस्तेमाल करके, रनटाइम के दौरान इमर्सिव मोड बदल जाए. android:label
गतिविधि के लिए उपयोगकर्ता के पढ़ने लायक लेबल. जब उपयोगकर्ता को गतिविधि दिखाई जाती है, तब लेबल स्क्रीन पर दिखता है. यह अक्सर गतिविधि के आइकॉन के साथ दिखता है. अगर यह एट्रिब्यूट सेट नहीं है, तो पूरे ऐप्लिकेशन के लिए सेट किए गए लेबल का इस्तेमाल किया जाता है.
<application>
एलिमेंट काlabel
एट्रिब्यूट देखें.ऐक्टिविटी का लेबल, यहां या
<application>
एलिमेंट से सेट किया गया हो, यह ऐक्टिविटी के सभी इंटेंट फ़िल्टर के लिए डिफ़ॉल्ट लेबल भी होता है. ज़्यादा जानकारी के लिए,<intent-filter>
एलिमेंट काlabel
एट्रिब्यूट देखें.लेबल को स्ट्रिंग संसाधन के रेफ़रंस के तौर पर सेट किया जाता है, ताकि इसे उपयोगकर्ता इंटरफ़ेस में मौजूद अन्य स्ट्रिंग की तरह स्थानीय भाषा में अनुवाद किया जा सके. हालांकि, ऐप्लिकेशन डेवलप करते समय, इसे रॉ स्ट्रिंग के तौर पर भी सेट किया जा सकता है.
android:launchMode
गतिविधि शुरू करने का तरीका. पांच मोड होते हैं, जो
Intent
ऑब्जेक्ट में गतिविधि फ़्लैग (FLAG_ACTIVITY_*
कॉन्स्टेंट) के साथ मिलकर काम करते हैं. इससे यह तय होता है कि किसी इंटेंट को मैनेज करने के लिए गतिविधि को कॉल करने पर क्या होगा:"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
डिफ़ॉल्ट मोड
"standard"
है.नीचे दी गई टेबल में दिखाया गया है कि मोड दो मुख्य ग्रुप में आते हैं. एक तरफ़
"standard"
और"singleTop"
गतिविधियां और दूसरी तरफ़"singleTask"
,"singleInstance"
, और"singleInstancePerTask"
गतिविधियां होती हैं."standard"
या"singleTop"
लॉन्च मोड वाली गतिविधि को कई बार इंस्टैंशिएट किया जा सकता है.इंस्टेंस किसी भी टास्क से जुड़े हो सकते हैं और गतिविधि टास्क में कहीं भी हो सकते हैं. आम तौर पर, उन्हें उस टास्क में लॉन्च किया जाता है जिसने
startActivity()
को कॉल किया है. ऐसा तब तक होता है, जब तकIntent
ऑब्जेक्ट में कोईFLAG_ACTIVITY_NEW_TASK
निर्देश न हो. ऐसे में, कोई दूसरा टास्क चुना जाता है. ज़्यादा जानकारी के लिए,taskAffinity
एट्रिब्यूट देखें.इसके उलट,
"singleTask"
,"singleInstance"
, और"singleInstancePerTask"
गतिविधियों का व्यवहार अलग होता है."singleInstancePerTask"
हमेशा गतिविधि टास्क के रूट में होता है. साथ ही, डिवाइस पर एक समय में"singleInstance"
गतिविधि का सिर्फ़ एक इंस्टेंस हो सकता है. वहीं,FLAG_ACTIVITY_MULTIPLE_TASK
याFLAG_ACTIVITY_NEW_DOCUMENT
सेट होने पर,"singleInstancePerTask
गतिविधि को अलग-अलग टास्क में कई बार इंस्टैंशिएट किया जा सकता है."singleTask"
लॉन्च मोड वाली गतिविधि में,"singleInstance"
और"singleInstancePerTask"
के व्यवहार को जोड़ा जाता है: गतिविधि को कई बार इंस्टैंशिएट किया जा सकता है और एक हीtaskAffinity
के टास्क में कहीं भी रखा जा सकता है. हालांकि, डिवाइस में गतिविधि टास्क के रूट में"singleTask"
गतिविधि को ढूंढने के लिए, सिर्फ़ एक टास्क हो सकता है."standard"
और"singleTop"
मोड एक मामले में एक-दूसरे से अलग होते हैं: जब भी किसी"standard"
गतिविधि के लिए नया इंटेंट होता है, तो उस इंटेंट का जवाब देने के लिए क्लास का एक नया इंस्टेंस बनाया जाता है. हर इंस्टेंस, एक ही इंटेंट को हैंडल करता है. इसी तरह, किसी नए इंटेंट को मैनेज करने के लिए,"singleTop"
गतिविधि का नया इंस्टेंस भी बनाया जा सकता है.हालांकि, अगर टारगेट टास्क के स्टैक में सबसे ऊपर पहले से ही ऐक्टिविटी का कोई मौजूदा इंस्टेंस है, तो उस इंस्टेंस को
onNewIntent()
कॉल में नया इंटेंट मिलता है. नया इंस्टेंस नहीं बनाया जाता. अगर ऐसा नहीं है, तो"singleTop"
ऐक्टिविटी का कोई मौजूदा इंस्टेंस टारगेट टास्क में है, लेकिन स्टैक में सबसे ऊपर नहीं है या वह स्टैक में सबसे ऊपर है, लेकिन टारगेट टास्क में नहीं है, तो एक नया इंस्टेंस बनाया जाता है और उसे स्टैक में जोड़ दिया जाता है.इसी तरह, अगर उपयोगकर्ता मौजूदा स्टैक पर किसी गतिविधि पर अपने ऊपर जाता है, तो व्यवहार को पैरंट गतिविधि के लॉन्च मोड से तय किया जाता है. अगर पैरंट गतिविधि का लॉन्च मोड
singleTop
है याup
इंटेंट मेंFLAG_ACTIVITY_CLEAR_TOP
है, तो पैरंट को स्टैक के सबसे ऊपर लाया जाता है और उसकी स्थिति को बनाए रखा जाता है.नेविगेशन इंटेंट, पैरंट गतिविधि के
onNewIntent()
तरीके से मिलता है. अगर पैरंट गतिविधि का लॉन्च मोडstandard
है औरup
इंटेंट मेंFLAG_ACTIVITY_CLEAR_TOP
शामिल नहीं है, तो मौजूदा गतिविधि और उसकी पैरंट, दोनों स्टैक से बाहर निकल जाती हैं. साथ ही, नेविगेशन इंटेंट पाने के लिए पैरंट गतिविधि का एक नया इंस्टेंस बनाया जाता है."singleInstance"
मोड,"singleTask"
और"singleInstancePerTask"
से सिर्फ़ एक मामले में अलग होता है:"singleTask"
या"singleInstancePerTask"
लॉन्च मोड वाली गतिविधि, अन्य गतिविधियों को अपने टास्क का हिस्सा बनाती है. इनमें"standard"
और"singleTop"
गतिविधियां ज़रूर शामिल होती हैं.दूसरी ओर,
"singleInstance"
गतिविधि में किसी भी दूसरी गतिविधि को शामिल नहीं किया जा सकता. यह टास्क में मौजूद एकमात्र गतिविधि होनी चाहिए. अगर यह किसी दूसरी गतिविधि को शुरू करता है, तो उस गतिविधि को किसी दूसरे टास्क को असाइन किया जाता है, जैसे किFLAG_ACTIVITY_NEW_TASK
इंटेंट में था.इस्तेमाल के उदाहरण लॉन्च मोड क्या एक से ज़्यादा इंस्टेंस हैं? टिप्पणियां ज़्यादातर गतिविधियों के लिए सामान्य लॉन्च "standard"
हां डिफ़ॉल्ट. सिस्टम, टारगेट टास्क में हमेशा गतिविधि का नया इंस्टेंस बनाता है और इंटेंट को उस पर भेजता है. "singleTop"
शर्त के मुताबिक अगर टारगेट टास्क में सबसे ऊपर, ऐक्टिविटी का कोई इंस्टेंस पहले से मौजूद है, तो सिस्टम ऐक्टिविटी का नया इंस्टेंस बनाने के बजाय, onNewIntent()
तरीके को कॉल करके, इंटेंट को उस इंस्टेंस पर भेजता है.खास लॉन्च
(सामान्य तौर पर इस्तेमाल करने के लिए सुझाया नहीं जाता)"singleTask"
शर्त के मुताबिक सिस्टम, किसी नए टास्क के रूट में गतिविधि बनाता है या मिलती-जुलती पसंद वाले किसी मौजूदा टास्क में गतिविधि ढूंढता है. अगर गतिविधि का कोई इंस्टेंस पहले से मौजूद है और वह टास्क के रूट में है, तो सिस्टम नया इंस्टेंस बनाने के बजाय, onNewIntent()
तरीके को कॉल करके, इंटेंट को मौजूदा इंस्टेंस पर भेजता है."singleInstance"
नहीं "singleTask"
जैसा ही, सिवाय इसके कि सिस्टम, इंस्टेंस को होल्ड करने वाले टास्क में कोई और गतिविधि लॉन्च नहीं करता. गतिविधि, टास्क का हमेशा एक और एकमात्र सदस्य होती है."singleInstancePerTask"
शर्त के मुताबिक गतिविधि सिर्फ़ टास्क की रूट गतिविधि के तौर पर चल सकती है. यह टास्क बनाने वाली पहली गतिविधि होती है. इसलिए, टास्क में इस गतिविधि का सिर्फ़ एक इंस्टेंस होता है. हालांकि, अलग-अलग टास्क में गतिविधि को कई बार इंस्टैंशिएट किया जा सकता है. जैसा कि पिछली टेबल में दिखाया गया है,
"standard"
डिफ़ॉल्ट मोड है और यह ज़्यादातर तरह की गतिविधियों के लिए सही है."singleTop"
, कई तरह की गतिविधियों के लिए भी एक सामान्य और काम का लॉन्च मोड है."singleTask"
,"singleInstance"
, और"singleInstancePerTask"
जैसे अन्य मोड, ज़्यादातर ऐप्लिकेशन के लिए ठीक नहीं हैं. इनकी वजह से, इंटरैक्शन मॉडल ऐसा बनता है जो उपयोगकर्ताओं के लिए अपरिचित हो सकता है और जो ज़्यादातर अन्य ऐप्लिकेशन से काफ़ी अलग होता है.लॉन्च मोड के तौर पर कोई भी विकल्प चुनें, लेकिन लॉन्च के दौरान और 'वापस जाएं' बटन का इस्तेमाल करके, अन्य गतिविधियों और टास्क से उस गतिविधि पर वापस जाने के दौरान, पक्का करें कि गतिविधि को इस्तेमाल करना आसान हो.
लॉन्च मोड और
Intent
फ़्लैग के साथ उनके इंटरैक्शन के बारे में ज़्यादा जानकारी के लिए, Tasks और बैक स्टैक देखें.android:lockTaskMode
- इससे यह तय होता है कि डिवाइस लॉक टास्क मोड में चलने पर, सिस्टम इस गतिविधि को कैसे दिखाता है.
Android, टास्क को इमर्सिव और कीऑस्क जैसे फ़ॉर्मैट में चला सकता है. इसे लॉक टास्क मोड कहा जाता है. जब सिस्टम, लॉक टास्क मोड में काम करता है, तो डिवाइस के उपयोगकर्ता आम तौर पर सूचनाएं नहीं देख सकते. साथ ही, वे अनुमति वाली सूची में शामिल नहीं होने वाले ऐप्लिकेशन ऐक्सेस नहीं कर सकते या होम स्क्रीन पर वापस नहीं जा सकते. हालांकि, होम ऐप्लिकेशन को अनुमति वाली सूची में शामिल करने पर, उपयोगकर्ता ये काम कर सकते हैं.
सिस्टम के लॉक टास्क मोड में, सिर्फ़ वे ऐप्लिकेशन चल सकते हैं जिन्हें डिवाइस नीति कंट्रोलर (डीपीसी) ने अनुमति दी है. हालांकि, सिस्टम और खास ऐप्लिकेशन, अनुमति वाली सूची में शामिल किए बिना भी लॉक टास्क मोड में चल सकते हैं.
वैल्यू, इनमें से किसी भी
R.attr.lockTaskMode
स्ट्रिंग वैल्यू में से कोई एक हो सकती है:वैल्यू ब्यौरा "normal"
डिफ़ॉल्ट वैल्यू. यह डिफ़ॉल्ट वैल्यू होती है. टास्क, लॉक टास्क मोड में लॉन्च नहीं होते. हालांकि, startLockTask()
को कॉल करके, उन्हें वहां रखा जा सकता है."never"
टास्क,
lockTask
मोड में लॉन्च नहीं होते. साथ ही, डिवाइस का उपयोगकर्ता, टास्क को हाल ही की स्क्रीन से पिन नहीं कर सकता.ध्यान दें: यह मोड सिर्फ़ सिस्टम और खास ऐप्लिकेशन के लिए उपलब्ध है. इस वैल्यू वाले ऐप्लिकेशन को
normal
माना जाता है."if_whitelisted"
अगर डीपीसी, DevicePolicyManager.setLockTaskPackages()
का इस्तेमाल करके इस पैकेज को अनुमति देता है, तो यह मोडalways
जैसा ही होता है. हालांकि, अगर यह आखिरी लॉक किया गया टास्क है, तो गतिविधि को पूरा करने से पहलेstopLockTask()
को कॉल करना होगा. अगर डीपीसी इस पैकेज को अनुमति नहीं देता है, तो यह मोडnormal
जैसा ही होता है."always"
इस गतिविधि से जुड़े टास्क, हमेशा लॉक टास्क मोड में लॉन्च होते हैं. अगर यह टास्क लॉन्च होने के समय सिस्टम पहले से ही लॉक टास्क मोड में है, तो नया टास्क मौजूदा टास्क के ऊपर लॉन्च होता है. इस मोड में लॉन्च किए गए टास्क,
finish()
को कॉल करके लॉक टास्क मोड से बाहर निकल सकते हैं.ध्यान दें: यह मोड सिर्फ़ सिस्टम और खास ऐप्लिकेशन के लिए उपलब्ध है. इस वैल्यू वाले ऐप्लिकेशन को
normal
माना जाता है.इस एट्रिब्यूट को एपीआई लेवल 23 में जोड़ा गया था.
android:maxRecents
- हाल ही की गतिविधियों की स्क्रीन में, इस गतिविधि से जुड़े टास्क की ज़्यादा से ज़्यादा संख्या. इस संख्या तक पहुंचने पर, सिस्टम हाल ही में इस्तेमाल किए गए सबसे पुराने इंस्टेंस को हाल ही की स्क्रीन से हटा देता है. मान्य वैल्यू, 1 से 50 तक की पूर्णांक होती हैं. कम मेमोरी वाले डिवाइसों पर, वैल्यू 1 से 25 तक की हो सकती हैं. शून्य अमान्य है. डिफ़ॉल्ट वैल्यू 16 होती है.
android:maxAspectRatio
गतिविधि के लिए ज़्यादा से ज़्यादा आसपेक्ट रेशियो. अगर ऐप्लिकेशन, बड़े आसपेक्ट रेशियो वाले डिवाइस पर चलता है, तो सिस्टम ऐप्लिकेशन को अपने-आप लेटरबॉक्स कर देता है. इससे स्क्रीन के कुछ हिस्सों का इस्तेमाल नहीं किया जाता, ताकि ऐप्लिकेशन अपने तय किए गए आसपेक्ट रेशियो में चल सके.
ज़्यादा से ज़्यादा आसपेक्ट रेशियो को दशमलव के तौर पर दिखाया जाता है. यह डिवाइस के लंबे डाइमेंशन को छोटे डाइमेंशन से भाग देने पर मिलता है. उदाहरण के लिए, अगर आसपेक्ट रेशियो 7:3 है, तो इस एट्रिब्यूट की वैल्यू 2.33 पर सेट करें.
पहने जा सकने वाले डिवाइसों के लिए, इस एट्रिब्यूट की वैल्यू 1.33 या इससे ज़्यादा होनी चाहिए. पहने जा सकने वाले डिवाइसों पर, यह 1.0 या इसके बाद का होना चाहिए. ऐसा न होने पर, सिस्टम सेट की गई वैल्यू को अनदेखा कर देता है.
ध्यान दें: अगर गतिविधि के लिए
resizeableActivity
को 'सही है' पर सेट किया गया है, तो इस एट्रिब्यूट को अनदेखा कर दिया जाता है. इसकी वजह यह है कि इसका मतलब है कि आपकी गतिविधि किसी भी साइज़ के साथ काम करती है.इस एट्रिब्यूट के बारे में ज़्यादा जानने के लिए, ज़्यादा से ज़्यादा आसपेक्ट रेशियो की जानकारी देना लेख पढ़ें.
android:multiprocess
- क्या गतिविधि के किसी इंस्टेंस को उस कॉम्पोनेंट की प्रोसेस में लॉन्च किया जा सकता है जिसने उसे शुरू किया था. अगर ऐसा किया जा सकता है, तो
"true"
डालें. अगर नहीं किया जा सकता, तो"false"
डालें. डिफ़ॉल्ट वैल्यू"false"
है.आम तौर पर, किसी गतिविधि का नया इंस्टेंस, उस ऐप्लिकेशन की प्रोसेस में लॉन्च किया जाता है जिसने उसे तय किया है. इसलिए, गतिविधि के सभी इंस्टेंस एक ही प्रोसेस में चलते हैं. हालांकि, अगर यह फ़्लैग
"true"
पर सेट है, तो गतिविधि के इंस्टेंस कई प्रोसेस में चल सकते हैं. इससे सिस्टम को जहां भी इंस्टेंस का इस्तेमाल करना है वहां इंस्टेंस बनाने की अनुमति मिलती है. हालांकि, ऐसा करना ज़रूरी या वांछनीय नहीं होता. android:name
- गतिविधि को लागू करने वाली क्लास का नाम, जो
Activity
का सबसेट है. आम तौर पर, एट्रिब्यूट की वैल्यू पूरी तरह से क्वालिफ़ाइड क्लास का नाम होती है, जैसे कि"com.example.project.ExtracurricularActivity"
. हालांकि, अगर नाम का पहला वर्ण पीरियड है, जैसे कि".ExtracurricularActivity"
, तो इसेbuild.gradle
फ़ाइल में बताए गए नेमस्पेस में जोड़ दिया जाता है.ऐप्लिकेशन पब्लिश करने के बाद,
android:exported="false"
सेट करने तक इस नाम को बदलें नहीं. कोई डिफ़ॉल्ट नहीं है. नाम ज़रूर डालें. android:noHistory
- जब उपयोगकर्ता किसी गतिविधि से बाहर निकलता है और वह स्क्रीन पर नहीं दिखती है, तो क्या गतिविधि को गतिविधि स्टैक से हटा दिया जाता है और
finish()
के तरीके को कॉल करके उसे पूरा कर दिया जाता है. अगर यह पूरा हो गया है, तो"true"
डालें और अगर नहीं, तो"false"
डालें. डिफ़ॉल्ट वैल्यू"false"
है."true"
की वैल्यू का मतलब है कि गतिविधि का इतिहास सेव नहीं किया जाएगा. यह टास्क के लिए ऐक्टिविटी स्टैक में नहीं रहता, इसलिए उपयोगकर्ता उस पर वापस नहीं जा सकता. इस मामले में, अगर इस गतिविधि के नतीजे के लिए कोई दूसरी गतिविधि शुरू की जाती है, तोonActivityResult()
को कभी कॉल नहीं किया जाता.इस एट्रिब्यूट को एपीआई लेवल 3 में जोड़ा गया था.
android:parentActivityName
- गतिविधि के लॉजिकल पैरंट की क्लास का नाम. यहां दिया गया नाम, उस
<activity>
एलिमेंट केandroid:name
एट्रिब्यूट के लिए दिए गए क्लास के नाम से मेल खाना चाहिए.सिस्टम इस एट्रिब्यूट को पढ़कर यह तय करता है कि जब उपयोगकर्ता ऐक्शन बार में 'अप' बटन पर टैप करता है, तो कौनसी गतिविधि शुरू करनी है. सिस्टम इस जानकारी का इस्तेमाल,
TaskStackBuilder
के साथ गतिविधियों के बैक स्टैक को सिंथेसाइज़ करने के लिए भी कर सकता है.एपीआई लेवल 4 से 16 के साथ काम करने के लिए,
<meta-data>
एलिमेंट की मदद से भी पैरंट गतिविधि का एलान किया जा सकता है. यह एलिमेंट,"android.support.PARENT_ACTIVITY"
की वैल्यू बताता है:<activity android:name="com.example.app.ChildActivity" android:label="@string/title_child_activity" android:parentActivityName="com.example.app.MainActivity" > <!-- Parent activity meta-data to support API level 4+ --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.app.MainActivity" /> </activity>
ऊपर की ओर नेविगेट करने की सुविधा के लिए, पैरंट गतिविधि का एलान करने के बारे में ज़्यादा जानने के लिए, ऊपर की ओर नेविगेट करने की सुविधा उपलब्ध कराना लेख पढ़ें.
इस एट्रिब्यूट को एपीआई लेवल 16 में जोड़ा गया था.
android:persistableMode
इससे यह तय होता है कि डिवाइस के रीस्टार्ट होने पर, किसी टास्क में मौजूद ऐक्टिविटी के इंस्टेंस को कैसे बनाए रखा जाता है.
अगर किसी टास्क की रूट गतिविधि इस एट्रिब्यूट की वैल्यू को
persistRootOnly
पर सेट करती है, तो सिर्फ़ रूट गतिविधि को सेव किया जाता है. अगर ऐसा नहीं है, तो टास्क के बैक स्टैक में सबसे ऊपर मौजूद गतिविधियों की जांच की जाती है. इनमें से जो भी गतिविधि इस एट्रिब्यूट की वैल्यू कोpersistAcrossReboots
पर सेट करती है उसे सेव कर लिया जाता है.इस एट्रिब्यूट का इस्तेमाल करने पर, आपको इसकी वैल्यू इनमें से किसी एक पर सेट करनी होगी:
वैल्यू ब्यौरा persistRootOnly
डिफ़ॉल्ट वैल्यू. सिस्टम के रीस्टार्ट होने पर, गतिविधि टास्क को बनाए रखा जाता है. हालांकि, सिर्फ़ रूट गतिविधि के लॉन्च करने के इंटेंट का इस्तेमाल किया जाता है.
जब आपके ऐप्लिकेशन का लॉन्च करने वाला इंटेंट, आपके ऐप्लिकेशन की रूट ऐक्टिविटी को लोड करता है, तो ऐक्टिविटी को
PersistableBundle
ऑब्जेक्ट नहीं मिलता. इसलिए, डिवाइस के रीस्टार्ट होने पर, अपने ऐप्लिकेशन की रूट गतिविधि की स्थिति को बनाए रखने के लिए,onSaveInstanceState()
का इस्तेमाल न करें.ध्यान दें: इस एट्रिब्यूट की वैल्यू से आपके ऐप्लिकेशन के व्यवहार पर सिर्फ़ तब असर पड़ता है, जब इसे आपके ऐप्लिकेशन की रूट गतिविधि पर सेट किया गया हो.
persistAcrossReboots
इस ऐक्टिविटी की स्थिति को बनाए रखा जाता है. साथ ही, बैक स्टैक में ऊपर मौजूद हर ऐक्टिविटी की स्थिति को भी बनाए रखा जाता है. हालांकि, इसके लिए ज़रूरी है कि उस ऐक्टिविटी का
persistableMode
एट्रिब्यूट,persistAcrossReboots
पर सेट हो. अगर किसी गतिविधि मेंpersistableMode
एट्रिब्यूट नहीं है, जोpersistAcrossReboots
पर सेट है या अगर उसेIntent.FLAG_ACTIVITY_NEW_DOCUMENT
फ़्लैग का इस्तेमाल करके लॉन्च किया गया है, तो उस गतिविधि के साथ-साथ बैक स्टैक में ऊपर की सभी गतिविधियों को सेव नहीं किया जाता.जब कोई इंटेंट ऐसी गतिविधि को लोड करता है जिसका
persistableMode
एट्रिब्यूट आपके ऐप्लिकेशन मेंpersistAcrossReboots
पर सेट होता है, तो गतिविधि को उसकेonCreate()
तरीके मेंPersistableBundle
ऑब्जेक्ट मिलता है. इसलिए, डिवाइस के रीस्टार्ट होने पर भी किसी गतिविधि की स्थिति को बनाए रखने के लिए,onSaveInstanceState()
का इस्तेमाल किया जा सकता है. ऐसा तब तक किया जा सकता है, जब तक उसकाpersistableMode
एट्रिब्यूट,persistAcrossReboots
पर सेट है.ध्यान दें: इस एट्रिब्यूट की वैल्यू से आपके ऐप्लिकेशन के व्यवहार पर असर पड़ता है. भले ही, इसे आपके ऐप्लिकेशन की रूट गतिविधि के अलावा किसी दूसरी गतिविधि पर सेट किया गया हो.
persistNever
गतिविधि की स्थिति सेव नहीं की जाती.
ध्यान दें: इस एट्रिब्यूट की वैल्यू से आपके ऐप्लिकेशन के व्यवहार पर सिर्फ़ तब असर पड़ता है, जब इसे आपके ऐप्लिकेशन की रूट गतिविधि पर सेट किया गया हो.
इस एट्रिब्यूट को एपीआई लेवल 21 में जोड़ा गया था.
android:permission
- गतिविधि को लॉन्च करने या किसी इंटेंट का जवाब देने के लिए, क्लाइंट के पास यह अनुमति होनी चाहिए. अगर
startActivity()
याstartActivityForResult()
के कॉलर को अनुमति नहीं दी गई है, तो गतिविधि को उसका इंटेंट नहीं भेजा जाता.अगर यह एट्रिब्यूट सेट नहीं है, तो गतिविधि पर
<application>
एलिमेंट केpermission
एट्रिब्यूट से सेट की गई अनुमति लागू होती है. अगर कोई भी एट्रिब्यूट सेट नहीं है, तो गतिविधि को अनुमति से सुरक्षित नहीं किया जाता.अनुमतियों के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट की खास जानकारी और सुरक्षा से जुड़े सुझाव में, अनुमतियां सेक्शन देखें.
android:process
उस प्रोसेस का नाम जिसमें गतिविधि चलती है. आम तौर पर, किसी ऐप्लिकेशन के सभी कॉम्पोनेंट, ऐप्लिकेशन के लिए बनाए गए डिफ़ॉल्ट प्रोसेस नाम में चलते हैं. इसलिए, आपको इस एट्रिब्यूट का इस्तेमाल करने की ज़रूरत नहीं है. हालांकि, ज़रूरत पड़ने पर, इस एट्रिब्यूट की मदद से प्रोसेस के डिफ़ॉल्ट नाम को बदला जा सकता है. इससे, अपने ऐप्लिकेशन के कॉम्पोनेंट को कई प्रोसेस में बांटा जा सकता है.
अगर इस एट्रिब्यूट को असाइन किया गया नाम कोलन (
:
) से शुरू होता है, तो ज़रूरत पड़ने पर ऐप्लिकेशन के लिए एक नई प्रोसेस बनाई जाती है. यह प्रोसेस ऐप्लिकेशन के लिए निजी होती है और गतिविधि उस प्रोसेस में चलती है.अगर प्रोसेस का नाम छोटे अक्षर से शुरू होता है, तो गतिविधि उस नाम की ग्लोबल प्रोसेस में चलती है. हालांकि, इसके लिए ज़रूरी है कि उसके पास ऐसा करने की अनुमति हो. इससे अलग-अलग ऐप्लिकेशन के कॉम्पोनेंट, एक प्रोसेस शेयर कर पाते हैं. इससे संसाधनों के इस्तेमाल में कमी आती है.
<application>
एलिमेंट केprocess
एट्रिब्यूट की मदद से, सभी कॉम्पोनेंट के लिए प्रोसेस का कोई दूसरा डिफ़ॉल्ट नाम सेट किया जा सकता है.android:relinquishTaskIdentity
गतिविधि, टास्क स्टैक में उसके ऊपर मौजूद गतिविधि को अपने टास्क आइडेंटिफ़ायर देती है या नहीं. जिस टास्क की रूट गतिविधि के लिए यह एट्रिब्यूट
"true"
पर सेट है उसमें, आधारIntent
की जगह टास्क में मौजूद अगली गतिविधि को ले लिया जाता है.अगर अगली गतिविधि में भी यह एट्रिब्यूट
"true"
पर सेट है, तो यह उसी टास्क में लॉन्च की जाने वाली किसी भी गतिविधि के लिए, बेसIntent
दिखाती है. यह हर गतिविधि के लिए तब तक जारी रहता है, जब तक कोई ऐसी गतिविधि नहीं मिल जाती जिसके लिए यह एट्रिब्यूट"false"
पर सेट हो. डिफ़ॉल्ट वैल्यू"false"
है."true"
पर सेट किए गए इस एट्रिब्यूट की मदद से, गतिविधि के लिएActivityManager.TaskDescription
का इस्तेमाल करके, हाल ही की स्क्रीन में लेबल, रंग, और आइकॉन बदले जा सकते हैं.android:requireContentUriPermissionFromCaller
-
कॉन्टेंट यूआरआई पास करते समय, इस गतिविधि को लॉन्च करने के लिए ज़रूरी अनुमतियों के बारे में बताता है. इसकी डिफ़ॉल्ट वैल्यू
none
होती है. इसका मतलब है कि किसी खास अनुमति की ज़रूरत नहीं है. इस एट्रिब्यूट को सेट करने पर, गतिविधि को शुरू करने वाले व्यक्ति की अनुमतियों के आधार पर, गतिविधि शुरू करने पर पाबंदी लगा दी जाती है. अगर कॉल करने वाले के पास ज़रूरी अनुमतियां नहीं हैं, तोSecurityException
के ज़रिए गतिविधि शुरू करने की अनुमति नहीं दी जाएगी.ध्यान दें कि नीति उल्लंघन ठीक करने की प्रोसेस,
Intent.getData()
,Intent.EXTRA_STREAM
, औरIntent.getClipData()
में मौजूद कॉन्टेंट यूआरआई के लिए काम करती है.यह स्ट्रिंग वैल्यू हो सकती है. इसमें '\\n' जैसे वर्णों को एस्केप करने के लिए '\\;' का इस्तेमाल किया जाता है. इसके अलावा, यूनिकोड वर्ण के लिए '\\uxxxx' का इस्तेमाल किया जाता है;
यह इनमें से कोई एक वैल्यू होनी चाहिए.
कॉन्स्टेंट वैल्यू ब्यौरा कोई नहीं 0 डिफ़ॉल्ट रूप से, किसी खास अनुमति की ज़रूरत नहीं होती. पढ़ा गया 1 यह ज़रूरी है कि कॉल करने वाले के पास, पास किए गए कॉन्टेंट यूआरआई का रीड ऐक्सेस हो. readAndWrite 4 यह ज़रूरी है कि कॉल करने वाले के पास, पास किए गए कॉन्टेंट यूआरआई का, पढ़ने और लिखने, दोनों का ऐक्सेस हो. readOrWrite 3 यह ज़रूरी है कि कॉल करने वाले के पास, पास किए गए कॉन्टेंट यूआरआई का रीड या राइट ऐक्सेस हो. मेरी मदद करो 2 यह ज़रूरी है कि कॉल करने वाले के पास, पास किए गए कॉन्टेंट यूआरआई का लिखने का ऐक्सेस हो. android:resizeableActivity
-
इससे पता चलता है कि ऐप्लिकेशन मल्टी-विंडो मोड के साथ काम करता है या नहीं. इस एट्रिब्यूट को
<activity>
या<application>
एलिमेंट में से किसी एक में सेट किया जा सकता है.इस एट्रिब्यूट को
"true"
पर सेट करने पर, उपयोगकर्ता गतिविधि को स्प्लिट-स्क्रीन और फ़्री-फ़ॉर्म मोड में लॉन्च कर सकता है. अगर इस एट्रिब्यूट की वैल्यू को"false"
पर सेट किया जाता है, तो ऐप्लिकेशन का कई विंडो वाले एनवायरमेंट के लिए, न तो टेस्ट किया जा सकता है और न ही उसे ऑप्टिमाइज़ किया जा सकता है. सिस्टम, अब भी ऐक्टिविटी को मल्टी-विंडो मोड में डाल सकता है. इसके लिए, कंपैटिबिलिटी मोड लागू करना ज़रूरी है.इस एट्रिब्यूट को
"false"
पर सेट करने से यह गारंटी नहीं मिलती कि स्क्रीन पर, कई विंडो वाले मोड में कोई दूसरा ऐप्लिकेशन नहीं दिख रहा है. जैसे, पिक्चर में पिक्चर या दूसरे डिसप्ले पर. इसलिए, इस फ़्लैग को सेट करने का मतलब यह नहीं है कि आपके ऐप्लिकेशन के पास संसाधन का खास ऐक्सेस है.अगर आपका ऐप्लिकेशन एपीआई लेवल 24 या उसके बाद के वर्शन को टारगेट करता है और आपने इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी है, तो एट्रिब्यूट की वैल्यू डिफ़ॉल्ट रूप से
"true"
पर सेट हो जाती है.अगर आपका ऐप्लिकेशन, एपीआई लेवल 31 या उसके बाद के वर्शन को टारगेट करता है, तो यह एट्रिब्यूट छोटी और बड़ी स्क्रीन पर अलग-अलग तरीके से काम करता है:
- बड़ी स्क्रीन (sw >= 600dp): सभी ऐप्लिकेशन, मल्टी-विंडो मोड के साथ काम करते हैं. इस एट्रिब्यूट से पता चलता है कि किसी ऐप्लिकेशन का साइज़ बदला जा सकता है या नहीं. इससे यह नहीं पता चलता कि ऐप्लिकेशन, मल्टी-विंडो मोड के साथ काम करता है या नहीं. अगर
resizeableActivity="false"
है, तो डिसप्ले डाइमेंशन के मुताबिक ऐप्लिकेशन को ज़रूरत पड़ने पर कंपैटबिलिटी मोड में डाला जाता है. - छोटी स्क्रीन (sw < 600dp): अगर
resizeableActivity="true"
और गतिविधि की कम से कम चौड़ाई और कम से कम ऊंचाई, मल्टी-विंडो की ज़रूरी शर्तों के मुताबिक है, तो ऐप्लिकेशन मल्टी-विंडो मोड के साथ काम करता है. अगरresizeableActivity="false"
है, तो ऐप्लिकेशन कई विंडो मोड के साथ काम नहीं करता. भले ही, गतिविधि की कम से कम चौड़ाई और ऊंचाई कितनी भी हो.
ध्यान दें: डिवाइस बनाने वाली कंपनियां, एपीआई लेवल 31 के व्यवहार को बदल सकती हैं.
इस एट्रिब्यूट को API लेवल 24 में जोड़ा गया था.
ध्यान दें: टास्क की रूट गतिविधि की वैल्यू, टास्क में शुरू की गई सभी अतिरिक्त गतिविधियों पर लागू होती है. इसका मतलब है कि अगर किसी टास्क की रूट गतिविधि का साइज़ बदला जा सकता है, तो सिस्टम उस टास्क की सभी अन्य गतिविधियों का साइज़ बदलने की सुविधा देता है. अगर रूट गतिविधि का साइज़ नहीं बदला जा सकता, तो टास्क में मौजूद अन्य गतिविधियों का साइज़ भी नहीं बदला जा सकता.
- बड़ी स्क्रीन (sw >= 600dp): सभी ऐप्लिकेशन, मल्टी-विंडो मोड के साथ काम करते हैं. इस एट्रिब्यूट से पता चलता है कि किसी ऐप्लिकेशन का साइज़ बदला जा सकता है या नहीं. इससे यह नहीं पता चलता कि ऐप्लिकेशन, मल्टी-विंडो मोड के साथ काम करता है या नहीं. अगर
android:screenOrientation
गतिविधि के लिए अनुरोध किया गया ओरिएंटेशन.
जब कोई गतिविधि पूरी स्क्रीन पर दिखती है, तो अनुरोध किया गया ओरिएंटेशन, उस स्क्रीन पर ओरिएंटेशन बदलने के लिए सुझाव के तौर पर काम करता है, ताकि अनुरोध की गई वैल्यू से मैच किया जा सके. इससे, स्क्रीन का ऑरिएंटेशन, जगह के हिसाब से स्क्रीन के ऑरिएंटेशन से अलग हो सकता है. ऐसे में, ऐप्लिकेशन का इस्तेमाल जारी रखने के लिए, उपयोगकर्ता को डिवाइस को घुमाना पड़ सकता है. Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन पर, डिवाइस बनाने वाली कंपनियां इस सुझाव को अनदेखा करने के लिए, डिवाइस की अलग-अलग स्क्रीन (जैसे, फ़ोल्ड किए जा सकने वाले डिवाइस की टैबलेट-साइज़ वाली स्क्रीन) को कॉन्फ़िगर कर सकती हैं. इसके बजाय, वे उपयोगकर्ता के डिवाइस के पसंदीदा ऑरिएंटेशन में, किसी गतिविधि को लेटरबॉक्स में दिखाने के लिए मजबूर कर सकती हैं. इससे, गतिविधि का ओरिएंटेशन, अनुरोध किए गए ओरिएंटेशन से मैच हो जाता है. इसके लिए, उपयोगकर्ता को अपने डिवाइस को घुमाने की ज़रूरत नहीं होती.
मल्टी-विंडो मोड में, अनुरोध किया गया ओरिएंटेशन, पूरे स्क्रीन के ओरिएंटेशन के लिए सुझाव के तौर पर काम नहीं करता. अगर गतिविधि को लेटरबॉक्स किया गया है, तो अनुरोध किए गए ओरिएंटेशन का असर गतिविधि पर लागू लेटरबॉक्सिंग पर पड़ता है.
वैल्यू, इनमें से कोई भी स्ट्रिंग हो सकती है:
"unspecified"
डिफ़ॉल्ट वैल्यू. सिस्टम, ओरिएंटेशन चुनता है. यह नीति, डिवाइस के हिसाब से अलग-अलग हो सकती है. इसलिए, किसी खास संदर्भ में चुने गए विकल्प भी डिवाइस के हिसाब से अलग-अलग हो सकते हैं. "behind"
ऐक्टिविटी स्टैक में, इसके ठीक नीचे मौजूद ऐक्टिविटी के जैसे ओरिएंटेशन. "landscape"
लैंडस्केप ओरिएंटेशन (डिसप्ले की चौड़ाई, उसकी ऊंचाई से ज़्यादा है). "portrait"
पोर्ट्रेट ओरिएंटेशन (डिसप्ले की लंबाई, चौड़ाई से ज़्यादा है). "reverseLandscape"
लैंडस्केप ओरिएंटेशन, सामान्य लैंडस्केप से उल्टी दिशा में. एपीआई लेवल 9 में जोड़ा गया. "reversePortrait"
पोर्ट्रेट ओरिएंटेशन, सामान्य पोर्ट्रेट से उल्टी दिशा में. एपीआई लेवल 9 में जोड़ा गया. "sensorLandscape"
लैंडस्केप ओरिएंटेशन, लेकिन डिवाइस के सेंसर के आधार पर, यह सामान्य या रिवर्स लैंडस्केप हो सकता है. सेंसर का इस्तेमाल तब भी किया जाता है, जब उपयोगकर्ता ने सेंसर के आधार पर रोटेशन को लॉक कर दिया हो. एपीआई लेवल 9 में जोड़ा गया. "sensorPortrait"
पोर्ट्रेट ओरिएंटेशन, लेकिन डिवाइस के सेंसर के आधार पर, यह सामान्य या रिवर्स पोर्ट्रेट हो सकता है. सेंसर का इस्तेमाल तब भी किया जाता है, जब उपयोगकर्ता ने सेंसर के आधार पर रोटेशन को लॉक कर दिया हो. हालांकि, डिवाइस कॉन्फ़िगरेशन के आधार पर, हो सकता है कि डिवाइस को उलटा घुमाने की अनुमति न हो. एपीआई लेवल 9 में जोड़ा गया. "userLandscape"
लैंडस्केप ओरिएंटेशन, लेकिन डिवाइस के सेंसर और उपयोगकर्ता की पसंद के आधार पर, यह सामान्य या रिवर्स लैंडस्केप हो सकता है. एपीआई लेवल 18 में जोड़ा गया. "userPortrait"
पोर्ट्रेट ओरिएंटेशन, लेकिन डिवाइस के सेंसर और उपयोगकर्ता की प्राथमिकता के आधार पर, यह सामान्य या रिवर्स पोर्ट्रेट हो सकता है. हालांकि, डिवाइस के कॉन्फ़िगरेशन के हिसाब से, हो सकता है कि डिवाइस को उल्टा घुमाने की अनुमति न हो. एपीआई लेवल 18 में जोड़ा गया. "sensor"
डिवाइस ओरिएंटेशन सेंसर, ओरिएंटेशन तय करता है. डिसप्ले का ओरिएंटेशन इस बात पर निर्भर करता है कि उपयोगकर्ता डिवाइस को कैसे पकड़े हुए है. जब उपयोगकर्ता डिवाइस को घुमाता है, तो यह बदल जाता है. हालांकि, कुछ डिवाइसों पर डिफ़ॉल्ट रूप से, चारों ओर घुमाया नहीं जा सकता. सभी चार ओरिएंटेशन का इस्तेमाल करने के लिए, "fullSensor"
का इस्तेमाल करें. सेंसर का इस्तेमाल तब भी किया जाता है, जब उपयोगकर्ता ने सेंसर के आधार पर रोटेशन को लॉक कर दिया हो."fullSensor"
डिवाइस ओरिएंटेशन सेंसर, चारों ओरिएंटेशन में से किसी भी ओरिएंटेशन का पता लगाता है. यह "sensor"
से मिलता-जुलता है. हालांकि, इसमें स्क्रीन के चारों ओर घुमाने की सुविधा होती है. भले ही, डिवाइस पर आम तौर पर यह सुविधा काम न करती हो. उदाहरण के लिए, कुछ डिवाइसों पर आम तौर पर रिवर्स पोर्ट्रेट या रिवर्स लैंडस्केप मोड का इस्तेमाल नहीं किया जाता. हालांकि, इस सेटिंग की मदद से इन मोड का इस्तेमाल किया जा सकता है. एपीआई लेवल 9 में जोड़ा गया."nosensor"
ओरिएंटेशन का पता लगाने के लिए, किसी फ़िज़िकल ओरिएंटेशन सेंसर का इस्तेमाल नहीं किया जाता. सेंसर को अनदेखा किया जाता है, ताकि डिसप्ले, उपयोगकर्ता के डिवाइस को घुमाने के तरीके के हिसाब से न घूमे. "user"
उपयोगकर्ता का मौजूदा पसंदीदा ओरिएंटेशन. "fullUser"
अगर उपयोगकर्ता ने सेंसर के आधार पर स्क्रीन के रोटेशन को लॉक किया है, तो यह user
की तरह काम करता है. ऐसा न होने पर, यहfullSensor
की तरह काम करता है और स्क्रीन के चारों ओरीएंटेशन में से किसी भी ओरिएंटेशन का इस्तेमाल करने की अनुमति देता है. एपीआई लेवल 18 में जोड़ा गया."locked"
डिवाइस के मौजूदा रोटेशन को लॉक करता है. एपीआई लेवल 18 में जोड़ा गया. ध्यान दें: लैंडस्केप या पोर्ट्रेट में से किसी एक वैल्यू का एलान करने पर, इसे उस ओरिएंटेशन के लिए ज़रूरी शर्त माना जाता है जिसमें गतिविधि चलती है. आपने जो वैल्यू दी है उससे Google Play जैसी सेवाओं के हिसाब से फ़िल्टर करने की सुविधा चालू होती है. इससे आपका ऐप्लिकेशन सिर्फ़ उन डिवाइसों के लिए उपलब्ध होता है जिन पर आपकी गतिविधियों के लिए ज़रूरी ओरिएंटेशन काम करता है. उदाहरण के लिए, अगर आपने
"landscape"
,"reverseLandscape"
या"sensorLandscape"
में से कोई एक विकल्प चुना है, तो आपका ऐप्लिकेशन सिर्फ़ उन डिवाइसों पर उपलब्ध होगा जिन पर लैंडस्केप ओरिएंटेशन काम करता है.साथ ही, साफ़ तौर पर यह भी बताएं कि आपके ऐप्लिकेशन के लिए
<uses-feature>
एलिमेंट के साथ पोर्ट्रेट या लैंडस्केप ओरिएंटेशन में से किसी एक की ज़रूरत है, जैसे कि<uses-feature android:name="android.hardware.screen.portrait"/>
. यह फ़िल्टर करने का तरीका, Google Play और उससे जुड़ी अन्य सेवाएं उपलब्ध कराती हैं. साथ ही, प्लैटफ़ॉर्म यह कंट्रोल नहीं करता कि अगर कोई डिवाइस सिर्फ़ कुछ ओरिएंटेशन के साथ काम करता है, तो आपका ऐप्लिकेशन इंस्टॉल हो सकता है या नहीं.android:showForAllUsers
-
डिवाइस का मौजूदा उपयोगकर्ता, गतिविधि शुरू करने वाले उपयोगकर्ता से अलग होने पर, गतिविधि दिखेगी या नहीं. इस एट्रिब्यूट की वैल्यू को
"true"
या"false"
जैसी लिटरल वैल्यू पर सेट किया जा सकता है. इसके अलावा, इस एट्रिब्यूट की वैल्यू को किसी ऐसे संसाधन या थीम एट्रिब्यूट पर भी सेट किया जा सकता है जिसमें बूलियन वैल्यू शामिल हो.इस एट्रिब्यूट को एपीआई लेवल 23 में जोड़ा गया था.
android:stateNotNeeded
- क्या गतिविधि की स्थिति सेव किए बिना, उसे बंद करके फिर से शुरू किया जा सकता है. अगर इसे उसकी पिछली स्थिति के रेफ़रंस के बिना फिर से शुरू किया जा सकता है, तो यह
"true"
है. अगर इसकी पिछली स्थिति ज़रूरी है, तो यह"false"
है. डिफ़ॉल्ट वैल्यू"false"
है.आम तौर पर, किसी गतिविधि को कुछ समय के लिए बंद करने से पहले, उसके
onSaveInstanceState()
तरीके को कॉल किया जाता है. यह तरीका, गतिविधि की मौजूदा स्थिति कोBundle
ऑब्जेक्ट में सेव करता है. इसके बाद, गतिविधि को फिर से शुरू करने पर, इसेonCreate()
को पास किया जाता है. अगर इस एट्रिब्यूट को"true"
पर सेट किया जाता है, तो हो सकता है किonSaveInstanceState()
को कॉल न किया जाए. साथ ही,Bundle
के बजायonCreate()
कोnull
पास किया जाता है, क्योंकि ऐसा तब होता है, जब गतिविधि पहली बार शुरू होती है."true"
सेटिंग का मतलब है कि गतिविधि को फिर से शुरू किया जा सकता है, लेकिन उसकी स्थिति पहले जैसी नहीं रहेगी. उदाहरण के लिए, होम स्क्रीन दिखाने वाली गतिविधि, इस सेटिंग का इस्तेमाल करके यह पक्का करती है कि किसी वजह से क्रैश होने पर, उसे हटाया न जाए. android:supportsPictureInPicture
-
इससे पता चलता है कि गतिविधि में पिक्चर में पिक्चर डिसप्ले की सुविधा काम करती है या नहीं.
android:taskAffinity
वह टास्क जिससे गतिविधि जुड़ी है. एक ही तरह की दिलचस्पी वाली गतिविधियां, उपयोगकर्ता के नज़रिए से एक ही टास्क और एक ही "ऐप्लिकेशन" से जुड़ी होती हैं. किसी टास्क की अफ़िनिटी, उसकी रूट गतिविधि की अफ़िनिटी से तय होती है.
अफ़िनिटी से दो चीज़ें तय होती हैं: वह टास्क जिसे गतिविधि का फिर से पैरंट बनाया गया है (
allowTaskReparenting
एट्रिब्यूट देखें) और वह टास्क जिसमेंFLAG_ACTIVITY_NEW_TASK
फ़्लैग के साथ गतिविधि लॉन्च होने पर, गतिविधि शामिल होती है.डिफ़ॉल्ट रूप से, किसी ऐप्लिकेशन की सभी गतिविधियों की एक ही अफ़िनिटी होती है. इस एट्रिब्यूट की मदद से, टास्क को अलग-अलग ग्रुप में बांटा जा सकता है. साथ ही, एक ही टास्क में अलग-अलग ऐप्लिकेशन में तय की गई गतिविधियां भी रखी जा सकती हैं. यह बताने के लिए कि गतिविधि किसी टास्क से जुड़ी नहीं है, उसे खाली स्ट्रिंग पर सेट करें.
अगर यह एट्रिब्यूट सेट नहीं है, तो गतिविधि को ऐप्लिकेशन के लिए सेट किया गया अफ़िनिटी सेट इनहेरिट होता है.
<application>
एलिमेंट काtaskAffinity
एट्रिब्यूट देखें. किसी ऐप्लिकेशन के लिए डिफ़ॉल्ट अफ़िनिटी का नाम,build.gradle
फ़ाइल में सेट किया गया नेमस्पेस होता है.android:theme
- गतिविधि की पूरी थीम तय करने वाले स्टाइल रिसॉर्स का रेफ़रंस.
इससे गतिविधि का कॉन्टेक्स्ट अपने-आप सेट हो जाता है, ताकि इस
theme
का इस्तेमाल किया जा सके. साथ ही, गतिविधि शुरू होने से पहले "शुरू होने" वाले ऐनिमेशन भी दिख सकते हैं, ताकि गतिविधि असल में कैसी दिखती है, यह बेहतर तरीके से मैच किया जा सके.अगर यह एट्रिब्यूट सेट नहीं है, तो ऐक्टिविटी को
<application>
एलिमेंट केtheme
एट्रिब्यूट से, पूरे ऐप्लिकेशन के लिए सेट की गई थीम इनहेरिट होती है. अगर वह एट्रिब्यूट भी सेट नहीं है, तो सिस्टम की डिफ़ॉल्ट थीम का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, स्टाइल और थीम देखें. android:uiOptions
किसी गतिविधि के यूज़र इंटरफ़ेस (यूआई) के लिए अतिरिक्त विकल्प. यह इनमें से कोई एक वैल्यू होनी चाहिए.
वैल्यू ब्यौरा "none"
यूज़र इंटरफ़ेस (यूआई) के लिए कोई अतिरिक्त विकल्प नहीं. यह डिफ़ॉल्ट विकल्प है. "splitActionBarWhenNarrow"
ऐप्लिकेशन बार में ऐक्शन आइटम दिखाने के लिए, स्क्रीन पर सबसे नीचे एक बार जोड़ता है. इसे ऐक्शन बार भी कहा जाता है. यह तब होता है, जब हॉरिज़ॉन्टल स्पेस की कमी हो, जैसे कि हैंडसेट पर पोर्ट्रेट मोड में होने पर. स्क्रीन पर सबसे ऊपर मौजूद ऐप्लिकेशन बार में, ऐक्शन आइटम की संख्या कम दिखती है. अब ऐप्लिकेशन बार को, ऐक्शन आइटम के लिए सबसे ऊपर मौजूद नेविगेशन सेक्शन और सबसे नीचे मौजूद बार में बांटा गया है. इसका मतलब है कि ऐक्शन आइटम के लिए ज़रूरत के मुताबिक स्पेस उपलब्ध कराया जाता है. साथ ही, सबसे ऊपर मौजूद नेविगेशन और टाइटल एलिमेंट के लिए भी ज़रूरत के मुताबिक स्पेस उपलब्ध कराया जाता है. मेन्यू आइटम, दोनों बार में नहीं बांटने हैं. ये हमेशा एक साथ दिखते हैं. ऐप्लिकेशन बार के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन बार जोड़ना लेख पढ़ें.
यह एट्रिब्यूट, API लेवल 14 में जोड़ा गया था.
android:windowSoftInputMode
- ऐक्टिविटी की मुख्य विंडो, ऑन-स्क्रीन सॉफ़्ट कीबोर्ड वाली विंडो के साथ कैसे इंटरैक्ट करती है. इस एट्रिब्यूट की सेटिंग का असर इन दो चीज़ों पर पड़ता है:
- जब गतिविधि, उपयोगकर्ता की दिलचस्पी का विषय बन जाती है, तो सॉफ़्ट कीबोर्ड छिपा है या दिख रहा है.
- गतिविधि की मुख्य विंडो का साइज़, सॉफ़्ट कीबोर्ड के लिए छोटा किया गया है या नहीं. इसके अलावा, विंडो के कुछ हिस्से को सॉफ़्ट कीबोर्ड से ढकने पर, फ़ोकस में मौजूद कॉन्टेंट को पैन करके दिखाया जाता है या नहीं.
सेटिंग, यहां दी गई टेबल में दी गई वैल्यू में से कोई एक होनी चाहिए या एक
"state..."
वैल्यू और एक"adjust..."
वैल्यू का कॉम्बिनेशन होनी चाहिए. किसी भी ग्रुप में कई वैल्यू सेट करने पर, जैसे कि कई"state..."
वैल्यू, नतीजे अस्पष्ट होते हैं. अलग-अलग वैल्यू को वर्टिकल बार (|
) से अलग किया जाता है, जैसा कि इस उदाहरण में दिखाया गया है:<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
यहां सेट की गई वैल्यू (
"stateUnspecified"
और"adjustUnspecified"
के अलावा), थीम में सेट की गई वैल्यू को बदल देती हैं.वैल्यू ब्यौरा "stateUnspecified"
सॉफ़्ट कीबोर्ड छिपा है या दिख रहा है, इसकी जानकारी नहीं दी गई है. सिस्टम, सही स्थिति चुनता है या थीम की सेटिंग पर निर्भर करता है. यह सॉफ़्ट कीबोर्ड के काम करने के तरीके की डिफ़ॉल्ट सेटिंग है.
"stateUnchanged"
गतिविधि के सामने आने पर, सॉफ़्ट कीबोर्ड को उसी स्थिति में रखा जाता है जिसमें वह आखिरी बार था, चाहे वह दिख रहा हो या छिपा हो. "stateHidden"
जब उपयोगकर्ता कोई गतिविधि चुनता है, तो सॉफ्ट कीबोर्ड छिप जाता है. इसका मतलब है कि जब उपयोगकर्ता किसी गतिविधि से बाहर निकलने के बजाय, उस पर आगे बढ़ता है. "stateAlwaysHidden"
जब गतिविधि की मुख्य विंडो पर इनपुट फ़ोकस होता है, तो सॉफ़्ट कीबोर्ड हमेशा छिपा रहता है. "stateVisible"
जब उपयोगकर्ता कोई गतिविधि चुनता है, तब सॉफ़्ट कीबोर्ड दिखता है. इसका मतलब है कि जब उपयोगकर्ता किसी गतिविधि से बाहर निकलने के बजाय, उस पर आगे बढ़ता है. "stateAlwaysVisible"
जब विंडो पर इनपुट फ़ोकस आता है, तब सॉफ़्ट कीबोर्ड दिखता है. "adjustUnspecified"
यह नहीं बताया गया है कि गतिविधि की मुख्य विंडो, सॉफ़्ट कीबोर्ड के लिए जगह बनाने के लिए साइज़ बदलती है या स्क्रीन पर मौजूद फ़ोकस को दिखाने के लिए, विंडो के कॉन्टेंट को पैन किया जाता है. सिस्टम इनमें से किसी एक मोड को अपने-आप चुनता है. यह इस बात पर निर्भर करता है कि विंडो के कॉन्टेंट में कोई ऐसा लेआउट व्यू है या नहीं जिससे कॉन्टेंट को स्क्रोल किया जा सकता है. अगर ऐसा कोई व्यू है, तो विंडो का साइज़ बदल जाता है. ऐसा इस आधार पर किया जाता है कि स्क्रोल करने पर, विंडो का पूरा कॉन्टेंट छोटे हिस्से में दिख सकता है. यह मुख्य विंडो के व्यवहार के लिए डिफ़ॉल्ट सेटिंग है.
"adjustResize"
गतिविधि की मुख्य विंडो का साइज़ हमेशा बदला जाता है, ताकि स्क्रीन पर स्फ़ट कीबोर्ड के लिए जगह बनाई जा सके. "adjustPan"
सॉफ्ट कीबोर्ड के लिए जगह बनाने के लिए, गतिविधि की मुख्य विंडो का साइज़ नहीं बदला जाता. इसके बजाय, विंडो का कॉन्टेंट अपने-आप स्क्रीन पर दिखने लगता है, ताकि फ़िलहाल जिस पर फ़ोकस किया गया है वह कीबोर्ड से छिप न जाए और उपयोगकर्ता हमेशा देख सकें कि वे क्या टाइप कर रहे हैं. आम तौर पर, यह विकल्प, साइज़ बदलने के मुकाबले कम पसंद किया जाता है. ऐसा इसलिए, क्योंकि उपयोगकर्ता को विंडो के छिपे हुए हिस्सों को ऐक्सेस करने और उनसे इंटरैक्ट करने के लिए, सॉफ़्ट कीबोर्ड को बंद करना पड़ सकता है. "adjustNothing"
सॉफ़्ट कीबोर्ड के लिए जगह बनाने के लिए, गतिविधि की मुख्य विंडो का साइज़ नहीं बदला जाता या पैन नहीं किया जाता. यह ऐक्टिविटी, विंडो इनसेट का इस्तेमाल करके, सॉफ़्ट कीबोर्ड के लिए जगह बनाती है. जिन गतिविधियों में विंडो के इनसेट को सही तरीके से मैनेज किया जाता है उनके लिए, स्क्रीन पर विंडो के कॉन्टेंट को दिखाने के तरीके पर सबसे ज़्यादा कंट्रोल मिलता है. इस एट्रिब्यूट को एपीआई लेवल 3 में जोड़ा गया था.
- पहली बार इसमें दिखाया गया:
noHistory
औरwindowSoftInputMode
को छोड़कर, सभी एट्रिब्यूट के लिए एपीआई लेवल 1. ये एट्रिब्यूट, एपीआई लेवल 3 में जोड़े गए थे.- यह भी देखें:
<application>
<activity-alias>
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-01-14 (UTC) को अपडेट किया गया.
[null,null,["आखिरी बार 2025-01-14 (UTC) को अपडेट किया गया."],[],[]]