- सिंटैक्स:
<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>
- जानकारी:
- ऐसी ऐक्टिविटी (
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 के व्यवहार को बदल सकती हैं.
यह एट्रिब्यूट, एपीआई लेवल 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"
जब हॉरिज़ॉन्टल स्पेस की कमी होती है, जैसे कि हैंडसेट पर पोर्ट्रेट मोड में होने पर, ऐप्लिकेशन बार में ऐक्शन आइटम दिखाने के लिए, स्क्रीन पर सबसे नीचे एक बार जोड़ता है. इसे ऐक्शन बार भी कहा जाता है. स्क्रीन पर सबसे ऊपर मौजूद ऐप्लिकेशन बार में, ऐक्शन आइटम की संख्या कम दिखती है. अब ऐप्लिकेशन बार को, ऐक्शन आइटम के लिए सबसे ऊपर मौजूद नेविगेशन सेक्शन और सबसे नीचे मौजूद बार में बांटा गया है. इसका मतलब है कि ऐक्शन आइटम के लिए ज़रूरत के मुताबिक जगह उपलब्ध कराई जाती है. साथ ही, सबसे ऊपर मौजूद नेविगेशन और टाइटल एलिमेंट के लिए भी जगह उपलब्ध कराई जाती है. मेन्यू आइटम, दो बार में नहीं दिखते. ये हमेशा एक साथ दिखते हैं. ऐप्लिकेशन बार के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन बार जोड़ना लेख पढ़ें.
इस एट्रिब्यूट को एपीआई लेवल 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-23 (UTC) को अपडेट किया गया.
[null,null,["आखिरी बार 2025-01-23 (UTC) को अपडेट किया गया."],[],[]]