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 ইনস্ট্যান্স তৈরি করে এবং উপলব্ধ স্ক্রিন স্থান বিতরণ করে। Activities পৃথক 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-এ ইভেন্টটি হ্যান্ডেল করা যেতে পারে। অবস্থা হারানো এড়াতে মূল Activities-এর জন্য 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন