Multi-Window Android में मल्टीटास्किंग मोड का एक सेट है जो एक साथ स्क्रीन पर कई ऐप चलाने की अनुमति देता है। सिस्टम में तीन मोड शामिल हैं: स्क्रीन को दो भागों में विभाजित करने के लिए Split Screen, मिनी-विंडो में वीडियो के लिए Picture-in-Picture, और बड़ी स्क्रीन पर मनमाने आकार की विंडो के लिए Freeform। Android Developers (2025) के अनुसार, 600 dp या उससे अधिक स्क्रीन चौड़ाई वाले उपकरणों के लिए Multi-Window समर्थन अनिवार्य है, और प्रत्येक डेवलपर को अपने ऐप को संभावित विंडो आकार परिवर्तनों के अनुकूल बनाना चाहिए।
मुख्य बिंदु
Multi-Window एक Android सुविधा है जो संस्करण 7.0 Nougat (API 24) में शुरू की गई थी जो एक साथ स्क्रीन पर दो या अधिक ऐप चलाने की अनुमति देती है। यह मोड टैबलेट और बड़ी स्क्रीन वाले उपकरणों की बढ़ती लोकप्रियता के लिए Google की प्रतिक्रिया थी, जहां एकल-कार्य मोड उत्पादकता को सीमित करता है।
Android 7.0 से पहले, प्रत्येक ऐप पूरी स्क्रीन घेरता था — ऐप के बीच स्विच करने पर, पिछला ऐप छोटा हो जाता था। Multi-Window ने इस मॉडल को बदल दिया: अब एक ऐप अपनी सक्रिय स्थिति बनाए रखते हुए स्क्रीन का हिस्सा घेर सकता है। डेवलपर्स के लिए, इसका मतलब है कि onConfigurationChanged और आकार परिवर्तनों को संभालना अनिवार्य हो जाता है।
Android 12L (2022) पर, Google ने बड़ी स्क्रीन वाले उपकरणों के लिए Multi-Window को डिफ़ॉल्ट मोड बना दिया — टैबलेट पर सभी ऐप ऐसे मोड में चलते हैं जो मल्टी-विंडोइंग की अनुमति देता है। एकमात्र अपवाद मेनिफेस्ट में स्पष्ट निषेध वाले ऐप हैं।
Split Screen — सबसे सामान्य मोड। स्क्रीन क्षैतिज या लंबवत रूप से दो भागों में विभाजित होती है, उपयोगकर्ता विभाजक को खींचता है। फ़ोन और टैबलेट पर उपलब्ध। Overview (Recents) के माध्यम से सक्रिय होता है — ऐप आइकन को ऊपरी या निचले किनारे पर खींचकर।
Picture-in-Picture (PiP) — वीडियो और नेविगेशन ऐप के लिए एक मोड। सामग्री एक फ्लोटिंग मिनी-विंडो (स्क्रीन का लगभग 15–25%) में प्रदर्शित होती है जिसे स्थानांतरित किया जा सकता है। Android 8.0+ पर उपलब्ध। सक्रिय करने के लिए, Activity में enterPictureInPictureMode() का उपयोग करें।
Freeform — मनमाने आकार की विंडो के लिए एक मोड, डेस्कटॉप विंडो मैनेजर के समान। Android TV और निर्माताओं के कुछ बड़ी स्क्रीन वाले उपकरणों (Samsung DeX) पर उपलब्ध। ऐप शीर्षक पट्टी और नियंत्रण बटन वाली विंडो में चलते हैं।
जब कोई उपयोगकर्ता Multi-Window सक्रिय करता है, तो Android प्रत्येक ऐप के लिए एक नया Activity इंस्टेंस बनाता है और उपलब्ध स्क्रीन स्थान वितरित करता है। Activity अलग-अलग Task में रखे जाते हैं लेकिन उनके बीच विभाजक के साथ एक ही StackView का उपयोग करते हैं।
सिस्टम प्रत्येक Activity को onConfigurationChanged() के माध्यम से आकार परिवर्तन के बारे में सूचित करता है। यदि Activity इस घटना को संभाल नहीं पाती है, तो इसे पुनः बनाया जाता है। Split Screen के लिए, विंडो की चौड़ाई 220 dp तक कम हो सकती है — प्लेटफ़ॉर्म द्वारा समर्थित न्यूनतम चौड़ाई।
Android ऐप को मेनिफेस्ट में android:minWidth और android:minHeight के माध्यम से न्यूनतम चौड़ाई घोषित करने की अनुमति देता है। यदि उपलब्ध स्थान इन मानों से कम है, तो Activity रुक जाती है।
Multi-Window का समर्थन करने के लिए, आपको मेनिफेस्ट में फ़्लैग android:resizeableActivity="true" सेट करना होगा। इसका मतलब है कि विंडो बदलने पर ऐप आकार बदल सकता है। Android 12L+ पर डिफ़ॉल्ट रूप से, सभी ऐप resizeable माने जाते हैं — फ़्लैग को अनदेखा किया जाता है।
जब विंडो का आकार बदलता है, तो Activity को पुनः बनाया जा सकता है (डिफ़ॉल्ट) या मेनिफेस्ट में configChanges="screenSize|smallestScreenSize" निर्दिष्ट होने पर onConfigurationChanged में घटना को संभाला जा सकता है। स्थिति हानि से बचने के लिए मुख्य Activity के लिए configChanges निर्दिष्ट करने की अनुशंसा की जाती है।
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
उन ऐप के लिए जो आकार परिवर्तन का समर्थन नहीं करते, Android एक चेतावनी संवाद दिखाता है। इस मामले में, मल्टी-विंडो मोड में स्विच करने पर, सिस्टम Activity को समाप्त कर सकता है और पुनरारंभ करने के प्रस्ताव के साथ snackbar दिखा सकता है।
Multi-Window मानक Activity जीवनचक्र को बदलता है। जब कोई अन्य ऐप आसन्न विंडो में सक्रिय होता है, तो वर्तमान Activity को onPause() का कॉल मिलता है लेकिन onStop() नहीं — यह दृश्यमान रहता है, हालांकि फ़ोकस में नहीं। यह महत्वपूर्ण है: एक वीडियो प्लेयर को onPause पर चलना जारी रखना चाहिए, onStop पर नहीं।
डेवलपर्स को राज्यों के बीच अंतर करने की आवश्यकता है: onPause + isInMultiWindowMode() = true का अर्थ है केवल फ़ोकस की हानि, स्क्रीन से बाहर निकलना नहीं। वीडियो और एनिमेशन के लिए, यह प्लेबैक को रोकने का नहीं बल्कि केवल नियंत्रण तत्वों को अचयनित करने का संकेत है।
Multi-Window से बाहर निकलने पर, onMultiWindowModeChanged() onResume() से पहले कॉल किया जाता है। यह उपयोगकर्ता के इंटरैक्ट करना शुरू करने से पहले पूर्ण-स्क्रीन मोड के लिए इंटरफ़ेस को पुनर्निर्मित करने का अवसर देता है।
पहला नियम स्थिति को सहेजना है। मल्टी-विंडो मोड में, Activity किसी भी क्षण पुनः बनाई जा सकती है। कॉन्फ़िगरेशन परिवर्तनों के बीच बनी रहने वाली सभी डेटा के लिए ViewModel में SavedStateHandle या onSaveInstanceState का उपयोग करें।
दूसरा नियम न्यूनतम चौड़ाई 220 dp पर परीक्षण करना है। यह मान Split Screen में सबसे संकरी विंडो मानी जाती है। इंटरफ़ेस पढ़ने योग्य और कार्यात्मक बना रहना चाहिए। यदि कुछ तत्व सीमा से बाहर जाते हैं, तो लेआउट के बीच स्विच करने के लिए Window Size Class का उपयोग करें।
तीसरा नियम उन कार्यक्षमताओं को अक्षम करना है जो Multi-Window में काम नहीं करती हैं। उदाहरण के लिए, यदि स्क्रीन बहुत छोटी है तो Camera उपलब्ध नहीं हो सकती है। कैमरा या अन्य पूर्ण-स्क्रीन फ़ंक्शन शुरू करने से पहले isInMultiWindowMode() की जांच करें।
अक्सर पूछे जाने वाले प्रश्न
मेनिफेस्ट में android:resizeableActivity="false" सेट करें। Android 12L+ पर, बड़ी स्क्रीन वाले उपकरणों के लिए फ़्लैग को अनदेखा किया जाता है, इसलिए पूर्ण निषेध के लिए android:maxAspectRatio का उपयोग करें।
Activity से isInMultiWindowMode() कॉल करें। विधि true लौटाती है यदि ऐप Split Screen, PiP या Freeform में चल रहा है। आप onMultiWindowModeChanged() की सदस्यता भी ले सकते हैं।
Android TV पर, केवल Picture-in-Picture मोड उपलब्ध है। Split Screen और Freeform समर्थित नहीं हैं — टीवी कोने में PiP विंडो के साथ एक मुख्य स्क्रीन का उपयोग करते हैं।
Foreground सेवा मोड की परवाह किए बिना काम करती रहती है। हालांकि, यदि ऐप PiP में स्विच करता है, तो सिस्टम संसाधनों को बचाने के लिए निष्पादन को अस्थायी रूप से रोक सकता है।
Android ClipData और View.OnDragListener के माध्यम से Multi-Window में विंडो के बीच Drag and Drop का समर्थन करता है। FLAG_GRANT_READ_URI_PERMISSION के साथ ContentProvider या Intent के माध्यम से डेटा स्थानांतरित किया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें