Multi-Window: суть режимів багатозадачності на Android

Автор: IT Sectr Опубліковано: 2026-06-08 Час читання: 10 хв

Multi-Window — це набір режимів багатозадачності в Android, що дозволяє запускати кілька застосунків на екрані одночасно. Система включає три режими: Split Screen для розділення екрана на дві частини, Picture-in-Picture для відео в міні-вікні та Freeform для вікон довільного розміру на великих екранах. За даними Android Developers (2025), підтримка Multi-Window обов'язкова для пристроїв із шириною екрана 600 dp і більше, і кожен розробник повинен адаптувати застосунок до можливих змін розмірів вікна.

Головне

  • Multi-Window — система багатозадачності Android з трьома режимами: Split Screen, PiP, Freeform.
  • Split Screen — два застосунки поруч, роздільник перетягується, пропорції змінюються.
  • Picture-in-Picture — відео в міні-вікні поверх інших застосунків.
  • Freeform — вікна довільного розміру на Android TV та великих екранах.
  • ResizeableActivity — прапорець у маніфесті для оголошення підтримки багатовіконного режиму.

Що таке Multi-Window в Android?

Multi-Window — це функція Android, введена у версії 7.0 Nougat (API 24), яка дозволяє запускати два і більше застосунків на екрані одночасно. Режим став відповіддю Google на зростаючу популярність планшетів та великоекранних пристроїв, де однозадачний режим обмежує продуктивність.

До Android 7.0 кожен застосунок займав весь екран — при перемиканні між застосунками попередній згортався. Multi-Window змінив цю модель: тепер застосунок може займати частину екрана, зберігаючи активний стан. Для розробника це означає, що onConfigurationChanged та обробка змін розмірів стають обов'язковими.

На Android 12L (2022) Google зробив Multi-Window режимом за замовчуванням для пристроїв з великим екраном — всі застосунки на планшетах запускаються в режимі, що допускає багатовіконність. Виняток — тільки застосунки з явною забороною в маніфесті.

Режими Multi-Window: Split Screen, PiP, Freeform

Split Screen — найпоширеніший режим. Екран ділиться на дві частини по горизонталі або вертикалі, користувач перетягує роздільник. Доступний на телефонах і планшетах. Запускається через Overview (Recents) — перетягуванням іконки застосунку до верхнього або нижнього краю.

Picture-in-Picture (PiP) — режим для відео- та навігаційних застосунків. Контент відображається в плаваючому міні-вікні (приблизно 15–25% екрана), яке можна переміщати. Доступний на Android 8.0+. Для активації використовується enterPictureInPictureMode() в Activity.

Freeform — режим вікон довільного розміру, схожий на десктопні віконні менеджери. Доступний на Android TV і деяких великоекранних пристроях виробників (Samsung DeX). Застосунки запускаються у вікнах із заголовком та кнопками керування.

Як працює Multi-Window

Коли користувач активує Multi-Window, Android створює новий екземпляр Activity для кожного застосунку та розподіляє доступний простір екрана. Активності розміщуються в окремих Task, але використовують один і той самий StackView з роздільником між ними.

Система повідомляє кожну Activity про зміну розміру через onConfigurationChanged(). Якщо Activity не обробляє цю подію — вона перестворюється (recreate). Для Split Screen ширина вікна може зменшитися до 220 dp — мінімальної ширини, що підтримується платформою.

Android дозволяє застосунку оголосити мінімальну ширину через android:minWidth та android:minHeight у маніфесті. Якщо доступний простір менший за вказані значення — Activity переходить у паузу.

Адаптація Activity до багатовіконного режиму

Для підтримки Multi-Window необхідно встановити прапорець android:resizeableActivity="true" у маніфесті. Це означає, що застосунок може змінювати розмір при зміні вікна. За замовчуванням на Android 12L+ всі застосунки вважаються resizeable — прапорець ігнорується.

При зміні розміру вікна Activity може перестворитися (за замовчуванням) або обробити подію в onConfigurationChanged, якщо в маніфесті вказано configChanges="screenSize|smallestScreenSize". Рекомендується вказувати configChanges для ключових Activity, щоб уникнути втрати стану.

xml
<activity
    android:name=".MainActivity"
    android:resizeableActivity="true"
    android:configChanges="screenSize|smallestScreenSize|orientation" />

Для застосунків, які не підтримують зміну розміру, Android показує діалогове вікно з попередженням. У цьому випадку при перемиканні в багатовіконний режим система може завершити Activity та показати snackbar з пропозицією перезапустити.

Multi-Window і життєвий цикл Activity

Multi-Window змінює стандартний життєвий цикл Activity. Коли інший застосунок стає активним у сусідньому вікні, поточна Activity отримує виклик onPause(), але не onStop() — вона залишається видимою, хоча й не у фокусі. Це важливо: відеоплеєр повинен продовжити відтворення на onPause, а не на onStop.

Розробнику потрібно розрізняти стани: onPause + isInMultiWindowMode() = true означає лише втрату фокусу, а не вихід з екрана. Для відео та анімацій це сигнал не зупиняти відтворення, а лише зняти виділення з елементів керування.

При виході з Multi-Window onMultiWindowModeChanged() викликається до onResume(). Це дає можливість перебудувати інтерфейс під повноекранний режим до того, як користувач почне взаємодію.

Найкращі практики для Multi-Window

Перше правило — зберігати стан. У багатовіконному режимі Activity може бути перестворена в будь-який момент. Використовуйте SavedStateHandle у ViewModel або onSaveInstanceState для всіх даних, які повинні зберігатися між змінами конфігурації.

Друге — тестувати на мінімальній ширині 220 dp. Це значення вважається найвужчим вікном у Split Screen. Інтерфейс повинен залишатися читабельним і функціональним. Якщо якісь елементи виходять за межі — використовуйте Window Size Class для перемикання між макетами.

Третє — відключати функціональність, яка не працює в Multi-Window. Наприклад, Camera може бути недоступна, якщо екран занадто малий. Перевіряйте isInMultiWindowMode() перед запуском камери або інших повноекранних функцій.

Часті запитання

Як заборонити Multi-Window для свого застосунку?

Встановіть android:resizeableActivity="false" у маніфесті. На Android 12L+ прапорець ігнорується для девайсів з великим екраном, тому для повної заборони використовуйте android:maxAspectRatio.

Як визначити, що застосунок знаходиться в Multi-Window?

Викличте isInMultiWindowMode() з Activity. Метод повертає true, якщо застосунок працює в Split Screen, PiP або Freeform. Також можна підписатися на onMultiWindowModeChanged().

Чи працює Multi-Window на Android TV?

На Android TV доступний тільки режим Picture-in-Picture. Split Screen і Freeform не підтримуються — телевізори використовують один головний екран з PiP-вікном у кутку.

Що відбувається з foreground-сервісом у Multi-Window?

Foreground-сервіс продовжує роботу незалежно від режиму. Але якщо застосунок переходить у PiP, система може тимчасово призупинити виконання для економії ресурсів.

Як обробляти перетягування (Drag and Drop) між вікнами?

Android підтримує Drag and Drop між вікнами в Multi-Window через ClipData та View.OnDragListener. Дані передаються через ContentProvider або Intent з FLAG_GRANT_READ_URI_PERMISSION.

Підсумки

  • Multi-Window — багатозадачність Android з трьома режимами для одночасної роботи застосунків.
  • Split Screen — розділення екрана на дві частини з перетягуваним роздільником.
  • Picture-in-Picture — відео в міні-вікні для Android 8.0+.
  • Freeform — вікна довільного розміру на Android TV та Samsung DeX.
  • resizeableActivity — обов'язковий прапорець у маніфесті для підтримки режиму.
  • onMultiWindowModeChanged — колбек для перебудови інтерфейсу при вході/виході.
  • Висновок — Multi-Window обов'язковий до підтримки для всіх застосунків на великих екранах з 2022 року.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також