<attività>

syntax:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:canDisplayOnRemoteDevices=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["colorMode", "density",
                                 "fontScale", "fontWeightAdjustment",
                                 "grammaticalGender", "keyboard",
                                 "keyboardHidden", "layoutDirection", "locale",
                                 "mcc", "mnc", "navigation", "orientation",
                                 "screenLayout", "screenSize",
                                 "smallestScreenSize", "touchscreen", "uiMode"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enabledOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" |
                                                         "readOrWrite" | "write"] 
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
contenuti in:
<application>
può contenere:
<intent-filter>
<meta-data>
<layout>
description:
Dichiara un'attività (una sottoclasse Activity) che implementa parte dell'interfaccia utente visiva dell'applicazione. Tutte le attività devono essere rappresentate da elementi <activity> nel file manifest. Gli annunci non dichiarati non vengono visti dal sistema e non vengono mai pubblicati.
attributes:
android:allowEmbedded

Indica che l'attività può essere avviata come attività secondaria incorporata di un'altra attività, in particolare nel caso in cui l'attività secondaria si trovi in un contenitore, ad esempio un Display di proprietà di un'altra attività. Ad esempio, le attività utilizzate per le notifiche personalizzate di Wear lo dichiarano in modo che Wear possa visualizzare l'attività nel proprio stream di contesto, che risiede in un altro processo.

Il valore predefinito di questo attributo è false.

android:allowTaskReparenting
Indica se l'attività può passare dall'attività che l'ha avviata all'attività con cui ha affinità quando questa viene messa in primo piano. È "true" se può spostarsi e "false" se rimane con l'attività in cui è stato avviato.

Se questo attributo non è impostato, all'attività viene applicato il valore impostato dall'attributo allowTaskReparenting corrispondente dell'elemento <application>. Il valore predefinito è "false".

Normalmente, quando un'attività viene avviata, viene associata all'attività che l'ha avviata e rimane lì per tutta la sua durata. Puoi utilizzare questo attributo per forzare la ridefinizione della relativa attività principale in base all'attività con cui ha affinità quando l'attività corrente non viene più visualizzata. In genere, viene utilizzato per spostare le attività di un'applicazione nella task principale associata a quell'applicazione.

Ad esempio, se un messaggio email contiene un link a una pagina web, facendo clic sul link viene visualizzata un'attività che può mostrare la pagina. Questa attività è definita dall'applicazione del browser, ma viene avviata nell'ambito dell'attività email. Se viene impostato come attività principale per l'attività del browser, viene visualizzato quando il browser viene visualizzato in primo piano e non è presente quando viene visualizzata nuovamente l'attività email.

L'affinità di un'attività è definita dall'attributo taskAffinity. L'affinità di un'attività viene determinata leggendo l'affinità della relativa attività principale. Pertanto, per definizione, un'attività principale si trova sempre in un'attività con la stessa affinità. Poiché le attività con modalità di lancio "singleTask" o "singleInstance" possono trovarsi solo alla radice di un'attività, la ridefinizione del ruolo è limitata alle modalità "standard" e "singleTop". (vedi anche l'attributo launchMode).

android:alwaysRetainTaskState
Se lo stato dell'attività è sempre gestito dal sistema. "true" se è così e "false" se il sistema può reimpostare l'attività allo stato iniziale in determinate situazioni. Il valore predefinito è "false". Questo attributo è significativo solo per l'attività principale di un'attività. Viene ignorato per tutte le altre attività.

Normalmente, il sistema cancella un'attività rimuovendo tutte le attività dalla pila sopra l'attività principale in determinate situazioni in cui l'utente seleziona di nuovo l'attività dalla schermata Home. In genere, questo viene fatto se l'utente non ha visitato la scheda per un determinato periodo di tempo, ad esempio 30 minuti.

Tuttavia, quando questo attributo è "true", gli utenti tornano sempre all'attività nel suo ultimo stato, indipendentemente da come ci arrivano. Questo è utile in un'applicazione come un browser web in cui è presente molto stato, ad esempio più schede aperte, che gli utenti non vogliono perdere.

android:autoRemoveFromRecents
Indica se le attività avviate dall'attività con questo attributo rimangono nella schermata Recenti fino al completamento dell'ultima attività nell'attività. Se true, l'attività viene rimossa automaticamente dalla schermata Recenti. Questo sostituisce l'uso di FLAG_ACTIVITY_RETAIN_IN_RECENTS da parte dell'utente che chiama. Deve essere un valore booleano, "true" o "false".
android:banner
Una risorsa drawable che fornisce un banner grafico esteso per l'elemento associato. Da utilizzare con il tag <activity> per fornire un banner predefinito per un'attività specifica o con il tag <application> per fornire un banner per tutte le attività dell'applicazione.

Il sistema utilizza il banner per rappresentare un'app nella schermata Home di Android TV. Poiché il banner viene visualizzato solo nella schermata Home, viene specificato solo dalle applicazioni con un'attività che gestisce l'intent CATEGORY_LEANBACK_LAUNCHER.

Questo attributo viene impostato come riferimento a una risorsa drawable contenente l'immagine, ad esempio "@drawable/banner". Non è presente alcun banner predefinito.

Per ulteriori informazioni, consulta la sezione Fornire un banner della schermata Home nella Guida introduttiva all'utilizzo delle app TV.

android:canDisplayOnRemoteDevices

Indica se l'attività può essere visualizzata su un dispositivo remoto su cui potrebbe o meno essere in esecuzione Android. Deve essere un valore booleano, ovvero "true" o "false".

Il valore predefinito di questo attributo è "true".

android:clearTaskOnLaunch
Indica se tutte le attività vengono rimosse dall'attività, ad eccezione dell'attività principale, quando viene riavviata dalla schermata Home. "true" se l'attività viene sempre ridotta all'attività principale e "false" in caso contrario. Il valore predefinito è "false". Questo attributo è significativo solo per le attività che avviano una nuova attività, ovvero l'attività principale. Viene ignorato per tutte le altre attività nell'attività.

Quando il valore è "true", ogni volta che gli utenti avviano l'attività, vengono indirizzati all'attività principale, indipendentemente dall'ultima azione eseguita nell'attività e dal fatto che abbiano utilizzato il pulsante Indietro o Home per uscire. Quando il valore è "false", l'attività può essere cancellata in alcune situazioni, ma non sempre. Per ulteriori informazioni, consulta l'attributo alwaysRetainTaskState.

Supponiamo che l'utente avvii l'attività P dalla schermata Home e da lì passi all'attività Q. L'utente tocca Casa e poi torna all'attività P. Normalmente, l'utente vede l'attività Q, poiché è l'ultima attività che ha eseguito nell'attività P. Tuttavia, se P imposta questo flag su "true", tutte le attività al di sopra, in questo caso Q, vengono rimosse quando l'utente avvia l'attività P dalla schermata Home. Pertanto, l'utente vede solo P quando torna all'attività.

Se questo attributo e allowTaskReparenting sono entrambi "true", tutte le attività che possono essere associate a un'altra attività principale vengono spostate nell'attività con cui condividono un'affinità. Le attività rimanenti vengono eliminate.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:colorMode

Specifica la modalità di colore dell'attività. Se specificato, può essere hdr o wideColorGamut.

Se hdr, richiede che l'attività venga visualizzata in un'ampia gamma dinamica, se il dispositivo lo supporta.

Se wideColorGamut, richiede che l'attività venga visualizzata in modalità Ampia gamma di colori su dispositivi compatibili. In modalità di gamma di colori estesa, una finestra può eseguire il rendering al di fuori della gamma SRGB per visualizzare colori più vivaci. Se il dispositivo non supporta il rendering con una gamma di colori ampia, questo attributo non ha alcun effetto. Per ulteriori informazioni sul rendering in modalità a colori estesi, consulta Migliorare la grafica con contenuti a colori estesi.

android:configChanges
Elenca le modifiche alla configurazione gestite dall'attività stessa. Quando si verifica una variazione di configurazione in fase di esecuzione, l'attività si arresta e si riavvia per impostazione predefinita, ma la dichiarazione di una configurazione con questo attributo impedisce il riavvio dell'attività. L'attività rimane in esecuzione e viene chiamato il relativo metodo onConfigurationChanged().

Nota:utilizza questo attributo solo in casi speciali per migliorare le prestazioni e la reattività dell'applicazione. Per ulteriori informazioni, vedi Gestire le modifiche alla configurazione.

Le seguenti stringhe sono valori validi per questo attributo. I valori multipli sono separati da |, ad esempio "locale|navigation|orientation".

Valore Descrizione
"colorMode"

Le funzionalità della modalità a colori dello schermo (gamma di colori o gamma dinamica) sono cambiate.

Nota:la modalità di colore richiesta dall'attività con l'attributo colorMode o in fase di esecuzione è diversa dalla funzionalità per le diverse modalità di colore. Un'attività che modifica la modalità colore in uso non causa una modifica della configurazione, perché le funzionalità di colore del display non sono cambiate.

"density"

Una modifica alla densità del display, ad esempio quando l'utente specifica una scala di visualizzazione diversa o un display diverso è ora attivo.

Aggiunta nel livello API 24.

"fontScale" Una modifica al fattore di scalatura dei caratteri, ad esempio quando l'utente seleziona una nuova dimensione del carattere globale.
"fontWeightAdjustment" L'entità dell'aumento dell'intensità del carattere è cambiata.
"grammaticalGender" Il genere grammaticale della lingua è cambiato. Consulta GrammaticalInflectionManager.

Aggiunta nel livello API 34.

"keyboard" Una modifica al tipo di tastiera, ad esempio quando l'utente collega una tastiera esterna.
"keyboardHidden" Una modifica all'accessibilità della tastiera, ad esempio quando l'utente rivela la tastiera hardware.
"layoutDirection"

Una modifica alla direzione del layout, ad esempio da sinistra a destra (LTR) a destra a sinistra (RTL).

Aggiunta nel livello API 17.

"locale" Una modifica alle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua in cui viene visualizzato il testo.
"mcc" Una modifica al codice paese mobile (MCC) IMSI quando viene rilevata una SIM che aggiorna il codice MCC.
"mnc" Una modifica al codice della rete mobile IMSI (MNC) quando viene rilevata una SIM che aggiorna la MNC.
"navigation" L'agente di assistenza tecnica passa al tipo di navigazione (trackball o D-pad). Di solito, questo non accade.
"orientation"

Una modifica all'orientamento dello schermo, ad esempio quando l'utente ruota il dispositivo.

Nota: se la tua applicazione ha come target Android 3.2 (livello API 13) o versioni successive, dichiara anche le configurazioni "screenLayout" e "screenSize", perché il layout e le dimensioni dello schermo possono cambiare quando un dispositivo passa dall'orientamento verticale a quello orizzontale e viceversa.

"screenLayout" Una modifica al layout dello schermo, ad esempio quando diventa attivo un altro display.
"screenSize"

Una modifica alle dimensioni dello schermo attualmente disponibili.

Questo rappresenta una modifica delle dimensioni attualmente disponibili, rispetto alle proporzioni attuali, pertanto cambia quando l'utente passa dal formato orizzontale a quello verticale e viceversa.

Aggiunta nel livello API 13.

"smallestScreenSize"

Una modifica alle dimensioni fisiche dello schermo.

Questo rappresenta una variazione delle dimensioni indipendentemente dall'orientamento, pertanto cambia solo quando cambiano le dimensioni fisiche effettive dello schermo, ad esempio quando passi a un display esterno. Una modifica a questa configurazione corrisponde a una modifica nella configurazione di smallestWidth.

Aggiunta nel livello API 13.

"touchscreen" Una modifica al touchscreen. Di solito, questo non accade.
"uiMode" Una modifica alla modalità dell'interfaccia utente, ad esempio quando l'utente inserisce il dispositivo nella base da tavolo o nell'auto oppure quando cambia la modalità Notte. Per ulteriori informazioni sulle diverse modalità dell'interfaccia utente, consulta UiModeManager.

Aggiunta nel livello API 8.

Tutte queste modifiche alla configurazione possono influire sui valori delle risorse visualizzati dall'applicazione. Pertanto, quando viene chiamata la funzione onConfigurationChanged(), in genere è necessario recuperare di nuovo tutte le risorse, inclusi i layout delle visualizzazioni e gli elementi drawable, per gestire correttamente la modifica.

Nota:per gestire le modifiche di configurazione relative al multi-window, utilizza sia "screenLayout" sia "smallestScreenSize". La funzionalità Multi-window è supportata su Android 7.0 (livello API 24) o versioni successive.

android:directBootAware

Indica se l'attività è consapevole del boot diretto, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.

Nota: durante il boot diretto, un'attività nella tua applicazione può accedere solo ai dati memorizzati nello spazio di archiviazione protetto dal dispositivo.

Il valore predefinito è "false".

android:documentLaunchMode
Specifica in che modo una nuova istanza di un'attività viene aggiunta a un'attività ogni volta che viene avviata. Questo attributo consente all'utente di visualizzare più documenti della stessa applicazione nella schermata Recenti.

Questo attributo ha quattro valori, che producono i seguenti effetti quando l'utente apre un documento con l'applicazione:

Valore Descrizione
"intoExisting" Il sistema cerca un'attività il cui URI ComponentName e dati dell'intent di base corrisponde a quelli dell'intent di lancio. Se il sistema trova un'attività di questo tipo, la cancella e si riavvia, con l'attività principale che riceve una chiamata a onNewIntent(android.content.Intent). Se il sistema non trova un'attività di questo tipo, ne crea una nuova.
"always" L'attività crea una nuova attività per il documento, anche se il documento è già aperto. È lo stesso che impostare sia i flag FLAG_ACTIVITY_NEW_DOCUMENT che FLAG_ACTIVITY_MULTIPLE_TASK.
"none" L'attività non crea una nuova attività. Questo è il valore predefinito, che crea una nuova attività solo quando è impostato FLAG_ACTIVITY_NEW_TASK. La schermata Recenti tratta l'attività come per impostazione predefinita: mostra una singola attività per l'app, che riprende dall'attività invocata per ultima dall'utente.
"never" L'attività non viene avviata in un nuovo documento anche se l'intent contiene FLAG_ACTIVITY_NEW_DOCUMENT. Questa impostazione sostituisce il comportamento degli indicatori FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK, se uno di questi è impostato nell'attività, e la schermata Recenti mostra un'unica attività per l'app, che riprende da qualunque attività invocata per ultima dall'utente.

Nota: per valori diversi da "none" e "never", l'attività viene definita con launchMode="standard". Se questo attributo non è specificato, viene utilizzato documentLaunchMode="none".

android:enabled
Se l'attività può essere creata dal sistema. È "true" se può essere e "false" in caso contrario. Il valore predefinito è "true".

L'elemento <application> ha un proprio attributo enabled che si applica a tutti i componenti dell'applicazione, incluse le attività. Affinché il sistema possa creare un'istanza dell'attività, gli attributi <application> e <activity> devono essere entrambi "true", come accade per impostazione predefinita. Se uno dei due è "false", non può essere istanziato.

android:enableOnBackInvokedCallback
Questo flag ti consente di disattivare le animazioni di sistema predittive a livello di attività.

L'impostazione android:enableOnBackInvokedCallback=false disattiva le animazioni di sfondo predittive a livello di attività o di app, a seconda di dove imposti il tag, e indica al sistema di ignorare le chiamate all'API della piattaforma OnBackInvokedCallback.

android:excludeFromRecents

Indica se l'attività avviata da questa attività è esclusa dalla schermata Recenti. In altre parole, quando questa attività è l'attività principale di una nuova attività, questo attributo determina se l'attività viene visualizzata nell'elenco delle app recenti. È "true" se l'attività è esclusa dall'elenco; "false" se è inclusa. Il valore predefinito è "false".

android:exported

Indica se l'attività può essere avviata da componenti di altre applicazioni:

  • Se "true", l'attività è accessibile a qualsiasi app ed è avviabile tramite il nome esatto della classe.
  • Se "false", l'attività può essere avviata solo da componenti della stessa applicazione, da applicazioni con lo stesso ID utente o da componenti di sistema con privilegi. Questo è il valore predefinito quando non sono presenti filtri di intent.

Se un'attività nella tua app include filtri per intent, imposta questo elemento su "true" per consentire ad altre app di avviarlo. Ad esempio, se l'attività è l'attività principale dell'app e include category android.intent.category.LAUNCHER.

Se questo elemento è impostato su "false" e un'app tenta di avviare l'attività, il sistema genera un messaggio di errore ActivityNotFoundException.

Questo attributo non è l'unico modo per limitare l'esposizione di un'attività ad altre applicazioni. Le autorizzazioni vengono utilizzate anche per limitare le entità esterne che possono invocare l'attività. Consulta l'attributo permission.

android:finishOnTaskLaunch
Indica se un'istanza esistente dell'attività viene chiusa, tranne l'attività principale, quando l'utente riavvia l'attività scegliendola sulla schermata Home. È "true" se è spento e "false" se non lo è. Il valore predefinito è "false".

Se questo attributo e allowTaskReparenting sono entrambi "true", questo attributo ha la precedenza sull'altro. L'affinità dell'attività viene ignorata. L'attività non viene riassegnato come attività principale, ma viene eliminata.

Questo attributo viene ignorato se FLAG_ACTIVITY_RESET_TASK_IF_NEEDED non è impostato.

android:hardwareAccelerated
Indica se il rendering con accelerazione hardware è abilitato per questa attività. "true" se è attivata e "false" se non lo è. Il valore predefinito è "false".

Su Android 3.0 e versioni successive, un renderer OpenGL con accelerazione hardware è disponibile per le applicazioni per migliorare le prestazioni di molte operazioni di grafica 2D comuni. Quando il renderer con accelerazione hardware è attivato, la maggior parte delle operazioni in Canvas, Paint, Xfermode, ColorFilter, Shader e Camera viene accelerata.

Ciò si traduce in animazioni e scorrimenti più fluidi e in una maggiore reattività complessiva, anche per le applicazioni che non utilizzano esplicitamente le librerie OpenGL del framework. A causa dell'aumento delle risorse necessarie per attivare l'accelerazione hardware, la tua app consuma più RAM.

Non tutte le operazioni OpenGL 2D sono accelerate. Se attivi il renderer con accelerazione hardware, verifica se la tua applicazione può utilizzarlo senza errori.

android:icon

Un'icona che rappresenta l'attività. L'icona viene mostrata agli utenti quando sullo schermo è richiesta una rappresentazione dell'attività. Ad esempio, le icone per le attività che avviano le attività vengono visualizzate nella finestra del programma di avvio. L'icona è spesso accompagnata da un'etichetta. Per informazioni sull'etichetta, consulta l'attributo android:label.

Questo attributo viene impostato come riferimento a una risorsa drawable contenente la definizione dell'immagine. Se non è impostato, viene utilizzata l'icona specificata per l'applicazione nel suo complesso. Per ulteriori informazioni, consulta l'attributo icon dell'elemento <application>.

L'icona dell'attività, impostata qui o dall'elemento <application>, è anche l'icona predefinita per tutti i filtri di intent dell'attività. Per ulteriori informazioni, consulta l'attributo icon dell'elemento <intent-filter>.

android:immersive
Imposta l'impostazione della modalità immersiva per l'attività corrente. Se è "true", il membro ActivityInfo.flags ha sempre il bit FLAG_IMMERSIVE impostato, anche se la modalità immersiva cambia in fase di esecuzione utilizzando il metodo setImmersive().
android:label

Un'etichetta leggibile dall'utente per l'attività. L'etichetta viene visualizzata sullo schermo quando l'attività viene rappresentata all'utente. Spesso viene visualizzata insieme all'icona Attività. Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Consulta l'attributo label dell'elemento <application>.

L'etichetta dell'attività, impostata qui o dall'elemento<application>, è anche l'etichetta predefinita per tutti i filtri di intent dell'attività. Per ulteriori informazioni, consulta l'attributo label dell'elemento <intent-filter>.

L'etichetta viene impostata come riferimento a una risorsa stringa in modo che possa essere localizzata come le altre stringhe nell'interfaccia utente. Tuttavia, per praticità durante lo sviluppo dell'applicazione, puoi impostarlo anche come stringa non elaborata.

android:launchMode

Un'istruzione su come viene avviata l'attività. Esistono cinque modalità, che funzionano in combinazione con i flag attività (costanti FLAG_ACTIVITY_*) negli oggetti Intent per determinare cosa succede quando viene chiamata l'attività per gestire un'intenzione:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

La modalità predefinita è "standard".

Come mostrato nella tabella seguente, le modalità si suddividono in due gruppi principali, con le attività "standard" e "singleTop" da un lato e le attività "singleTask", "singleInstance" e "singleInstancePerTask" dall'altro. Un'attività con la modalità di avvio "standard" o "singleTop" può essere creata più volte.

Le istanze possono appartenere a qualsiasi attività e possono trovarsi in qualsiasi punto dell'attività. In genere, vengono avviati nell'attività che ha chiamato startActivity(), a meno che l'oggetto Intent non contenga un'istruzione FLAG_ACTIVITY_NEW_TASK, nel qual caso viene scelta un'attività diversa. Per ulteriori informazioni, consulta l'attributo taskAffinity.

Al contrario, le attività "singleTask", "singleInstance" e "singleInstancePerTask" hanno comportamenti diversi. "singleInstancePerTask" si trova sempre alla radice dell'attività. Inoltre, il dispositivo può contenere una sola istanza dell'attività "singleInstance" alla volta, mentre l'attività "singleInstance" può essere creata più volte in attività diverse quando è impostato FLAG_ACTIVITY_MULTIPLE_TASK o FLAG_ACTIVITY_NEW_DOCUMENT."singleInstancePerTask

Un'attività con la modalità di lancio "singleTask" combina i comportamenti di "singleInstance" e "singleInstancePerTask": l'attività può essere creata più volte e può trovarsi in qualsiasi punto di un'attività dello stesso taskAffinity. Tuttavia, il dispositivo può contenere una sola attività per individuare l'attività "singleTask" alla radice dell'attività.

Le modalità "standard" e "singleTop" differiscono tra loro in un aspetto: ogni volta che c'è un nuovo intento per un'attività "standard", viene creata una nuova istanza della classe per rispondere a quell'intento. Ogni istanza gestisce un singolo intento. Analogamente, è possibile creare anche una nuova istanza di un'attività "singleTop" per gestire un nuovo intent.

Tuttavia, se l'attività target ha già un'istanza esistente nella parte superiore della pila, questa istanza riceve il nuovo intento in una chiamata onNewIntent(). Non viene creata una nuova istanza. In caso contrario, se un'istanza esistente dell'attività "singleTop" è nell'attività di destinazione, ma non nella parte superiore della pila, o se si trova nella parte superiore di una pila, ma non nell'attività di destinazione, viene creata una nuova istanza e inserita nella pila.

Analogamente, se l'utente naviga verso l'alto fino a un'attività nello stack corrente, il comportamento è determinato dalla modalità di avvio dell'attività principale. Se l'attività principale ha la modalità di avvio singleTop (o l'intent up contiene FLAG_ACTIVITY_CLEAR_TOP), l'attività principale viene posizionata in cima alla pila e il relativo stato viene mantenuto.

L'intent di navigazione viene ricevuto dal metodo onNewIntent() dell'attività principale. Se l'attività principale ha la modalità di avvio standard e l'intent up non contiene FLAG_ACTIVITY_CLEAR_TOP, l'attività corrente e la sua attività principale vengono rimosse dallo stack e viene creata una nuova istanza dell'attività principale per ricevere l'intent di navigazione.

La modalità "singleInstance" è diversa da "singleTask" e "singleInstancePerTask" anche in un solo aspetto: un'attività con la modalità di lancio "singleTask" o "singleInstancePerTask" consente ad altre attività, necessariamente "standard" e "singleTop", di far parte del relativo compito.

Un'attività "singleInstance", invece, non consente ad altre attività di far parte del suo compito. Deve essere l'unica attività nell'attività. Se avvia un'altra attività, questa viene assegnata a un'altra attività, come se FLAG_ACTIVITY_NEW_TASK fosse nell'intent.

Casi d'uso Modalità di lancio Più istanze? Commenti
Lanci normali per la maggior parte delle attività "standard" Predefinita. Il sistema crea sempre una nuova istanza dell'attività nell'attività di destinazione e inoltra l'intent.
"singleTop" Condizionalmente Se nella parte superiore dell'attività target esiste già un'istanza dell'attività, il sistema inoltra l'intent a quell'istanza tramite una chiamata al relativo metodo onNewIntent(), anziché creare una nuova istanza dell'attività.
Lanci specializzati
(non consigliati per uso generale)
"singleTask" Condizionalmente Il sistema crea l'attività nella radice di una nuova attività o la individua in un'attività esistente con la stessa affinità. Se esiste già un'istanza dell'attività ed è alla radice dell'attività, il sistema indirizza l'intent all'istanza esistente tramite una chiamata al relativo metodo onNewIntent(), anziché crearne uno nuovo.
"singleInstance" No Come "singleTask", tranne per il fatto che il sistema non avvia altre attività nell'attività che contiene l'istanza. L'attività è sempre il singolo e unico membro della relativa attività.
"singleInstancePerTask" Condizionalmente L'attività può essere eseguita solo come attività principale dell'attività, la prima attività che ha creato l'attività, pertanto esiste una sola istanza di questa attività in un'attività. Tuttavia, l'attività può essere creata più volte in attività diverse.

Come mostrato nella tabella precedente, "standard" è la modalità predefinita ed è appropriata per la maggior parte dei tipi di attività. "singleTop" è anche una modalità di lancio comune e utile per molti tipi di attività. Le altre modalità, "singleTask" , "singleInstance" e "singleInstancePerTask", sono non appropriate per la maggior parte delle applicazioni. Il risultato è un modello di interazione che probabilmente non è familiare agli utenti ed è molto diverso dalla maggior parte delle altre applicazioni.

Indipendentemente dalla modalità di lancio scelta, assicurati di testare l'usabilità dell'attività durante il lancio e quando torni da altre attività e attività utilizzando il pulsante Indietro.

Per ulteriori informazioni sulle modalità di lancio e sulla loro interazione con i flag Intent, consulta Attività e pila di ritorno.

android:lockTaskMode
Determina in che modo il sistema presenta questa attività quando il dispositivo è in modalità di blocco delle attività.

Android può eseguire attività in una modalità immersiva simile a quella dei kiosk, chiamata modalità di blocco attività. Quando il sistema viene eseguito in modalità di blocco delle attività, in genere gli utenti del dispositivo non possono vedere le notifiche, accedere alle app non incluse nella lista consentita o tornare alla schermata Home, a meno che l'app Home non sia inclusa nella lista consentita.

Solo le app inserite nella lista consentita da un controller dei criteri dei dispositivi (DPC) possono essere eseguite quando il sistema è in modalità di blocco delle attività. Tuttavia, le app privilegiate e di sistema possono essere eseguite in modalità di attività di blocco anche se non sono incluse nella lista consentita.

Il valore può essere uno dei seguenti valori di stringa R.attr.lockTaskMode:

Valore Descrizione
"normal" Valore predefinito. Questo è il valore predefinito. Le attività non vengono avviate in modalità di blocco attività, ma possono essere inserite in questa modalità chiamando startLockTask().
"never"

Le attività non vengono avviate in modalità lockTask e l'utente del dispositivo non può fissarle dalla schermata Recenti.

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app non privilegiate con questo valore vengono trattate come normal.

"if_whitelisted" Se il DPC autorizza questo pacchetto utilizzando DevicePolicyManager.setLockTaskPackages(), poi questa modalità è identica a always, tranne per il fatto che l'attività deve chiamare stopLockTask() prima di essere in grado di terminare se è l'ultima attività bloccata. Se il DPC non autorizza questo pacchetto, questa modalità è identica a normal.
"always"

Le attività con radice in questa attività vengono sempre avviate in modalità di blocco delle attività. Se il sistema è già in modalità di blocco delle attività quando viene lanciata questa attività, la nuova attività viene lanciata sopra l'attività corrente. Le attività avviate in questa modalità possono uscirne chiamando finish().

Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app non privilegiate con questo valore vengono trattate come normal.

Questo attributo è stato introdotto nel livello API 23.

android:maxRecents
Il numero massimo di attività basate su questa attività nella schermata Recenti. Quando viene raggiunto questo numero di voci, il sistema rimuove l'istanza meno usata dalla schermata Recenti. I valori validi sono numeri interi da 1 a 50 o da 1 a 25 sui dispositivi con poca memoria. Zero non è valido. Il valore predefinito è 16.
android:maxAspectRatio

Il formato più grande supportato dall'attività. Se l'app viene eseguita su un dispositivo con un formato più ampio, il sistema la inserisce automaticamente in una cornice, lasciando parti dello schermo inutilizzate in modo che l'app possa essere eseguita con il formato massimo specificato.

Il formato massimo è espresso nella forma decimale del quoziente della dimensione più lunga del dispositivo diviso per la dimensione più corta. Ad esempio, se il formato massimo è 7:3, imposta il valore di questo attributo su 2,33.

Sui dispositivi non indossabili, il valore di questo attributo deve essere pari o superiore a 1,33. Sui dispositivi indossabili, deve essere 1.0 o versioni successive. In caso contrario, il sistema ignora il valore impostato.

Nota : questo attributo viene ignorato se per l'attività è impostato resizeableActivity su true, poiché significa che l'attività supporta qualsiasi dimensione.

Per ulteriori informazioni su questo attributo, consulta Dichiarare una proporzione massima.

android:multiprocess
Indica se un'istanza dell'attività può essere avviata nel processo del componente che l'ha avviata. È "true" se è possibile e "false" in caso contrario. Il valore predefinito è "false".

Normalmente, una nuova istanza di un'attività viene avviata nel processo dell'applicazione che la ha definita, pertanto tutte le istanze dell'attività vengono eseguite nello stesso processo. Tuttavia, se questo flag è impostato su "true", le istanze dell'attività possono essere eseguite in più processi, consentendo al sistema di crearle ovunque vengano utilizzate, a condizione che le autorizzazioni lo consentano, cosa che non è quasi mai necessaria o auspicabile.

android:name
Il nome della classe che implementa l'attività, una sottoclasse di Activity. Il valore dell'attributo è solitamente un nome di classe completo, ad esempio "com.example.project.ExtracurricularActivity". Tuttavia, per abbreviazione, se il primo carattere del nome è un punto, come ".ExtracurricularActivity", viene aggiunto allo spazio dei nomi specificato nel file build.gradle.

Una volta pubblicata l'applicazione, non modificare questo nome, a meno che non imposti android:exported="false". Non è presente un valore predefinito. È necessario specificare il nome.

android:noHistory
Indica se l'attività viene rimossa dalla pila di attività e completata, chiamando il relativo metodo finish(), quando l'utente esce e non è più visibile sullo schermo. È "true" se è completato e "false" in caso contrario. Il valore predefinito è "false".

Un valore "true" indica che l'attività non lascia traccia storica. Non rimane nello stack di attività per l'attività, quindi l'utente non può tornare indietro. In questo caso, onActivityResult() non viene mai chiamato se avvii un'altra attività per un risultato di questa attività.

Questo attributo è stato introdotto nel livello API 3.

android:parentActivityName
Il nome della classe dell'elemento padre logico dell'attività. Il nome qui deve corrispondere al nome della classe assegnato all'attributo android:name dell'elemento <activity> corrispondente.

Il sistema legge questo attributo per determinare quale attività avviare quando l'utente tocca il pulsante Indietro nella barra delle app. Il sistema può anche utilizzare queste informazioni per sintetizzare una serie di attività precedenti con TaskStackBuilder.

Per supportare i livelli API 4-16, puoi anche dichiarare l'attività principale con un elemento <meta-data> che specifica un valore per "android.support.PARENT_ACTIVITY":

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

Per saperne di più sulla dichiarazione dell'attività principale per supportare la navigazione verso l'alto, consulta Fornire la navigazione verso l'alto.

Questo attributo è stato introdotto nel livello API 16.

android:persistableMode

Definisce in che modo un'istanza di un'attività viene conservata all'interno di un'attività contenitore durante i riavvii del dispositivo.

Se l'attività principale di un'attività imposta il valore di questo attributo su persistRootOnly, viene conservata solo l'attività principale. In caso contrario, vengono esaminate le attività più in alto nella stack di ritorno dell'attività; tutte le attività che impostano il valore di questo attributo su persistAcrossReboots vengono conservate.

Se utilizzi questo attributo, devi impostarne il valore su uno dei seguenti:

Valore Descrizione
persistRootOnly

Valore predefinito. Quando il sistema si riavvia, l'attività viene conservata, ma viene utilizzato solo l'intent di avvio dell'attività principale.

Quando l'intent di avvio dell'app carica l'attività principale dell'app, l'attività non riceve un oggetto PersistableBundle. Pertanto, non utilizzare onSaveInstanceState() per mantenere lo stato dell'attività principale della tua app dopo un riavvio del dispositivo.

Nota: questo valore dell'attributo influisce sul comportamento della tua app solo se è impostato sull'attività principale dell'app.

persistAcrossReboots

Lo stato di questa attività viene mantenuto, insieme a quello di ogni attività più in alto nella pila di fondo che ha il proprio attributo persistableMode impostato su persistAcrossReboots. Se un'attività non ha un attributo persistableMode impostato su persistAcrossReboots o se viene avviata utilizzando il flag Intent.FLAG_ACTIVITY_NEW_DOCUMENT, questa attività, insieme a tutte le attività più in alto nella pila di fondo, non viene conservata.

Quando un'intent carica un'attività il cui attributo persistableMode è impostato su persistAcrossReboots nella tua app, l'attività riceve un oggetto PersistableBundle nel suo metodo onCreate(). Pertanto, puoi utilizzare onSaveInstanceState() per preservare lo stato di un'attività durante il riavvio di un dispositivo, a condizione che l'attributo persistableMode sia impostato su persistAcrossReboots.

Nota : questo valore dell'attributo influisce sul comportamento della tua app anche se è impostato su un'attività diversa dall'attività principale dell'app.

persistNever

Lo stato dell'attività non viene mantenuto.

Nota: questo valore dell'attributo influisce sul comportamento della tua app solo se è impostato sull'attività principale dell'app.

Questo attributo è stato introdotto nel livello API 21.

android:permission
Il nome di un'autorizzazione che i client devono avere per avviare l'attività o per farla rispondere a un intent. Se a un chiamante di startActivity() o startActivityForResult() non viene concessa l'autorizzazione specificata, l'intent non viene inviato all'attività.

Se questo attributo non è impostato, all'attività viene applicata l'autorizzazione impostata dall'attributo permission dell'elemento <application>. Se non è impostato nessuno degli attributi, l'attività non è protetta da un'autorizzazione.

Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni della panoramica del file manifest dell'app e i suggerimenti per la sicurezza.

android:process

Il nome del processo in cui viene eseguita l'attività. In genere, tutti i componenti di un'applicazione vengono eseguiti in un nome processo predefinito creato per l'applicazione e non è necessario utilizzare questo attributo. Tuttavia, se necessario, puoi sostituire il nome del processo predefinito con questo attributo, in modo da distribuire i componenti dell'app su più processi.

Se il nome assegnato a questo attributo inizia con due punti (:), quando necessario viene creato un nuovo processo privato dell'applicazione e l'attività viene eseguita in quel processo.

Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con lo stesso nome, a condizione che disponga dell'autorizzazione. In questo modo, i componenti di applicazioni diverse possono condividere un processo, riducendo l'utilizzo delle risorse.

L'attributo process dell'elemento <application> può impostare un nome di processo predefinito diverso per tutti i componenti.

android:relinquishTaskIdentity

Indica se l'attività cede i suoi identificatori di attività a un'attività superiore nell'ordine delle attività. Un'attività la cui attività principale ha questo attributo impostato su "true" sostituisce la base Intent con quella dell'attività successiva nell'attività.

Se anche l'attività successiva ha questo attributo impostato su "true", restituisce la base Intent a qualsiasi attività che viene avviata nella stessa attività. Questo continua per ogni attività finché non viene trovata un'attività con questo attributo impostato su "false". Il valore predefinito è "false".

Questo attributo impostato su "true" consente inoltre all'attività di utilizzare ActivityManager.TaskDescription per modificare etichette, colori e icone nella schermata Recenti.

android:requireContentUriPermissionFromCaller

Specifica le autorizzazioni necessarie per avviare questa attività quando vengono trasmessi gli URI dei contenuti. Il valore predefinito è none, il che significa che non sono richieste autorizzazioni specifiche. L'impostazione di questo attributo limita l'invocazione dell'attività in base alle autorizzazioni dell'invoker. Se l'autore dell'invocazione non dispone delle autorizzazioni richieste, l'avvio dell'attività verrà negato tramite un SecurityException .

Tieni presente che l'applicazione delle norme funziona per gli URI dei contenuti all'interno di Intent.getData(), Intent.EXTRA_STREAM, e Intent.getClipData().

Può essere un valore di stringa, utilizzando "\\'" per eseguire l'escape di caratteri come "\\n" o '\\uxxxx' per un carattere Unicode.

Deve essere uno dei seguenti valori costanti.

Costante Valore Descrizione
nessuno 0 Per impostazione predefinita, non sono richieste autorizzazioni specifiche.
leggere 1 Impone all'utente che richiama l'API di avere accesso in lettura agli URI dei contenuti passati.
readAndWrite 4 Impone all'utente che richiama l'API di disporre dell'accesso in lettura e scrittura agli URI dei contenuti passati.
readOrWrite 3 Impone all'utente che esegue l'invocazione di disporre dell'accesso in lettura o scrittura agli URI dei contenuti passati.
scrivere 2 Impone all'utente che esegue l'invocazione di disporre dell'accesso in scrittura agli URI dei contenuti passati.
android:resizeableActivity

Specifica se l'app supporta la modalità multifinestra. Puoi impostare questo attributo nell'elemento <activity> o <application>.

Se imposti questo attributo su "true", l'utente può avviare l'attività in modalità split-screen e a forma libera. Se imposti l'attributo su "false", l'app non può essere testata o ottimizzata per un ambiente multi-finestra. Il sistema può comunque mettere l'attività in modalità multi-finestra con la modalità di compatibilità applicata.

L'impostazione di questo attributo su "false" non garantisce che sullo schermo non siano visibili altre app in modalità multi-finestra, ad esempio in una modalità Picture in picture, o su altri display. Pertanto, l'impostazione di questo flag non significa che la tua app abbia accesso esclusivo alle risorse.

Se la tua app ha come target il livello API 24 o versioni successive e non specifichi un valore per questo attributo, il valore predefinito è "true".

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 grandi (larghezza dello schermo >= 600 dp): tutte le app supportano la modalità multi-finestra. L'attributo indica se un'app può essere ridimensionata, non se supporta la modalità a più finestre. Se resizeableActivity="false", l'app viene messa in modalità di compatibilità quando necessario per conformarsi alle dimensioni del display.
  • Schermi piccoli (larghezza dello schermo < 600 dp): se resizeableActivity="true" e la larghezza minima e l'altezza minima dell'attività rientrano nei requisiti per il multi-finestra, l'app supporta la modalità multi-finestra. Se resizeableActivity="false", l'app non supporta la modalità multi-finestra indipendentemente dalla larghezza e dall'altezza minime dell'attività.

Nota:i produttori di dispositivi possono ignorare il comportamento del livello API 31.

Questo attributo è stato aggiunto nel livello API 24.

Nota:il valore dell'attività principale di un'attività viene applicato a tutte le attività aggiuntive avviate nell'attività. In altre parole, se l'attività principale di un'attività è ridimensionabile, il sistema tratta tutte le altre attività dell'attività come ridimensionabili. Se l'attività principale non è ridimensionabile, non lo sono nemmeno le altre attività nell'attività.

android:screenOrientation

L'orientamento richiesto dell'attività.

Quando un'attività riempie l'intero schermo, l'orientamento richiesto funge da suggerimento per cambiare l'orientamento dello schermo in modo che corrisponda al valore richiesto. Ciò può comportare un orientamento diverso da quello fisico dello schermo nello spazio, richiedendo all'utente di ruotare il dispositivo per continuare a utilizzare l'app. Su Android 12 (livello API 31) e versioni successive, i produttori di dispositivi possono configurare i singoli schermi dei dispositivi (ad esempio lo schermo di dimensioni tablet di un dispositivo pieghevole) in modo da ignorare questo suggerimento e, al contrario, forzare un'attività in letterbox nell'orientamento preferito dell'utente del dispositivo. In questo modo, l'orientamento dell'attività corrisponde a quello richiesto senza che l'utente debba ruotare fisicamente il dispositivo.

In modalità a più finestre, l'orientamento richiesto non funge da suggerimento per l'orientamento complessivo. Se l'attività è letterboxed, l'orientamento richiesto influisce sul letterboxing applicato all'attività.

Il valore può essere una delle seguenti stringhe:

"unspecified" Il valore predefinito. Il sistema sceglie l'orientamento. I criteri che utilizza e, di conseguenza, le scelte fatte in contesti specifici, possono variare da dispositivo a dispositivo.
"behind" Lo stesso orientamento dell'attività immediatamente sottostante nell'attività in pila.
"landscape" Orientamento orizzontale (il display è più largo che alto).
"portrait" Orientamento verticale (il display è più alto che largo).
"reverseLandscape" Orientamento orizzontale nella direzione opposta a quella normale. Aggiunta nel livello API 9.
"reversePortrait" Orientamento verticale nella direzione opposta a quella del normale ritratto. Aggiunta nel livello API 9.
"sensorLandscape" Orientamento orizzontale, ma può essere normale o orizzontale inverso in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Aggiunta nel livello API 9.
"sensorPortrait" Orientamento verticale, ma può essere normale o verticale inverso in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 9.
"userLandscape" Orientamento orizzontale, ma può essere normale o orizzontale inverso in base al sensore del dispositivo e alle preferenze dell'utente. Aggiunta nel livello API 18.
"userPortrait" Orientamento verticale, ma può essere normale o verticale inverso in base al sensore del dispositivo e alle preferenze dell'utente. Tuttavia, a seconda della configurazione del dispositivo, la rotazione capovolta potrebbe non essere consentita. Aggiunta nel livello API 18.
"sensor" L'orientamento del dispositivo viene determinato dal sensore di orientamento del dispositivo. L'orientamento del display dipende da come l'utente tiene il dispositivo. Cambia quando l'utente ruota il dispositivo. Tuttavia, alcuni dispositivi non ruotano in tutti e quattro i possibili orientamenti per impostazione predefinita. Per usare tutti e quattro gli orientamenti, utilizza "fullSensor". Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione in base al sensore.
"fullSensor" Il sensore di orientamento del dispositivo determina l'orientamento per uno dei quattro orientamenti. È simile a "sensor", tranne per il fatto che consente uno dei quattro possibili orientamenti dello schermo, indipendentemente da ciò che supporta normalmente il dispositivo. Ad esempio, alcuni dispositivi normalmente non utilizzano il ritratto o il paesaggio capovolto, ma questa impostazione li attiva. Aggiunta nel livello API 9.
"nosensor" L'orientamento viene determinato senza fare riferimento a un sensore di orientamento fisico. Il sensore viene ignorato, quindi il display non ruota in base al movimento del dispositivo.
"user" L'orientamento preferito corrente dell'utente.
"fullUser" Se l'utente ha bloccato la rotazione basata sui sensori, il comportamento è lo stesso di user, altrimenti è lo stesso di fullSensor e consente uno dei quattro possibili orientamenti dello schermo. Aggiunta nel livello API 18.
"locked" Blocca l'orientamento sulla rotazione corrente, qualunque sia. Aggiunta nel livello API 18.

Nota: quando dichiari uno dei valori Orizzontale o Ritratto, viene considerato un requisito obbligatorio per l'orientamento in cui viene eseguita l'attività. Il valore dichiarato consente di filtrare in base a servizi come Google Play, pertanto la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento richiesto dalle tue attività. Ad esempio, se dichiari "landscape", "reverseLandscape" o "sensorLandscape", la tua applicazione è disponibile solo per i dispositivi che supportano l'orientamento orizzontale.

Dichiara inoltre esplicitamente che la tua applicazione richiede l'orientamento verticale o orizzontale con l'elemento <uses-feature>, ad esempio <uses-feature android:name="android.hardware.screen.portrait"/>. Si tratta di un comportamento di filtro fornito da Google Play e da altri servizi che lo supportano e la piattaforma stessa non controlla se la tua app può essere installata quando un dispositivo supporta solo determinati orientamenti.

android:showForAllUsers

Indica se l'attività viene mostrata quando l'utente corrente del dispositivo è diverso dall'utente che ha avviato l'attività. Puoi impostare questo attributo su un valore letterale, ad esempio "true" o "false", oppure su un attributo della risorsa o del tema contenente un valore booleano.

Questo attributo è stato aggiunto nel livello API 23.

android:stateNotNeeded
Se l'attività può essere interrotta e riavviata correttamente senza aver salvato il relativo stato. È "true" se può essere riavviato senza fare riferimento allo stato precedente e "false" se è necessario lo stato precedente. Il valore predefinito è "false".

Normalmente, prima che un'attività venga interrotta temporaneamente per risparmiare risorse, viene chiamato il relativo metodoonSaveInstanceState(). Questo metodo memorizza lo stato corrente dell'attività in un oggetto Bundle, che viene poi passato a onCreate() quando l'attività viene riavviata. Se questo attributo è impostato su "true", onSaveInstanceState() potrebbe non essere chiamato e onCreate() viene passato null anziché Bundle, come avviene quando l'attività viene avviata per la prima volta.

Un'impostazione "true" indica che l'attività può essere riavviata senza stato mantenuto. Ad esempio, l'attività che mostra la schermata iniziale utilizza questa impostazione per assicurarsi che non venga rimossa se si arresta in modo anomalo per qualche motivo.

android:supportsPictureInPicture

Specifica se l'attività supporta la visualizzazione picture-in-picture.

android:taskAffinity

L'attività a cui l'attività ha un'affinità. Le attività con la stessa affinità appartengono concettualmente alla stessa attività, alla stessa "applicazione" dal punto di vista dell'utente. L'affinità di un'attività viene determinata dall'affinità della sua attività principale.

L'affinità determina due cose: l'attività a cui viene assegnata nuovamente come attività principale (vedi l'attributo allowTaskReparenting) e l'attività che contiene l'attività quando viene avviata con il flag FLAG_ACTIVITY_NEW_TASK.

Per impostazione predefinita, tutte le attività di un'applicazione hanno la stessa affinità. Puoi impostare questo attributo per raggrupparle in modo diverso e persino inserire attività definite in applicazioni diverse all'interno della stessa attività. Per specificare che l'attività non ha affinità con alcuna attività, impostala su una stringa vuota.

Se questo attributo non è impostato, l'attività eredita l'affinità impostata per l'applicazione. Consulta l'attributo taskAffinity dell'elemento <application>. Il nome dell'affinità predefinita per un'applicazione è lo spazio dei nomi impostato nel file build.gradle.

android:theme
Un riferimento a una risorsa di stile che definisce un tema generale per l'attività. In questo modo, il contesto dell'attività viene impostato automaticamente in modo da utilizzare questo theme e potrebbero anche essere attivate animazioni di "avvio" prima dell'avvio dell'attività, in modo da rispecchiare meglio l'aspetto reale dell'attività.

Se questo attributo non è impostato, l'attività eredita il tema impostato per l'applicazione nel suo complesso dall'attributo <application> dell'elemento theme. Se anche questo attributo non è impostato, viene utilizzato il tema di sistema predefinito. Per ulteriori informazioni, consulta Stili e temi.

android:uiOptions

Opzioni aggiuntive per l'interfaccia utente di un'attività. Deve essere uno dei seguenti valori.

ValoreDescrizione
"none"Nessun'opzione aggiuntiva per l'interfaccia utente. Questa è l'impostazione predefinita.
"splitActionBarWhenNarrow"Aggiunge una barra nella parte inferiore dello schermo per visualizzare gli elementi di azione nella barra delle app, nota anche come barra di azioni, quando lo spazio orizzontale è limitato, ad esempio in modalità Ritratto su un cellulare. Invece di un piccolo numero di elementi di azioni visualizzati nella barra delle app nella parte superiore dello schermo, la barra delle app è suddivisa nella sezione di navigazione in alto e nella barra in basso per gli elementi di azioni. Ciò significa che viene messa a disposizione una quantità ragionevole di spazio non solo per gli elementi di azione, ma anche per gli elementi di navigazione e del titolo in alto. Le voci di menu non sono suddivise tra le due barre. Vengono sempre visualizzati insieme.

Per ulteriori informazioni sulla barra delle app, vedi Aggiungere la barra delle app.

Questo attributo è stato aggiunto nel livello API 14.

android:windowSoftInputMode
In che modo la finestra principale dell'attività interagisce con la finestra contenente la tastiera virtuale sullo schermo. L'impostazione di questo attributo influisce su due aspetti:
  • Indica se la tastiera virtuale è nascosta o visibile quando l'attività diventa l'elemento di attenzione dell'utente.
  • Indica se la finestra principale dell'attività viene ridimensionata per fare spazio alla tastiera virtuale o se i suoi contenuti vengono spostati per rendere visibile l'elemento attualmente attivo quando parte della finestra è coperta dalla tastiera virtuale.

L'impostazione deve essere uno dei valori elencati nella tabella seguente o una combinazione di un valore "state..." e un valore "adjust...". L'impostazione di più valori in uno dei gruppi, ad esempio più valori "state...", ha risultati indefiniti. I singoli valori sono separati da una barra verticale (|), come mostrato nell'esempio seguente:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

I valori impostati qui (diversi da "stateUnspecified" e "adjustUnspecified") sostituiscono i valori impostati nel tema.

Valore Descrizione
"stateUnspecified" Non è specificato se la tastiera virtuale è nascosta o visibile. Il sistema sceglie uno stato appropriato o si basa sull'impostazione nel tema.

Questa è l'impostazione predefinita per il comportamento della tastiera virtuale.

"stateUnchanged" La tastiera virtuale viene mantenuta nello stato in cui si trovava l'ultima volta, visibile o nascosta, quando l'attività viene messa in primo piano.
"stateHidden" La tastiera virtuale viene nascosta quando l'utente sceglie l'attività, ovvero quando l'utente passa attivamente all'attività anziché tornare indietro quando esce da un'altra attività.
"stateAlwaysHidden" La tastiera virtuale è sempre nascosta quando la finestra principale dell'attività è attiva.
"stateVisible" La tastiera virtuale viene visualizzata quando l'utente sceglie l'attività, ovvero quando l'utente passa attivamente all'attività anziché tornare indietro quando esce da un'altra attività.
"stateAlwaysVisible" La tastiera virtuale è visibile quando la finestra riceve lo stato attivo dell'input.
"adjustUnspecified" Non è specificato se la finestra principale dell'attività viene ridimensionata per fare spazio alla tastiera virtuale o ai contenuti della panoramica della finestra per rendere visibile sullo schermo l'elemento attualmente attivo. Il sistema seleziona automaticamente una di queste modalità a seconda che i contenuti della finestra abbiano visualizzazioni di layout che possono scorrere i contenuti. Se esiste una visualizzazione di questo tipo, la finestra si ridimensiona, in base al presupposto che lo scorrimento possa rendere visibili tutti i contenuti della finestra in un'area più piccola.

Questa è l'impostazione predefinita per il comportamento della finestra principale.

"adjustResize" La finestra principale dell'attività viene sempre ridimensionata per fare spazio alla tastiera sullo schermo.
"adjustPan" La finestra principale dell'attività non viene ridimensionata per fare spazio alla tastiera virtuale. I contenuti della finestra vengono invece scorrevoli automaticamente in modo che l'elemento attualmente attivo non venga mai oscurato dalla tastiera e gli utenti possano sempre vedere cosa stanno digitando. In genere, questa opzione è meno preferita rispetto al ridimensionamento, perché l'utente potrebbe dover chiudere la tastiera virtuale per accedere e interagire con le parti oscurate della finestra.
"adjustNothing" La finestra principale dell'attività non viene ridimensionata o panoramica per fare spazio alla tastiera virtuale. L'attività è responsabile di fare spazio alla tastiera virtuale utilizzando gli inserti della finestra. Per le attività che gestiscono correttamente gli inserti della finestra, questo offre il massimo controllo su come i contenuti della finestra vengono visualizzati sullo schermo.

Questo attributo è stato introdotto nel livello API 3.

introdotto in:
Livello API 1 per tutti gli attributi tranne noHistory e windowSoftInputMode, che sono stati aggiunti nel livello API 3.
Vedi anche:
<application>
<activity-alias>