La modalità multi-finestra consente a più app di condividere contemporaneamente lo stesso schermo. Le app possono essere affiancate o una sopra l'altra (modalità schermo diviso), una app in una piccola finestra che si sovrappone ad altre app (modalità Picture in picture) o app singole in finestre separate mobili e ridimensionabili (modalità finestre del desktop).
Per le istruzioni per l'utente su come accedere alla modalità schermo diviso sugli smartphone, vai a Visualizzare due app contemporaneamente sullo smartphone Pixel.
Funzionalità multi-finestra specifiche per la versione
L'esperienza utente multi-finestra dipende dalla versione di Android e dal tipo di dispositivo:
Android 7.0 (livello API 24) ha introdotto la modalità schermo diviso sui dispositivi con schermo piccolo e la modalità Picture in Picture su alcuni dispositivi.
La modalità schermo diviso riempie lo schermo con due app, mostrandole una accanto all'altra o una sopra l'altra. Gli utenti possono trascinare il divisore che separa le due app per ingrandirne una e rimpicciolirne l'altra.
La modalità Picture in picture consente agli utenti di continuare la riproduzione video mentre interagiscono con un'altra app (vedi Supporto della modalità Picture in picture).
La modalità finestra desktop, in cui gli utenti possono ridimensionare liberamente ogni attività, può essere attivata dai produttori di dispositivi con schermi di grandi dimensioni.
Puoi configurare la modalità di gestione della modalità multi-finestra da parte della tua app specificando le dimensioni minime consentite dell'attività. Puoi anche disattivare la modalità multi-finestra per la tua app impostando
resizeableActivity="false"
per assicurarti che il sistema mostri sempre la tua app a schermo intero.
Android 8.0 (livello API 26) estende la modalità Picture in picture ai dispositivi con schermi di piccole dimensioni.
Android 12 (livello API 31) rende la modalità multi-finestra un comportamento standard.
Su schermi di grandi dimensioni (classe di dimensioni della finestra media o espansa), la piattaforma supporta tutte le app in modalità multi-finestra, indipendentemente dalla configurazione dell'app. Se
resizeableActivity="false"
, l'app viene inserita in modalità compatibilità quando necessario per adattarsi alle dimensioni di visualizzazione.Su schermi piccoli (classe di dimensioni della finestra compatta), il sistema controlla
minWidth
eminHeight
di un'attività per determinare se l'attività può essere eseguita in modalità multi-finestra. SeresizeableActivity="false"
, l'app non può essere eseguita in modalità multi-finestra indipendentemente dalla larghezza e dall'altezza minime.
Android 16 (livello API 36) esegue l'override delle limitazioni relative a orientamento dello schermo, proporzioni e ridimensionamento.
Su schermi di grandi dimensioni (larghezza minima >= 600 dp), il sistema ignora gli attributi del file manifest e le API del tempo di esecuzione utilizzate per limitare l'orientamento, le proporzioni e la ridimensionabilità di un'app, ottimizzando l'esperienza utente su tutti i fattori di forma dei dispositivi.
Per scoprire come escludere i giochi dalle modifiche di Android 16, consulta le eccezioni relative a Orientamento, proporzioni e ridimensionamento delle app.
Modalità schermo diviso
Gli utenti attivano la modalità schermo diviso nel seguente modo:
- Apri la schermata Recenti.
- Scorrere un'app nella visualizzazione
- Premi l'icona dell'app nella barra del titolo dell'app.
- Seleziona l'opzione del menu Schermo diviso
- Seleziona un'altra app dalla schermata Recenti oppure chiudi la schermata Recenti e avvia un'altra app.
Gli utenti escono dalla modalità schermo diviso trascinando il divisore della finestra fino al bordo dello schermo, verso l'alto o verso il basso, verso sinistra o verso destra.
Avvia adiacente
Se la tua app deve accedere ai contenuti tramite un intent, puoi utilizzare
FLAG_ACTIVITY_LAUNCH_ADJACENT
per aprire i contenuti in una finestra
in modalità split-screen adiacente.
FLAG_ACTIVITY_LAUNCH_ADJACENT
è stato introdotto in Android 7.0 (livello API 24) per consentire alle app in esecuzione in modalità schermo diviso di avviare attività nella finestra adiacente.
Android 12L (livello API 32) e versioni successive hanno esteso la definizione del flag per consentire alle app in esecuzione a schermo intero di attivare la modalità split-screen e avviare le attività nella finestra adiacente.
Per avviare un'attività adiacente, utilizza FLAG_ACTIVITY_LAUNCH_ADJACENT
in
combinazione con FLAG_ACTIVITY_NEW_TASK
, ad esempio:
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) }
}
Ciclo di vita dell'attività in modalità multi-finestra
La modalità multi-finestra non modifica il ciclo di vita dell'attività. Tuttavia, lo stato di ripresa delle app in più finestre varia a seconda delle versioni di Android.
Multi-resume
Android 10 (livello API 29) e versioni successive supportano la funzionalità multi-resume: tutte
le attività rimangono nello stato RESUMED
quando il dispositivo è in modalità
multi-finestra. Un'attività può essere messa in pausa se un'attività trasparente si trova sopra
l'attività o se l'attività non è selezionabile, ad esempio se è in
modalità Picture in picture. È anche possibile che nessuna attività sia in primo piano in un determinato momento, ad esempio se il riquadro delle notifiche è aperto. Il metodo onStop()
funziona come al solito: viene chiamato ogni volta che un'attività viene rimossa
dallo schermo.
La funzionalità Multi Resume è disponibile anche su alcuni dispositivi con Android 9 (livello API 28). Per attivare la funzionalità multi-resume sui dispositivi Android 9, aggiungi i seguenti metadati del manifest:
<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />
Per verificare che un determinato dispositivo supporti questi metadati del manifest, consulta le specifiche del dispositivo.
Android 9
In modalità multi-finestra su Android 9 (livello API 28) e versioni precedenti, solo l'attività con cui l'utente ha interagito più di recente è attiva in un determinato momento. Questa
attività è considerata in primo piano ed è l'unica attività nello stato RESUMED
. Tutte le altre attività visibili sono STARTED
ma non sono RESUMED
.
Tuttavia, il sistema assegna a queste attività visibili ma non riprese una priorità più alta rispetto alle attività non visibili. Se l'utente interagisce con una delle attività visibili, questa viene ripresa e l'attività in primo piano precedente entra nello stato STARTED
.
Quando sono presenti più attività all'interno di un singolo processo dell'app attiva, l'attività con l'ordine Z più alto viene ripresa e le altre vengono sospese.
Modifiche alla configurazione
Quando l'utente mette un'app in modalità multi-finestra, il sistema notifica l'attività di una modifica della configurazione come specificato in Gestire le modifiche alla configurazione. Ciò accade anche quando l'utente ridimensiona l'app o la riporta in modalità a schermo intero.
In sostanza, questa modifica ha le stesse implicazioni del ciclo di vita dell'attività di quando il sistema comunica all'app che il dispositivo è passato dall'orientamento verticale a quello orizzontale, tranne per il fatto che le dimensioni dell'app vengono modificate anziché solo scambiate. La tua attività può gestire autonomamente la modifica della configurazione oppure la tua app può consentire al sistema di distruggere l'attività e ricrearla con le nuove dimensioni.
Se l'utente ridimensiona una finestra e la ingrandisce in una delle dimensioni, il
sistema ridimensiona l'attività in modo che corrisponda all'azione dell'utente ed esegue le modifiche
alla configurazione necessarie. Se l'app è in ritardo nel disegno delle aree appena esposte, il
sistema riempie temporaneamente queste aree con il colore specificato dall'attributo
windowBackground
o dall'attributo di stile
windowBackgroundFallback
predefinito.
Accesso esclusivo alle risorse
Per supportare la funzionalità di riproduzione multipla, utilizza il
callback del ciclo di vita onTopResumedActivityChanged()
.
Il callback viene richiamato quando un'attività acquisisce o perde la posizione di attività ripresa in primo piano, il che è importante quando un'attività utilizza una risorsa singleton condivisa, come il microfono o la videocamera:
override fun onTopResumedActivityChanged(topResumed: Boolean) {
if (topResumed) {
// Top resumed activity.
// Can be a signal to re-acquire exclusive resources.
} else {
// No longer the top resumed activity.
}
}
Tieni presente che un'app può perdere risorse per altri motivi, ad esempio la rimozione di un componente hardware condiviso.
In ogni caso, un'app deve gestire correttamente gli eventi e le modifiche dello stato che influenzano le risorse disponibili.
Per le app che utilizzano una videocamera,
CameraManager.AvailabilityCallback#onCameraAccessPrioritiesChanged()
fornisce un suggerimento che potrebbe essere il momento giusto per tentare di accedere alla videocamera.
Questo metodo è disponibile a partire da Android 10 (livello API 29).
Tieni presente che resizeableActivity=false
non garantisce l'accesso esclusivo alla videocamera, poiché altre app che la utilizzano possono essere aperte su altri display.

La tua app non deve necessariamente rilasciare la fotocamera quando perde la messa a fuoco. Ad esempio, potresti voler continuare l'anteprima della videocamera mentre l'utente interagisce con l'app ripresa in primo piano. È normale che la tua app continui a eseguire la videocamera quando non è l'app ripresa in primo piano, ma deve gestire correttamente il caso di disconnessione. Quando l'app ripresa in primo piano vuole utilizzare la fotocamera, può aprirla e la tua app perderà l'accesso. L'app può riaprire la fotocamera quando riacquisisce lo stato attivo.
Dopo che un'app riceve un callback CameraDevice.StateCallback#onDisconnected()
, le chiamate successive sul dispositivo videocamera genereranno un errore CameraAccessException
.
Metriche della finestra
Android 11 (livello API 30) ha introdotto i seguenti metodi WindowManager
per fornire i limiti delle app in esecuzione in modalità multi-finestra:
getCurrentWindowMetrics()
: restituisce un oggettoWindowMetrics
per lo stato di finestre corrente del sistema.getMaximumWindowMetrics()
: restituisceWindowMetrics
per il potenziale stato di finestre più grande del sistema.
I metodi della libreria Jetpack WindowManager computeCurrentWindowMetrics()
e computeMaximumWindowMetrics()
offrono funzionalità simili
rispettivamente, ma con compatibilità con le versioni precedenti fino al livello API 14.
Per ottenere metriche per display diversi da quello corrente, procedi nel seguente modo (come mostrato nello snippet di codice):
- Creare un contesto display
- Crea un contesto finestra per il display
- Ottieni il
WindowManager
del contesto della finestra - Ottieni il
WindowMetrics
dell'area di visualizzazione massima disponibile per l'app
val windowMetrics = context.createDisplayContext(display)
.createWindowContext(WindowManager.LayoutParams.TYPE_APPLICATION, null)
.getSystemService(WindowManager::class.java)
.maximumWindowMetrics
Metodi ritirati
I metodi Display
getSize()
e getMetrics()
sono stati ritirati
nel livello API 30 a favore dei nuovi metodi WindowManager
.
Android 12 (livello API 31) ritira i metodi Display
getRealSize()
e
getRealMetrics()
e aggiorna il loro comportamento in modo che corrisponda più da vicino al
comportamento di getMaximumWindowMetrics()
.
Configurazione della modalità multi-finestra
Se la tua app ha come target Android 7.0 (livello API 24) o versioni successive, puoi configurare come e se le attività della tua app supportano la modalità multi-finestra. Puoi impostare
gli attributi nel manifest per controllare sia le dimensioni che il layout. Le impostazioni degli attributi di un'attività principale si applicano a tutte le attività all'interno del relativo stack di attività. Ad esempio,
se l'attività principale ha android:resizeableActivity="true"
, tutte
le attività nello stack di attività sono ridimensionabili. Su alcuni dispositivi più grandi, come
i Chromebook, l'app potrebbe essere eseguita in una finestra ridimensionabile anche se specifichi
android:resizeableActivity="false"
. Se questo causa problemi alla tua app, puoi utilizzare i
filtri su Google Play per limitare la disponibilità della tua app su questi dispositivi.
Android 12 (livello API 31) utilizza la modalità multi-finestra per impostazione predefinita. Su schermi di grandi dimensioni
(classe di dimensioni della finestra media o espansa), tutte le app vengono eseguite in modalità multi-finestra
indipendentemente dalla configurazione dell'app. Sugli schermi piccoli, il sistema controlla le impostazioni
minWidth
, minHeight
e resizeableActivity
di un'attività
per determinare se può essere eseguita in modalità multi-finestra.
resizeableActivity
Imposta questo attributo nell'elemento <activity>
o <application>
del file manifest per attivare o disattivare la modalità multi-finestra per il livello API 30 e precedenti:
<application
android:name=".MyActivity"
android:resizeableActivity=["true" | "false"] />;
Se questo attributo è impostato su true
, l'attività può essere avviata in modalità
split-screen e finestre del desktop. Se l'attributo è impostato su false
, l'attività
non supporta la modalità multi-finestra. Se il valore è false e l'utente
tenta di avviare l'attività in modalità multi-finestra, l'attività occupa
l'intero schermo.
Se la tua app ha come target il livello API 24 o versioni successive, ma non specifichi un valore per questo attributo, il valore dell'attributo è impostato su true per impostazione predefinita.
Se la tua app ha come target il livello API 31 o versioni successive, questo attributo funziona in modo diverso su schermi piccoli e grandi:
- Schermi di grandi dimensioni (classe di dimensioni della finestra media o espansa): tutte le app
supportano la modalità multi-finestra. L'attributo indica se un'attività può
essere ridimensionata. Se
resizeableActivity="false"
, l'app viene inserita in modalità di compatibilità quando necessario per rispettare le dimensioni di visualizzazione. - Schermi piccoli (classe di dimensioni della finestra compatta): se
resizeableActivity="true"
e la larghezza e l'altezza minime dell'attività rientrano nei requisiti del multi-window, l'attività supporta la modalità multi-window. SeresizeableActivity="false"
, l'attività non supporta la modalità multi-finestra indipendentemente dalla larghezza e dall'altezza minime dell'attività.
Se la tua app ha come target il livello API 36 o versioni successive, questo attributo viene ignorato sui display con larghezza minima >= 600 dp. Tuttavia, l'app rispetta pienamente la scelta delle proporzioni dell'utente (vedi Override per app dell'utente).
Se stai creando un gioco, consulta Orientamento, proporzioni e ridimensionamento delle app per scoprire come escludere il tuo gioco dalle modifiche di Android 16 (livello API 36).
supportsPictureInPicture
Imposta questo attributo nel nodo <activity>
del manifest per indicare se l'attività supporta la modalità Picture in picture.
<activity
android:name=".MyActivity"
android:supportsPictureInPicture=["true" | "false"] />
configChanges
Per gestire autonomamente le modifiche alla configurazione multi-finestra, ad esempio quando un utente
ridimensiona una finestra, aggiungi l'attributo android:configChanges
al nodo
<activity>
del manifest dell'app con almeno i seguenti valori:
<activity
android:name=".MyActivity"
android:configChanges="screenSize | smallestScreenSize
| screenLayout | orientation" />
Dopo aver aggiunto android:configChanges
, l'attività e i fragment ricevono un
callback a onConfigurationChanged()
anziché essere distrutti e
ricreati. Puoi quindi aggiornare manualmente le visualizzazioni, ricaricare le risorse ed eseguire altre operazioni in base alle tue esigenze.
<layout>
Su Android 7.0 (livello API 24) e versioni successive, l'elemento manifest <layout>
supporta diversi attributi che influiscono sul comportamento di un'attività in modalità
multifinestra:
android:defaultHeight
,android:defaultWidth
: altezza e larghezza predefinite dell'attività quando viene avviata in modalità app in finestre.android:gravity
: posizionamento iniziale dell'attività all'avvio in modalità finestra del desktop. Consulta la classeGravity
per i valori adatti.android:minHeight
,android:minWidth
: altezza minima e larghezza minima per l'attività nelle modalità schermo diviso e app in finestre. Se l'utente sposta il divisore in modalità Split Screen per ridurre le dimensioni di un'attività al di sotto del minimo specificato, il sistema ritaglia l'attività in base alle dimensioni richieste dall'utente.
Il seguente codice mostra come specificare le dimensioni e la posizione predefinite di un'attività e le dimensioni minime quando l'attività viene visualizzata in modalità finestra desktop:
<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end|..."
android:minHeight="450dp"
android:minWidth="300dp" />
</activity>
Modalità multi-finestra in fase di runtime
A partire da Android 7.0, il sistema offre funzionalità per supportare le app che possono essere eseguite in modalità multi-finestra.
Funzionalità disattivate in modalità multi-finestra
In modalità multi-finestra, Android potrebbe disattivare o ignorare le funzionalità che non si applicano a un'attività che condivide lo schermo del dispositivo con altre attività o app.
Inoltre, alcune opzioni di personalizzazione dell'interfaccia utente di sistema sono disattivate. Ad esempio, le app non possono nascondere la barra di stato se sono in esecuzione in modalità multi-finestra (vedi Controllare la visibilità dell'interfaccia utente di sistema).
Il sistema ignora le modifiche all'attributo android:screenOrientation
.
Query e callback della modalità multi-finestra
La classe Activity
offre i seguenti metodi per supportare la modalità
multifinestra:
isInMultiWindowMode()
: indica se l'attività è in modalità multi-finestra.isInPictureInPictureMode()
: indica se l'attività è in modalità Picture in picture.onMultiWindowModeChanged()
: il sistema chiama questo metodo ogni volta che l'attività entra o esce dalla modalità multi-finestra. Il sistema passa al metodo un valore true se l'attività sta entrando in modalità multi-finestra o false se l'attività sta uscendo dalla modalità multi-finestra.onPictureInPictureModeChanged()
: il sistema chiama questo metodo ogni volta che l'attività entra o esce dalla modalità Picture in picture. Il sistema passa al metodo un valore true se l'attività sta entrando in modalità PIP o false se l'attività sta uscendo dalla modalità PIP.
La classe Fragment
espone versioni di molti di questi metodi, ad esempio
Fragment.onMultiWindowModeChanged()
.
Modalità Picture in picture
Per mettere un'attività in modalità Picture in picture, chiama
enterPictureInPictureMode()
. Questo metodo non ha effetto se il dispositivo
non supporta la modalità Picture in picture. Per saperne di più, consulta Aggiungere video utilizzando
la modalità Picture in picture (PIP).
Nuove attività in modalità multi-finestra
Quando avvii una nuova attività, puoi indicare che deve essere
visualizzata accanto a quella corrente, se possibile. Utilizza il flag di intent
FLAG_ACTIVITY_LAUNCH_ADJACENT
, che indica al sistema di provare a creare la
nuova attività in una finestra adiacente, in modo che le due attività condividano lo schermo. Il sistema fa del suo meglio per farlo, ma non è garantito che accada.
Se un dispositivo è in modalità finestra desktop e stai avviando una nuova attività,
puoi specificare le dimensioni e la posizione sullo schermo della nuova attività chiamando
ActivityOptions.setLaunchBounds()
. Il metodo non ha effetto se il dispositivo
non è in modalità multi-finestra.
A livello API 30 e precedenti, se avvii un'attività all'interno di uno stack di attività, l'attività sostituisce l'attività sullo schermo, ereditando tutte le relative proprietà multi-finestra. Se vuoi avviare la nuova attività come finestra separata in modalità multi-finestra, devi avviarla in un nuovo stack di attività.
Android 12 (livello API 31) consente alle app di dividere la finestra dell'attività di un'applicazione tra più attività. Puoi determinare la modalità di visualizzazione delle attività della tua app (a schermo intero, affiancate o impilate) creando un file di configurazione XML o effettuando chiamate API Jetpack WindowManager.
Trascinare
Gli utenti possono trascinare i dati da un'attività all'altra mentre le due attività condividono lo schermo. Prima di Android 7.0, gli utenti potevano trascinare
e rilasciare i dati solo all'interno di una singola attività. Per aggiungere rapidamente il supporto per l'accettazione
dei contenuti rilasciati, consulta l'API DropHelper
. Per indicazioni complete sul trascinamento, vedi Attivare il trascinamento.
Multi-istanza
Ogni attività principale ha il proprio compito, che viene visualizzato in una finestra separata. Per
avviare una nuova istanza dell'app in una finestra separata, avvia nuove attività
con il flag FLAG_ACTIVITY_NEW_TASK
. Puoi combinare questa impostazione con gli
attributi multi-finestra per richiedere una posizione specifica per la nuova
finestra. Ad esempio, un'app di shopping può visualizzare più finestre adiacenti per
confrontare i prodotti.
Android 12 (livello API 31) e versioni successive consentono di avviare due istanze di un'attività affiancate nella stessa finestra dell'attività nell'incorporamento di attività.
Se vuoi consentire agli utenti di avviare un'altra istanza della tua applicazione
dal launcher delle applicazioni o dalla barra delle app, imposta android:resizeableActivity="true"
nel manifest dell'attività di avvio applicazioni e non utilizzare una modalità di avvio che
impedisce più istanze. Ad esempio, un'attività singleInstancePerTask
può
essere istanziata più volte in attività diverse quando
FLAG_ACTIVITY_MULTIPLE_TASK
o FLAG_ACTIVITY_NEW_DOCUMENT
è impostato.
Su Android 15 (livello API 35) e versioni successive,
PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI
ti consente di dichiarare il supporto
per più istanze. La proprietà è un indicatore esplicito per l'interfaccia utente di sistema per
mostrare i controlli all'utente per creare più istanze dell'app. La
proprietà è indipendente dalla modalità di avvio, ma deve essere utilizzata solo quando la modalità di avvio di un'attività o di un'applicazione è compatibile con la proprietà, ad esempio quando la modalità di avvio non è singleInstance
.
Quando più istanze di un'app vengono eseguite in finestre separate su un dispositivo pieghevole, una o più istanze potrebbero essere inviate in background se la postura del dispositivo cambia. Ad esempio, supponi che un dispositivo sia aperto e che abbia due istanze dell'app in esecuzione in finestre separate su ciascun lato della piega. Se il dispositivo è chiuso, una delle istanze potrebbe essere terminata anziché tentare di adattare le finestre di entrambe le istanze su uno schermo più piccolo.
Verifica della modalità multi-finestra
Indipendentemente dal fatto che la tua app abbia come target il livello API 24 o versioni successive, devi verificare il suo comportamento in modalità multi-finestra nel caso in cui un utente tenti di avviarla in modalità multi-finestra su un dispositivo con Android 7.0 o versioni successive.
Prova dispositivi
I dispositivi con Android 7.0 (livello API 24) o versioni successive supportano la modalità multi-finestra.
Livello API 23 o inferiore
Quando gli utenti tentano di utilizzare l'app in modalità multi-finestra, il sistema ridimensiona forzatamente l'app, a meno che non dichiari un orientamento fisso.
Se la tua app non dichiara un orientamento fisso, devi avviarla su un dispositivo con Android 7.0 o versioni successive e provare a metterla in modalità schermo diviso. Verifica che l'esperienza utente sia accettabile quando le dimensioni dell'app vengono modificate forzatamente.
Se l'app dichiara un orientamento fisso, devi tentare di metterla in modalità multifinestra. Verifica che, quando lo fai, l'app rimanga in modalità a schermo intero.
Livelli API da 24 a 30
Se la tua app ha come target i livelli API da 24 a 30 e non disattiva il supporto multi-finestra, verifica il seguente comportamento nelle modalità finestra a schermo diviso e desktop:
Avvia l'app a schermo intero, quindi passa alla modalità multi-finestra tenendo premuto il pulsante Recenti. Verifica che l'app cambi correttamente.
Avvia l'app direttamente in modalità multi-finestra e verifica che venga avviata correttamente. Puoi avviare un'app in modalità multi-finestra premendo il pulsante Recenti, quindi tenendo premuta la barra del titolo dell'app e trascinandola in una delle aree evidenziate sullo schermo.
Ridimensiona l'app in modalità schermo diviso trascinando il divisore dello schermo. Verifica che l'app venga ridimensionata senza arresti anomali e che gli elementi dell'interfaccia utente necessari siano visibili.
Se hai specificato dimensioni minime per la tua app, prova a ridimensionarla in modo che le dimensioni della finestra siano inferiori a quelle dimensioni. Verifica che non sia possibile ridimensionare l'app in modo che sia più piccola delle dimensioni minime specificate.
Durante tutti i test, verifica che il rendimento della tua app sia accettabile. Ad esempio, verifica che non ci sia un ritardo troppo lungo nell'aggiornamento dell'interfaccia utente dopo il ridimensionamento dell'app.
Livello API 31 o versioni successive
Se la tua app ha come target il livello API 31 o versioni successive e la larghezza minima e l'altezza minima dell'attività principale sono inferiori o uguali alle rispettive dimensioni dell'area di visualizzazione disponibile, verifica tutti i comportamenti elencati per i livelli API da 24 a 30.
Elenco di controllo del test
Per verificare le prestazioni dell'app in modalità multi-finestra, prova le seguenti operazioni. Devi provare queste operazioni sia in modalità schermo diviso sia in modalità finestra del desktop, salvo diversa indicazione.
Attivare e disattivare la modalità multi-finestra.
Passa dalla tua app a un'altra e verifica che l'app si comporti correttamente mentre è visibile ma non attiva. Ad esempio, se la tua app riproduce video, verifica che la riproduzione continui mentre l'utente interagisce con un'altra app.
In modalità schermo diviso, prova a spostare il divisore dello schermo per ingrandire e rimpicciolire l'app. Prova queste operazioni sia nella configurazione affiancata che in quella una sopra l'altra. Verifica che l'app non abbia arresti anomali, che le funzionalità essenziali siano visibili e che l'operazione di ridimensionamento non richieda troppo tempo.
Esegui diverse operazioni di ridimensionamento in rapida successione. Verifica che l'app non si arresti in modo anomalo o non abbia perdite di memoria. Memory Profiler di Android Studio fornisce informazioni sull'utilizzo della memoria della tua app (vedi Esaminare l'utilizzo della memoria dell'app con Memory Profiler).
Usa la tua app normalmente in diverse configurazioni di finestre e verifica che si comporti correttamente. Verifica che il testo sia leggibile e che gli elementi dell'interfaccia utente non siano troppo piccoli per interagire.
Supporto della funzione Multi-finestra disattivato
Nei livelli API da 24 a 30, se hai disattivato il supporto multi-finestra impostando
android:resizeableActivity="false"
, devi avviare l'app su un dispositivo
con Android 7.0-11 e provare a metterla in modalità schermo diviso e
finestra del desktop. Verifica che, quando lo fai, l'app rimanga in
modalità a schermo intero.
Risorse aggiuntive
Per ulteriori informazioni sul supporto multi-finestra in Android, consulta:
- Esempio MultiWindowPlayground per Android