Multi-Window é um conjunto de modos multitarefa no Android que permite executar vários aplicativos na tela simultaneamente. O sistema inclui três modos: Split Screen para dividir a tela em duas partes, Picture-in-Picture para vídeo em uma minijanela e Freeform para janelas de tamanho arbitrário em telas grandes. De acordo com Android Developers (2025), o suporte Multi-Window é obrigatório para dispositivos com largura de tela de 600 dp ou mais, e todo desenvolvedor deve adaptar seu aplicativo a possíveis alterações no tamanho da janela.
Principais conclusões
Multi-Window é um recurso do Android introduzido na versão 7.0 Nougat (API 24) que permite executar dois ou mais aplicativos na tela simultaneamente. O modo foi a resposta do Google à crescente popularidade de tablets e dispositivos de tela grande, onde o modo de tarefa única limita a produtividade.
Antes do Android 7.0, cada aplicativo ocupava a tela inteira — ao alternar entre aplicativos, o anterior era minimizado. O Multi-Window mudou esse modelo: agora um aplicativo pode ocupar parte da tela mantendo seu estado ativo. Para os desenvolvedores, isso significa que onConfigurationChanged e o tratamento de alterações de tamanho se tornam obrigatórios.
No Android 12L (2022), o Google tornou o Multi-Window o modo padrão para dispositivos de tela grande — todos os aplicativos em tablets são executados em um modo que permite multijanela. As únicas exceções são aplicativos com proibição explícita no manifesto.
Split Screen — o modo mais comum. A tela é dividida em duas partes horizontal ou verticalmente, o usuário arrasta o divisor. Disponível em celulares e tablets. Ativado via Overview (Recents) — arrastando o ícone do aplicativo para a borda superior ou inferior.
Picture-in-Picture (PiP) — um modo para aplicativos de vídeo e navegação. O conteúdo é exibido em uma minijanela flutuante (aproximadamente 15–25% da tela) que pode ser movida. Disponível no Android 8.0+. Para ativar, use enterPictureInPictureMode() na Activity.
Freeform — um modo para janelas de tamanho arbitrário, semelhante aos gerenciadores de janelas de desktop. Disponível no Android TV e em alguns dispositivos de tela grande de fabricantes (Samsung DeX). Os aplicativos são executados em janelas com barra de título e botões de controle.
Quando um usuário ativa o Multi-Window, o Android cria uma nova instância de Activity para cada aplicativo e distribui o espaço disponível da tela. As Activities são colocadas em Tasks separadas mas usam o mesmo StackView com um divisor entre elas.
O sistema notifica cada Activity sobre a alteração de tamanho através de onConfigurationChanged(). Se a Activity não tratar este evento, ela é recriada. Para Split Screen, a largura da janela pode diminuir para 220 dp — a largura mínima suportada pela plataforma.
O Android permite que um aplicativo declare uma largura mínima através de android:minWidth e android:minHeight no manifesto. Se o espaço disponível for menor que esses valores, a Activity entra em pausa.
Para suportar Multi-Window, você precisa definir o sinalizador android:resizeableActivity="true" no manifesto. Isso significa que o aplicativo pode redimensionar quando a janela muda. Por padrão no Android 12L+, todos os aplicativos são considerados redimensionáveis — o sinalizador é ignorado.
Quando o tamanho da janela muda, a Activity pode ser recriada (padrão) ou tratar o evento em onConfigurationChanged se configChanges="screenSize|smallestScreenSize" for especificado no manifesto. Recomenda-se especificar configChanges para Activities-chave para evitar perda de estado.
<activity
android:name=".MainActivity"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|orientation" />
Para aplicativos que não suportam redimensionamento, o Android mostra uma caixa de diálogo de aviso. Nesse caso, ao alternar para o modo multijanela, o sistema pode finalizar a Activity e mostrar um snackbar com uma oferta para reiniciar.
O Multi-Window altera o ciclo de vida padrão da Activity. Quando outro aplicativo se torna ativo na janela adjacente, a Activity atual recebe uma chamada onPause() mas não onStop() — ela permanece visível, embora não em foco. Isso é importante: um player de vídeo deve continuar a reprodução no onPause, não no onStop.
Os desenvolvedores precisam distinguir entre estados: onPause + isInMultiWindowMode() = true significa apenas perda de foco, não saída da tela. Para vídeo e animações, isso é um sinal para não parar a reprodução, mas apenas desmarcar os elementos de controle.
Ao sair do Multi-Window, onMultiWindowModeChanged() é chamado antes de onResume(). Isso dá a oportunidade de reconstruir a interface para o modo de tela cheia antes que o usuário comece a interagir.
A primeira regra é salvar o estado. No modo multijanela, a Activity pode ser recriada a qualquer momento. Use SavedStateHandle no ViewModel ou onSaveInstanceState para todos os dados que devem persistir entre alterações de configuração.
A segunda regra é testar com largura mínima de 220 dp. Este valor é considerado a janela mais estreita no Split Screen. A interface deve permanecer legível e funcional. Se alguns elementos saírem dos limites, use Window Size Class para alternar entre layouts.
A terceira regra é desabilitar funcionalidades que não funcionam em Multi-Window. Por exemplo, Camera pode não estar disponível se a tela for muito pequena. Verifique isInMultiWindowMode() antes de iniciar a câmera ou outras funções de tela cheia.
Perguntas frequentes
Defina android:resizeableActivity="false" no manifesto. No Android 12L+, o sinalizador é ignorado para dispositivos de tela grande, então para proibição completa use android:maxAspectRatio.
Chame isInMultiWindowMode() da Activity. O método retorna true se o aplicativo estiver executando em Split Screen, PiP ou Freeform. Você também pode se inscrever em onMultiWindowModeChanged().
No Android TV, apenas o modo Picture-in-Picture está disponível. Split Screen e Freeform não são suportados — as TVs usam uma tela principal com uma janela PiP no canto.
Um serviço em primeiro plano continua funcionando independentemente do modo. No entanto, se o aplicativo mudar para PiP, o sistema pode pausar temporariamente a execução para economizar recursos.
O Android suporta arrastar e soltar entre janelas no Multi-Window através de ClipData e View.OnDragListener. Os dados são transferidos através de ContentProvider ou Intent com FLAG_GRANT_READ_URI_PERMISSION.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também