Multi-Window — це набір режимів багатозадачності в Android, що дозволяє запускати кілька застосунків на екрані одночасно. Система включає три режими: Split Screen для розділення екрана на дві частини, Picture-in-Picture для відео в міні-вікні та Freeform для вікон довільного розміру на великих екранах. За даними Android Developers (2025), підтримка Multi-Window обов'язкова для пристроїв із шириною екрана 600 dp і більше, і кожен розробник повинен адаптувати застосунок до можливих змін розмірів вікна.
Головне
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+. Для активації використовується enterPictureInPictureMode() в Activity.
Freeform — режим вікон довільного розміру, схожий на десктопні віконні менеджери. Доступний на Android TV і деяких великоекранних пристроях виробників (Samsung DeX). Застосунки запускаються у вікнах із заголовком та кнопками керування.
Коли користувач активує Multi-Window, Android створює новий екземпляр Activity для кожного застосунку та розподіляє доступний простір екрана. Активності розміщуються в окремих Task, але використовують один і той самий StackView з роздільником між ними.
Система повідомляє кожну Activity про зміну розміру через onConfigurationChanged(). Якщо Activity не обробляє цю подію — вона перестворюється (recreate). Для Split Screen ширина вікна може зменшитися до 220 dp — мінімальної ширини, що підтримується платформою.
Android дозволяє застосунку оголосити мінімальну ширину через android:minWidth та android:minHeight у маніфесті. Якщо доступний простір менший за вказані значення — Activity переходить у паузу.
Для підтримки Multi-Window необхідно встановити прапорець android:resizeableActivity="true" у маніфесті. Це означає, що застосунок може змінювати розмір при зміні вікна. За замовчуванням на Android 12L+ всі застосунки вважаються resizeable — прапорець ігнорується.
При зміні розміру вікна Activity може перестворитися (за замовчуванням) або обробити подію в onConfigurationChanged, якщо в маніфесті вказано configChanges="screenSize|smallestScreenSize". Рекомендується вказувати configChanges для ключових Activity, щоб уникнути втрати стану.
<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 може бути перестворена в будь-який момент. Використовуйте SavedStateHandle у ViewModel або onSaveInstanceState для всіх даних, які повинні зберігатися між змінами конфігурації.
Друге — тестувати на мінімальній ширині 220 dp. Це значення вважається найвужчим вікном у Split Screen. Інтерфейс повинен залишатися читабельним і функціональним. Якщо якісь елементи виходять за межі — використовуйте Window Size Class для перемикання між макетами.
Третє — відключати функціональність, яка не працює в Multi-Window. Наприклад, Camera може бути недоступна, якщо екран занадто малий. Перевіряйте isInMultiWindowMode() перед запуском камери або інших повноекранних функцій.
Часті запитання
Встановіть android:resizeableActivity="false" у маніфесті. На Android 12L+ прапорець ігнорується для девайсів з великим екраном, тому для повної заборони використовуйте android:maxAspectRatio.
Викличте isInMultiWindowMode() з Activity. Метод повертає true, якщо застосунок працює в Split Screen, PiP або Freeform. Також можна підписатися на onMultiWindowModeChanged().
На Android TV доступний тільки режим Picture-in-Picture. Split Screen і Freeform не підтримуються — телевізори використовують один головний екран з PiP-вікном у кутку.
Foreground-сервіс продовжує роботу незалежно від режиму. Але якщо застосунок переходить у PiP, система може тимчасово призупинити виконання для економії ресурсів.
Android підтримує Drag and Drop між вікнами в Multi-Window через ClipData та View.OnDragListener. Дані передаються через ContentProvider або Intent з FLAG_GRANT_READ_URI_PERMISSION.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також