
Todavía recuerdo cuando se hablaba de que iba a llegar a los smartphones y tablets de Apple aquello que se denominaba multitarea, y que permitía ejecutar varias aplicaciones al mismo tiempo. Pues bien, la verdadera multitarea, denominada Multiwindow, podría llegar ya integrada en Android L, pudiendo así ejecutar dos aplicaciones a la vez, y mostrando cada una en una mitad de la pantalla. No obstante, es tan solo una posibilidad.
La característica Multiwindow ya será conocida para los usuarios de algunos smartphones y tablets Samsung y LG, así como para algunos usuarios que cuenten con Xposed Framework en sus smartphones y tablets. Básicamente permite ejecutar dos aplicaciones a la vez, mostrándose cada una de ellas en una mitad de la pantalla, consiguiendo así poder utilizar las dos aplicaciones a la vez. Sin embargo, es una característica con la que no cuentan la mayoría de los smartphones y tablets con Android. ¿O quizás sí? Un desarrollador se ha dado cuenta de que incluso Jelly Bean llegaba ya con una serie de API que permitía utilizar una función semejante a Multiwindow.
Eso sí, indica que dichas API no tienen apenas documentación, y que solo se pueden utilizar por aplicaciones firmadas por Google, con lo que actualmente no es demasiado útil. No obstante, esto podría indicar que Google ya estaba trabajando en la función Multiwindow, y que podría llegar integrada en una nueva versión del sistema operativo en un futuro. ¿Será una de las novedades de Android L? Es posible que sí, y eso sería una de las grandes novedades que más se apreciarían de la nueva versión del sistema operativo, pues lo cierto es que la función Multiwindow es realmente útil, y salvo en el caso de contar con un Samsung o un LG, no es fácil conseguir instalar esta función en un smartphone o tablet Android, ni siquiera aunque esté rooteado.
Es posible que también te interese nuestra serie de artículos 20 trucos para Android que quizás no conocías.
Qué es exactamente Multiwindow en Android
Hoy, el modo multiventana en Android abarca varios comportamientos: pantalla dividida (dos apps lado a lado o apiladas), Picture-in-Picture (PiP) para reproducir video en una ventana flotante mientras usas otra app, y ventanas de escritorio (freeform) en dispositivos con pantallas grandes. En todos los casos, el sistema gestiona las actividades para que compartan la pantalla de forma estable.
Cómo activar la pantalla dividida y salir de ella
En la mayoría de dispositivos Android modernos puedes activar la pantalla dividida desde la vista de Recientes: abre Recientes, toca el icono de la app en la barra de título y elige Pantalla dividida; luego selecciona la segunda app. En versiones con mejoras para pantallas grandes, verás una acción Split directamente bajo la tarjeta activa cuando hay varias apps en Recientes. Para salir, arrastra el separador hasta el borde superior, inferior, izquierdo o derecho.
Compatibilidad y cambios por versión
Android introdujo la pantalla dividida en dispositivos más pequeños y PiP en modelos compatibles; más tarde amplió PiP a más dispositivos, y estableció el modo multiventana como comportamiento estándar en pantallas grandes, admitiendo todas las apps incluso cuando una declare restricciones de cambio de tamaño (el sistema puede aplicar un modo de compatibilidad). En dispositivos con gran diagonal y densidad, el sistema puede ignorar restricciones de orientación y relación de aspecto para optimizar la experiencia. Nota: los fabricantes pueden ajustar u anular algunos comportamientos.
Funciones clave para desarrolladores
- Control en manifiesto: habilita o deshabilita multiventana con
android:resizeableActivity; admite PiP conandroid:supportsPictureInPicture; maneja cambios de tamaño conandroid:configChangesy define mínimos con<layout>(minWidth/minHeight). - Consultas y callbacks:
Activity.isInMultiWindowMode(),onMultiWindowModeChanged(),isInPictureInPictureMode()yonPictureInPictureModeChanged(). - Reanudación múltiple: en multiventana, varias actividades pueden permanecer RESUMED; usa
onTopResumedActivityChanged(topResumed: Boolean)para recuperar o liberar recursos exclusivos (cámara, micrófono). - Métricas de ventana: obtén límites con WindowManager (
computeCurrentWindowMetrics/computeMaximumWindowMetrics) para adaptar la UI al tamaño actual. - Arranque adyacente: inicia actividades en la ventana contigua con
FLAG_ACTIVITY_LAUNCH_ADJACENT(puede requerirFLAG_ACTIVITY_NEW_TASK), y define bounds conActivityOptions.setLaunchBounds()en ventanas de escritorio. - Arrastrar y soltar: soporta drag & drop entre apps que comparten pantalla; evalúa la API
DropHelper. - Varias instancias: lanza ventanas adicionales con
FLAG_ACTIVITY_NEW_TASK; la propiedad de sistema UI para multi-instancia permite exponer controles para crear nuevas instancias cuando el modo de inicio lo permite.
Ejemplos de implementación
Activar ventana adyacente:
fun openUrlInAdjacentWindow(url: String) {
Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse(url)
addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT or Intent.FLAG_ACTIVITY_NEW_TASK)
}.also { intent -> startActivity(intent) }
}
Permitir cambio de tamaño:
<application
android:name=".MyActivity"
android:resizeableActivity="true" />
Reanudación múltiple (metadatos):
<meta-data
android:name="android.allow_multiple_resumed_activities"
android:value="true" />
Manejar cambios de configuración:
<activity
android:name=".MyActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" />
Tamaños mínimos y posición:
<activity android:name=".MyActivity">
<layout
android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end"
android:minHeight="450dp"
android:minWidth="300dp" />
</activity>
Buenas prácticas y pruebas
- Comprueba rendimiento al redimensionar rápidamente y verifica que la UI se adapta sin cortes.
- Respeta recursos exclusivos: si pierdes prioridad de cámara, maneja
onDisconnected()y recupera cuando vuelvas a foco. - Deshabilitar multiventana: si es imprescindible, usa
resizeableActivity="false"(el sistema puede forzar compatibilidad en pantallas grandes). - Limitaciones: en multiventana no puedes ocultar la barra de estado y el sistema puede ignorar
screenOrientationen ventanas compartidas.
La multiventana ha evolucionado desde una idea incipiente a un conjunto maduro de modos, APIs y patrones que mejoran productividad en móviles, tablets y plegables. Para usuarios, dominar la pantalla dividida y PiP marca la diferencia; para desarrolladores, adoptar resizeableActivity, gestionar multi-resume y ajustar la UI a las métricas de ventana garantiza experiencias fluidas, consistentes y listas para cualquier formato.