Multi-Window — adalah kumpulan mode multitasking di Android yang memungkinkan menjalankan beberapa aplikasi secara bersamaan di layar. Sistem ini mencakup tiga mode: Split Screen untuk membagi layar menjadi dua bagian, Picture-in-Picture untuk video di jendela mini, dan Freeform untuk jendela ukuran sembarang di layar besar. Menurut Android Developers (2025), dukungan Multi-Window wajib untuk perangkat dengan lebar layar 600 dp atau lebih, dan setiap pengembang harus menyesuaikan aplikasi terhadap kemungkinan perubahan ukuran jendela.
Poin utama
Multi-Window — adalah fitur Android yang diperkenalkan di versi 7.0 Nougat (API 24), yang memungkinkan menjalankan dua atau lebih aplikasi secara bersamaan di layar. Mode ini menjadi jawaban Google atas meningkatnya popularitas tablet dan perangkat layar besar, di mana mode satu tugas membatasi produktivitas.
Sebelum Android 7.0 setiap aplikasi menempati seluruh layar — saat beralih antar aplikasi, aplikasi sebelumnya diminimalkan. Multi-Window mengubah model ini: sekarang aplikasi dapat menempati sebagian layar sambil tetap aktif. Bagi pengembang, ini berarti onConfigurationChanged dan penanganan perubahan ukuran menjadi wajib.
Di Android 12L (2022) Google menjadikan Multi-Window sebagai mode default untuk perangkat layar besar — semua aplikasi di tablet berjalan dalam mode yang mengizinkan multi-jendela. Pengecualian hanya untuk aplikasi dengan larangan eksplisit di manifes.
Split Screen — mode yang paling umum. Layar dibagi menjadi dua bagian secara horizontal atau vertikal, pengguna menyeret pemisah. Tersedia di ponsel dan tablet. Diaktifkan melalui Overview (Recents) — dengan menyeret ikon aplikasi ke tepi atas atau bawah.
Picture-in-Picture (PiP) — mode untuk aplikasi video dan navigasi. Konten ditampilkan di jendela mini mengambang (sekitar 15–25% layar) yang dapat dipindahkan. Tersedia di Android 8.0+. Untuk aktivasi digunakan enterPictureInPictureMode() di Activity.
Freeform — mode jendela ukuran sembarang, mirip dengan pengelola jendela desktop. Tersedia di Android TV dan beberapa perangkat layar besar pabrikan (Samsung DeX). Aplikasi berjalan di jendela dengan judul dan tombol kontrol.
Ketika pengguna mengaktifkan Multi-Window, Android membuat instance Activity baru untuk setiap aplikasi dan mendistribusikan ruang layar yang tersedia. Aktivitas ditempatkan di Task terpisah, tetapi menggunakan StackView yang sama dengan pemisah di antaranya.
Sistem memberi tahu setiap Activity tentang perubahan ukuran melalui onConfigurationChanged(). Jika Activity tidak menangani peristiwa ini — Activity akan dibuat ulang (recreate). Untuk Split Screen, lebar jendela dapat berkurang hingga 220 dp — lebar minimum yang didukung platform.
Android memungkinkan aplikasi mendeklarasikan lebar minimum melalui android:minWidth dan android:minHeight di manifes. Jika ruang yang tersedia lebih kecil dari nilai yang ditentukan — Activity masuk ke mode jeda.
Untuk mendukung Multi-Window, Anda perlu mengatur flag android:resizeableActivity="true" di manifes. Ini berarti aplikasi dapat mengubah ukuran saat jendela berubah. Secara default di Android 12L+ semua aplikasi dianggap resizeable — flag diabaikan.
Saat ukuran jendela berubah, Activity dapat dibuat ulang (default) atau menangani peristiwa di onConfigurationChanged, jika di manifes ditentukan configChanges="screenSize|smallestScreenSize". Disarankan untuk menentukan configChanges untuk Activity kunci guna menghindari kehilangan status.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
Untuk aplikasi yang tidak mendukung perubahan ukuran, Android menampilkan dialog peringatan. Dalam hal ini, saat beralih ke mode multi-jendela, sistem dapat mengakhiri Activity dan menampilkan snackbar dengan tawaran untuk memulai ulang.
Multi-Window mengubah siklus hidup standar Activity. Ketika aplikasi lain menjadi aktif di jendela yang berdekatan, Activity saat ini menerima panggilan onPause(), tetapi bukan onStop() — tetap terlihat, meskipun tidak dalam fokus. Ini penting: pemutar video harus melanjutkan pemutaran di onPause, bukan di onStop.
Pengembang harus membedakan status: onPause + isInMultiWindowMode() = true berarti hanya kehilangan fokus, bukan keluar dari layar. Untuk video dan animasi, ini adalah sinyal untuk tidak menghentikan pemutaran, hanya menghilangkan sorotan dari elemen kontrol.
Saat keluar dari Multi-Window onMultiWindowModeChanged() dipanggil sebelum onResume(). Ini memberikan kesempatan untuk membangun ulang antarmuka ke mode layar penuh sebelum pengguna mulai berinteraksi.
Aturan pertama — menyimpan status. Dalam mode multi-jendela, Activity dapat dibuat ulang kapan saja. Gunakan SavedStateHandle di ViewModel atau onSaveInstanceState untuk semua data yang harus dipertahankan di antara perubahan konfigurasi.
Kedua — menguji pada lebar minimum 220 dp. Nilai ini dianggap sebagai jendela tersempit di Split Screen. Antarmuka harus tetap terbaca dan fungsional. Jika beberapa elemen keluar dari batas — gunakan Window Size Class untuk beralih antar tata letak.
Ketiga — menonaktifkan fungsionalitas yang tidak berfungsi di Multi-Window. Misalnya, Camera mungkin tidak tersedia jika layar terlalu kecil. Periksa isInMultiWindowMode() sebelum memulai kamera atau fungsi layar penuh lainnya.
Pertanyaan yang sering diajukan
Atur android:resizeableActivity="false" di manifes. Di Android 12L+ flag diabaikan untuk perangkat layar besar, jadi untuk penonaktifan penuh gunakan android:maxAspectRatio.
Panggil isInMultiWindowMode() dari Activity. Metode mengembalikan true jika aplikasi berjalan di Split Screen, PiP atau Freeform. Anda juga dapat berlangganan onMultiWindowModeChanged().
Di Android TV hanya tersedia mode Picture-in-Picture. Split Screen dan Freeform tidak didukung — TV menggunakan satu layar utama dengan jendela PiP di sudut.
Foreground-service terus berjalan terlepas dari mode. Tetapi jika aplikasi beralih ke PiP, sistem dapat untuk sementara menghentikan eksekusi untuk menghemat sumber daya.
Android mendukung Drag and Drop antar jendela di Multi-Window melalui ClipData dan View.OnDragListener. Data ditransfer melalui ContentProvider atau Intent dengan FLAG_GRANT_READ_URI_PERMISSION.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga