Supporto della modalità multi-finestra

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).

Figura 1. Visualizza due app affiancate in modalità schermo diviso.

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 e minHeight di un'attività per determinare se l'attività può essere eseguita in modalità multi-finestra. Se resizeableActivity="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:

  1. Apri la schermata Recenti.
  2. Scorrere un'app nella visualizzazione
  3. Premi l'icona dell'app nella barra del titolo dell'app.
  4. Seleziona l'opzione del menu Schermo diviso
  5. 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.

Figura 2. Fotocamera in modalità multi-finestra.

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:

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. Se resizeableActivity="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 classe Gravity 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: