<attività>

sintassi:
<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>
contenuto 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. Quelle che non vengono dichiarate non sono visibili dal sistema e non vengono mai eseguite.
attributi:
android:allowEmbedded

Indica che l'attività può essere avviata come elemento secondario incorporato di un'altra attività, in particolare nel caso in cui l'attività secondaria si trovi in un container, ad esempio 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 mostrare 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 a quella a cui ha un'affinità quando l'attività viene successivamente portata in primo piano. È "true" se può spostarsi e "false" se rimane con l'attività in cui è iniziata.

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

Di solito, un'attività che viene avviata è associata a quella dell'attività che l'ha avviata e vi rimane per tutta la sua durata. Puoi utilizzare questo attributo per forzarne l'associazione nuovamente all'attività a cui ha un'affinità quando l'attività attuale non viene più visualizzata. In genere, viene utilizzato per spostare le attività di un'applicazione nell'attività principale associata all'applicazione.

Ad esempio, se un messaggio email contiene un link a una pagina web, facendo clic sul link viene visualizzata un'attività che può visualizzare la pagina. Tale attività è definita dall'applicazione del browser, ma viene avviata come parte dell'attività email. Se viene assegnata di nuovo all'attività del browser, mostra quando il browser viene in primo piano e non è presente quando l'attività email viene di nuovo eseguita.

L'affinità di un'attività è definita dall'attributo taskAffinity. L'affinità di un'attività è determinata dalla lettura dell'affinità della sua attività principale. Pertanto, per definizione, un'attività principale si trova sempre in un'attività con la stessa affinità. Poiché le attività con le modalità di avvio "singleTask" o "singleInstance" possono essere solo alla base di un'attività, la nuova creazione di un nuovo elemento padre è limitata alle modalità "standard" e "singleTop". Vedi anche l'attributo launchMode.

android:alwaysRetainTaskState
Indica se lo stato dell'attività in cui si trova l'attività è sempre gestito dal sistema. "true" se lo è e "false" se il sistema può reimpostare lo stato iniziale dell'attività 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à dall'elenco sopra l'attività principale, in determinate situazioni quando l'utente riseleziona l'attività dalla schermata Home. In genere, questa operazione viene eseguita se l'utente non ha visitato l'attività 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 sono arrivati. Ciò è utile in un'applicazione come un browser web in cui sono presenti molti stati, 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à. Se true, l'attività viene rimossa automaticamente dalla schermata Recenti. Questa operazione sostituisce l'utilizzo di FLAG_ACTIVITY_RETAIN_IN_RECENTS da parte del chiamante. Deve essere un valore booleano, "true" o "false".
android:banner
Una risorsa estraibile che fornisce un banner grafico esteso per l'elemento associato. Utilizzalo 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 è impostato come riferimento a una risorsa drawable contenente l'immagine, come "@drawable/banner". Non esiste un banner predefinito.

Per ulteriori informazioni, consulta la sezione Fornire un banner della schermata Home nella sezione Inizia a utilizzare le app TV.

android:canDisplayOnRemoteDevices

Indica se l'attività può essere visualizzata su un dispositivo remoto su cui potrebbe essere in esecuzione o meno Android. Deve essere un valore booleano, "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à, l'attività principale. Viene ignorato per tutte le altre attività nell'attività.

Se il valore è "true", ogni volta che gli utenti avviano l'attività, vengono riportati alla sua attività principale, indipendentemente dall'ultima operazione che hanno svolto nell'attività e dal fatto che abbiano utilizzato il pulsante Indietro o Home per abbandonarla. Se il valore è "false", è possibile cancellare le attività dalle attività in alcune situazioni, ma non sempre. Per maggiori informazioni, consulta l'attributo alwaysRetainTaskState.

Supponiamo che l'utente avvii l'attività P dalla schermata Home e da lì passi all'attività Q. Dopodiché l'utente tocca Home, poi torna all'attività P. Normalmente l'utente vede l'attività Q, poiché è l'ultima attività che ha svolto nell'attività di P. Tuttavia, se il flag P imposta questo flag su "true", tutte le attività associate, in questo caso Q, vengono rimosse quando l'utente avvia l'attività P dalla schermata Home. Di conseguenza, l'utente vede solo la lettera P quando torna all'attività.

Se questo attributo e allowTaskReparenting sono entrambi "true", tutte le attività per cui è possibile assegnare un nuovo elemento padre vengono spostate nell'attività con cui condividono un'affinità. Le attività rimanenti vengono eliminate.

Questo attributo viene ignorato se non è impostato FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:colorMode

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

Se hdr, richiede che l'attività venga visualizzata in un intervallo dinamico elevato se il dispositivo la supporta.

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

android:configChanges
Elenca le modifiche alla configurazione che l'attività gestisce autonomamente. Quando si verifica una modifica alla configurazione in fase di runtime, l'attività viene chiusa e riavviata per impostazione predefinita, ma la dichiarazione di una configurazione con questo attributo impedisce il riavvio dell'attività. L'attività rimane invece in esecuzione e viene chiamato il suo metodo onConfigurationChanged().

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

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

Valore Descrizione
"colorMode"

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

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

"density"

Una modifica della densità del display, ad esempio quando l'utente specifica una bilancia del display diversa o un display diverso ora è attivo.

Aggiunto nel livello API 24.

"fontScale" Modifica del fattore di scalabilità del carattere, ad esempio quando l'utente seleziona una nuova dimensione globale del carattere.
"fontWeightAdjustment" L'aumento dello spessore dei caratteri è cambiato.
"grammaticalGender" Il genere grammaticale della lingua è cambiato. Consulta GrammaticalInflectionManager.

Aggiunta nel livello API 34.

"keyboard" 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 visualizza la tastiera hardware.
"layoutDirection"

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

Aggiunto nel livello API 17.

"locale" Una modifica alle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua per il testo.
"mcc" Una modifica del codice paese IMSI per dispositivi mobili (Centro clienti) quando viene rilevata una SIM che aggiorna il Centro clienti.
"mnc" Una modifica al codice di rete mobile IMSI (MNC) quando viene rilevata una SIM che aggiorna l'MNC.
"navigation" TA consente di passare al tipo di navigazione (trackball o D-pad). Solitamente non accade.
"orientation"

Un cambiamento dell'orientamento dello schermo, ad esempio quando l'utente ruota il dispositivo.

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

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

Una modifica alle dimensioni dello schermo attualmente disponibili.

Questo rappresenta una modifica delle dimensioni attualmente disponibili rispetto alle proporzioni attuali, quindi viene modificato quando l'utente passa dalla modalità orizzontale a quella verticale e viceversa.

Aggiunto nel livello API 13.

"smallestScreenSize"

Una modifica alle dimensioni fisiche dello schermo.

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

Aggiunto nel livello API 13.

"touchscreen" Una modifica al touchscreen. Solitamente non accade.
"uiMode" Modifica alla modalità dell'interfaccia utente, ad esempio quando l'utente posiziona il dispositivo su una scrivania o nel dock dell'auto o quando cambia la modalità notturna. Per ulteriori informazioni sulle diverse modalità UI, consulta UiModeManager.

Aggiunta nel livello API 8.

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

Nota:per gestire le modifiche alla configurazione relative a multi-finestra, utilizza sia "screenLayout" sia "smallestScreenSize". La modalità multi-finestra è supportata in Android 7.0 (livello API 24) o versioni successive.

android:directBootAware

Se l'attività è rilevante per Direct Boot, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.

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

Il valore predefinito è "false".

android:documentLaunchMode
Specifica come viene aggiunta a un'attività una nuova istanza di 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 ComponentName dell'intent di base e l'URI dei dati corrispondono a quelli dell'intent di avvio. Se il sistema trova un'attività di questo tipo, la cancella e la riavvia, con l'attività principale che riceve una chiamata a onNewIntent(android.content.Intent). Se il sistema non trova l'attività di questo tipo, ne crea una nuova.
"always" L'attività crea una nuova attività per il documento, anche se il documento è già aperto. Equivale all'impostazione dei flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK.
"none" L'attività non crea una nuova attività per l'attività stessa. Questo è il valore predefinito, che crea una nuova attività solo quando è impostato FLAG_ACTIVITY_NEW_TASK. La schermata Recenti tratta l'attività come avviene per impostazione predefinita: visualizza una singola attività per l'app, che riprende dall'ultima attività richiamata 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 dei flag FLAG_ACTIVITY_NEW_DOCUMENT e FLAG_ACTIVITY_MULTIPLE_TASK, se uno di questi è impostato nell'attività e la schermata Recenti mostra una singola attività per l'app, che riprende dall'ultima attività richiamata dall'utente.

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

android:enabled
Indica se il sistema può creare un'istanza dell'attività. È "true" se può esserlo 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à. Per consentire al sistema di creare un'istanza dell'attività, gli attributi <application> e <activity> devono essere entrambi "true" in quanto sono entrambi per impostazione predefinita. Se uno dei due è "false", non è possibile creare un'istanza.

android:enableOnBackInvokedCallback
Questo flag ti consente di attivare le animazioni di sistema predittive a livello di attività. Questo comportamento rende più gestibile la migrazione di app multiattività di grandi dimensioni ai gesti Indietro predittivi.

L'impostazione di android:enableOnBackInvokedCallback=false disattiva le animazioni 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à viene 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

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

  • Se "true", l'attività è accessibile a qualsiasi app e può essere lanciata con il nome esatto della classe.
  • Se "false", l'attività può essere avviata solo dai componenti della stessa applicazione, dalle applicazioni con lo stesso ID utente o dai componenti di sistema con privilegi. Questo è il valore predefinito quando non sono presenti filtri per 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 prova ad avviare l'attività, il sistema genera un 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 richiamare l'attività. Vedi l'attributo permission.

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

Se questo attributo e allowTaskReparenting sono entrambi "true", questo attributo prevale sull'altro. L'affinità dell'attività viene ignorata. L'attività non viene assegnata come nuova genitori, ma viene distrutta.

Questo attributo viene ignorato se non è impostato FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:hardwareAccelerated
Indica se il rendering con accelerazione hardware è abilitato per questa attività. "true" se abilitata e "false" in caso contrario. Il valore predefinito è "false".

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

Ciò si traduce in animazioni più fluide, scorrimento più fluido e in generale una migliore reattività, anche per le applicazioni che non utilizzano esplicitamente le librerie OpenGL del framework. A causa dell'aumento delle risorse necessarie per abilitare l'accelerazione hardware, l'app consuma più RAM.

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

android:icon

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

Questo attributo è impostato come riferimento a una risorsa drawable contenente la definizione dell'immagine. Se non è impostata, viene utilizzata l'icona specificata per l'intera applicazione. Per maggiori informazioni, vedi l'attributo icon dell'elemento <application>.

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

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

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

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

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

android:launchMode

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

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

La modalità predefinita è "standard".

Come mostrato nella tabella seguente, le modalità rientrano in due gruppi principali, con attività "standard" e "singleTop" da un lato e 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 ovunque nell'attività. In genere, vengono avviate nell'attività denominata startActivity(), a meno che l'oggetto Intent non contenga un'istruzione FLAG_ACTIVITY_NEW_TASK, nel qual caso viene scelta un'attività diversa. Per maggiori informazioni, consulta l'attributo taskAffinity.

Al contrario, le attività "singleTask", "singleInstance" e "singleInstancePerTask" hanno comportamenti diversi. "singleInstancePerTask" è sempre all'inizio dell'attività dell'attività. Inoltre, il dispositivo può contenere una sola istanza dell'attività "singleInstance" alla volta, mentre è possibile creare un'istanza più volte dell'attività "singleInstancePerTask in attività diverse quando è impostata l'opzione FLAG_ACTIVITY_MULTIPLE_TASK o FLAG_ACTIVITY_NEW_DOCUMENT.

Un'attività con la modalità di avvio "singleTask" combina i comportamenti di "singleInstance" e "singleInstancePerTask": l'attività può essere creata più volte e può essere localizzata ovunque in un'attività della stessa taskAffinity. Tuttavia, il dispositivo può eseguire una sola attività per trovare l'attività "singleTask" alla base dell'attività.

Le modalità "standard" e "singleTop" sono diverse per un aspetto: ogni volta che c'è un nuovo intent per un'attività "standard" viene creata una nuova istanza del corso per rispondere a questo intento. Ogni istanza gestisce un singolo intent. Allo stesso modo, puoi anche creare una nuova istanza di un'attività "singleTop" per gestire un nuovo intent.

Tuttavia, se l'attività di destinazione ha già un'istanza esistente dell'attività in cima allo stack, l'istanza riceve il nuovo intent in una chiamata onNewIntent(). Non viene creata una nuova istanza. In caso contrario, se un'istanza esistente dell'attività "singleTop" si trova nell'attività di destinazione, ma non nella parte superiore dello stack, o se si trova in cima allo stack, ma non nell'attività di destinazione, viene creata una nuova istanza e ne viene eseguito il push nello stack.

Allo stesso modo, se l'utente arriva a un'attività nello stack attuale, 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 spostata in cima allo stack e il suo 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 l'attività principale vengono entrambe separate dallo stack e viene creata una nuova istanza dell'attività principale per ricevere l'intent di navigazione.

La modalità "singleInstance" è diversa anche da "singleTask" e "singleInstancePerTask" per un solo aspetto: un'attività con la modalità di avvio "singleTask" o "singleInstancePerTask" consente ad altre attività, necessariamente quelle di "standard" e "singleTop", di far parte della sua attività.

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

Casi d'uso Modalità di avvio 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 instrada l'intent a quest'ultima.
"singleTop" Condizionalmente Se un'istanza dell'attività esiste già nella parte superiore dell'attività di destinazione, il sistema instrada l'intent a quell'istanza mediante una chiamata al suo metodo onNewIntent(), anziché creare una nuova istanza dell'attività.
Lanci specializzati
(non consigliato per un uso generico)
"singleTask" Condizionalmente Il sistema crea l'attività alla base di una nuova attività o individua l'attività in un'attività esistente con la stessa affinità. Se un'istanza dell'attività esiste già e si trova all'origine dell'attività, il sistema instrada l'intent all'istanza esistente tramite una chiamata al suo metodo onNewIntent(), anziché crearne una nuova.
"singleInstance" No Uguale a "singleTask", tranne per il fatto che il sistema non avvia altre attività nell'attività che contiene l'istanza. L'attività è sempre l'unico e unico membro della sua attività.
"singleInstancePerTask" Condizionalmente L'attività può essere eseguita solo come attività principale dell'attività, ossia la prima attività che ha creato l'attività, pertanto è presente una sola istanza di questa attività in un'attività. Tuttavia, è possibile creare un'istanza dell'attività 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 avvio comune e utile per molti tipi di attività. Le altre modalità "singleTask", "singleInstance" e "singleInstancePerTask" non sono appropriate per la maggior parte delle applicazioni. Generano un modello di interazione probabilmente sconosciuto agli utenti e molto diverso da quello della maggior parte delle altre applicazioni.

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

Per maggiori informazioni sulle modalità di avvio e sulla loro interazione con i flag Intent, consulta Tasks e lo stack precedente.

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

Android può eseguire le attività in un modo immersivo, simile a un kiosk, chiamato modalità di blocco attività. Quando il sistema viene eseguito in modalità di blocco dell'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.

Quando il sistema è in modalità di blocco attività, è possibile eseguire soltanto le app inserite nella lista consentita da un controller dei criteri dei dispositivi (DPC). Le app di sistema e le app con privilegi, tuttavia, possono essere eseguite in modalità di blocco attività senza essere inserite nella lista consentita.

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

Valore Descrizione
"normal" Valore predefinito. Questo è il valore predefinito. Le attività non si avviano in modalità di blocco dell'attività, ma possono essere posizionate chiamando startLockTask().
"never"

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

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

"if_whitelisted" Se il DPC autorizza questo pacchetto utilizzando DevicePolicyManager.setLockTaskPackages(), questa modalità è identica a always, ma l'attività deve chiamare stopLockTask() prima di poter essere completata se si tratta dell'ultima attività bloccata. Se il DPC non autorizza questo pacchetto, questa modalità è identica a normal.
"always"

Le attività rooted in questa attività vengono sempre avviate in modalità di blocco attività. Se il sistema è già in modalità di blocco all'avvio di questa attività, la nuova attività viene avviata sopra l'attività corrente. Le attività avviate in questa modalità possono uscire dalla modalità di blocco attività chiamando il numero finish().

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

Questo attributo è stato introdotto nel livello API 23.

android:maxRecents
Il numero massimo di attività radicate in questa attività nella schermata Recenti. Quando viene raggiunto questo numero di voci, il sistema rimuove l'istanza utilizzata meno di recente dalla schermata Recenti. I valori validi sono i numeri interi compresi tra 1 e 50 o tra 1 e 25 sui dispositivi con memoria ridotta. Lo zero non è valido. Il valore predefinito è 16.
android:maxAspectRatio

Le proporzioni massime supportate dall'attività. Se l'app viene eseguita su un dispositivo con proporzioni più ampie, il sistema inserisce automaticamente l'app in formato letterbox, lasciando parti dello schermo inutilizzate in modo che l'app possa essere eseguita alle proporzioni massime specificate.

Le proporzioni massime sono espresse come forma decimale del quoziente della dimensione maggiore del dispositivo divisa per la dimensione più corta. Ad esempio, se le proporzioni massime sono 7:3, imposta il valore di questo attributo su 2,33.

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

Nota: questo attributo viene ignorato se l'attività ha resizeableActivity impostato su true, per cui la tua attività supporta qualsiasi dimensione.

Per maggiori informazioni su questo attributo, consulta Dichiarare le proporzioni massime.

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

Normalmente, una nuova istanza di un'attività viene avviata nel processo dell'applicazione che l'ha definita, quindi tutte le istanze dell'attività vengono eseguite nello stesso processo. Tuttavia, se questo flag viene impostato su "true", le istanze dell'attività possono essere eseguite in più processi, consentendo al sistema di creare istanze ovunque vengano utilizzate, le autorizzazioni fornite lo consentono, il che non è quasi mai necessario o desiderabile.

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

Dopo aver pubblicato l'applicazione, non modificare questo nome, a meno che non imposti android:exported="false". Non esiste un valore predefinito. È necessario specificare il nome.

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

Il valore "true" indica che l'attività non lascia tracce storiche. Non rimane nello stack di attività per l'attività, quindi l'utente non può accedervi. 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 del corso del principale 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 Su nella barra delle azioni. Il sistema può utilizzare queste informazioni anche per sintetizzare uno stack di attività precedente con TaskStackBuilder.

Per supportare i livelli API da 4 a 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 scoprire di più su come dichiarare l'attività principale per supportare la navigazione verso l'alto, leggi Fornire la navigazione verso l'alto.

Questo attributo è stato introdotto nel livello API 16.

android:persistableMode

Definisce il modo in cui un'istanza di un'attività viene conservata all'interno di un'attività contenitore tra i riavvii del dispositivo.

Se l'attività principale di un'attività imposta il valore di questo attributo su persistRootOnly, viene mantenuta solo l'attività principale. In caso contrario, vengono esaminate le attività che si trovano più in alto nello stack back dell'attività; qualsiasi attività che imposta il valore di questo attributo su persistAcrossReboots viene mantenuta.

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

Valore Descrizione
persistRootOnly

Valore predefinito. Quando il sistema viene riavviato, l'attività dell'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 preservare lo stato dell'attività principale dell'app durante il riavvio di un dispositivo.

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

persistAcrossReboots

Lo stato di questa attività viene conservato, insieme allo stato di ogni attività più in alto nello stack di back 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, l'attività e tutte le attività più in alto nello stack posteriore non vengono conservate.

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(). Di conseguenza, puoi utilizzare onSaveInstanceState() per conservare lo stato di un'attività durante il riavvio del dispositivo purché 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 conservato.

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

Questo attributo è stato introdotto nel livello API 21.

android:permission
Il nome di un'autorizzazione di cui i clienti devono disporre per avviare l'attività o altrimenti indurla a rispondere a un'intenzione. Se a un chiamante di startActivity() o startActivityForResult() non viene concessa l'autorizzazione specificata, il suo intent non viene trasmesso all'attività.

Se questo attributo non è impostato, l'autorizzazione impostata dall'attributo <application> dell'elemento permission si applica all'attività. Se non è impostato nessuno dei due 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 dei Suggerimenti per la sicurezza.

android:process

Il nome del processo in cui viene eseguita l'attività. Normalmente, tutti i componenti di un'applicazione vengono eseguiti in un nome di processo predefinito creato per l'applicazione e non è necessario utilizzare questo attributo. Tuttavia, se necessario, puoi eseguire l'override del nome di 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 i due punti (:), viene creato un nuovo processo privato per l'applicazione quando è necessario e quando viene eseguita l'attività in quel processo.

Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con questo nome, a condizione che sia autorizzato a farlo. Ciò consente ai componenti di applicazioni diverse di 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à abbandona i propri identificatori attività a un'attività superiore nell'elenco di attività. Un'attività la cui attività principale ha questo attributo impostato su "true" sostituisce l'elemento Intent di base con quello dell'attività successiva nell'attività.

Se anche l'attività successiva ha questo attributo impostato su "true", restituisce la Intent di base a qualsiasi attività che avvia nella stessa attività. Questo continua per ogni attività fino a quando non viene rilevata 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 cambiare etichette, colori e icone nella schermata Recenti.

android:requireContentUriPermissionFromCaller

Specifica le autorizzazioni necessarie per avviare questa attività durante il trasferimento degli URI dei contenuti. Il valore predefinito è none, il che significa che non sono necessarie autorizzazioni specifiche. La configurazione di questo attributo limita le chiamate delle attività in base alle autorizzazioni dell'invoker. Se l'invocatore non dispone delle autorizzazioni necessarie, l'avvio dell'attività verrà negato tramite un SecurityException .

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

Può essere un valore di stringa, che utilizza "\\;" per l'interpretazione letterale di caratteri come "\\n" o "\\uxxxx" per il carattere Unicode;

Deve essere uno dei seguenti valori costanti.

Costante Valore Descrizione
Nessuna selezione 0 Per impostazione predefinita, non sono richieste autorizzazioni specifiche.
leggere 1 Obbliga l'invoker ad avere accesso in lettura agli URI dei contenuti passati.
letturaAndWrite 4 Obbliga l'invoker ad avere accesso in lettura e in scrittura agli URI dei contenuti trasmessi.
letturaOrWrite 3 Obbliga l'invoker ad avere accesso in lettura o in scrittura agli URI dei contenuti trasmessi.
scrittura 2 Impone all'invoker di avere accesso in scrittura agli URI dei contenuti trasmessi.
android:resizeableActivity

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

Se imposti questo attributo su "true", l'utente può avviare l'attività in modalità schermo diviso e formato libero. Se imposti l'attributo su "false", l'app non può essere testata o ottimizzata per un ambiente multi-finestra. Il sistema può comunque impostare l'attività in modalità multi-finestra con la modalità di compatibilità applicata.

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

Se la tua app ha come target il livello API 24 o successivo e non specifichi un valore per questo attributo, il valore predefinito dell'attributo sarà "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 (sw >= 600 dp): tutte le app supportano la modalità multi-finestra. L'attributo indica se un'app può essere ridimensionata, non se supporta la modalità multi-finestra. Se resizeableActivity="false", l'app viene attivata in modalità di compatibilità quando necessario per conformarsi alle dimensioni del display.
  • Schermi piccoli (sw < 600 dp): se resizeableActivity="true" e la larghezza e l'altezza minime dell'attività rientrano nei requisiti per la modalità 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 eseguire l'override del 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 considera ridimensionabili tutte le altre attività dell'attività. Se l'attività principale non è ridimensionabile, le altre attività dell'attività non potranno essere ridimensionate.

android:screenOrientation

L'orientamento dell'attività sul display del dispositivo.

Su Android 7.0 (livello API 24) e versioni successive, il sistema ignora le modifiche di runtime per questo attributo se l'attività è in modalità multi-finestra.

Su Android 12 (livello API 31) e versioni successive, i produttori di dispositivi possono configurare i singoli schermi dei dispositivi (ad esempio, lo schermo delle dimensioni di un tablet pieghevole) per ignorare le specifiche di orientamento e forzare un'app specificata come solo verticale a essere in posizione verticale ma in formato letterbox sui display orizzontali. In questo modo l'app continua ad avere proporzioni verticali, ma orienta l'app per una migliore usabilità.

Il valore può essere una qualsiasi delle seguenti stringhe:

"unspecified" Il valore predefinito. Il sistema sceglie l'orientamento. I criteri utilizzati, e di conseguenza le scelte effettuate in contesti specifici, possono variare da dispositivo a dispositivo.
"behind" Lo stesso orientamento dell'attività immediatamente sottostante nello stack di attività.
"landscape" Orientamento orizzontale (il display è più ampio che alto).
"portrait" Orientamento verticale (il display è più alto che largo).
"reverseLandscape" Orientamento orizzontale nella direzione opposta rispetto a quello normale. Aggiunta nel livello API 9.
"reversePortrait" Orientamento verticale nella direzione opposta rispetto al ritratto normale. Aggiunta nel livello API 9.
"sensorLandscape" Orientamento orizzontale, ma in base al sensore del dispositivo può essere normale o invertito. 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 verticale o normale 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, normale o invertito, in base al sensore del dispositivo e alle preferenze dell'utente. Aggiunta nel livello API 18.
"userPortrait" Orientamento verticale, ma può essere verticale o normale 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" Il sensore di orientamento del dispositivo determina l'orientamento. L'orientamento del display dipende da come l'utente tiene il dispositivo. Cambia quando l'utente ruota il dispositivo. Alcuni dispositivi, tuttavia, non ruotano tutti e quattro gli orientamenti possibili per impostazione predefinita. Per utilizzare tutti e quattro gli orientamenti, usa "fullSensor". Il sensore viene utilizzato anche se la rotazione basata sul sensore è bloccata dall'utente.
"fullSensor" Il sensore di orientamento del dispositivo determina l'orientamento per uno qualsiasi dei quattro orientamenti. Simile a "sensor", tranne per il fatto che consente uno qualsiasi dei quattro possibili orientamenti dello schermo indipendentemente da quello che il dispositivo supporta normalmente. Ad esempio, alcuni dispositivi non utilizzano in genere l'orientamento verticale o orizzontale inverso, ma ciò consente questi orientamenti. Aggiunta nel livello API 9.
"nosensor" L'orientamento è determinato senza riferimento a un sensore di orientamento fisico. Il sensore viene ignorato, quindi il display non ruota in base a come l'utente sposta il dispositivo.
"user" L'orientamento preferito corrente dell'utente.
"fullUser" Se l'utente ha bloccato la rotazione basata sui sensori, si comporta come user, altrimenti si comporta come fullSensor e consente uno dei quattro possibili orientamenti dello schermo. Aggiunta nel livello API 18.
"locked" Blocca l'orientamento alla rotazione corrente, a seconda di quale sia. Aggiunto nel livello API 18.

Nota: quando dichiari uno dei valori orizzontali o verticali, è considerato un requisito fondamentale per l'orientamento in cui viene eseguita l'attività. Il valore dichiarato consente di applicare filtri in base a servizi come Google Play, quindi la tua applicazione è disponibile soltanto 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.

Inoltre, dichiara 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. La piattaforma stessa non controlla se la tua app può essere installata quando un dispositivo supporta solo determinati orientamenti.

android:showForAllUsers

Se l'attività viene mostrata quando l'utente corrente del dispositivo è diverso da quello dell'utente che ha avviato l'attività. Puoi impostare questo attributo su un valore letterale, come "true" o "false", oppure puoi impostare l'attributo su un attributo risorsa o tema che contiene un valore booleano.

Questo attributo è stato aggiunto nel livello API 23.

android:stateNotNeeded
Indica se l'attività può essere terminata e riavviata senza aver salvato il suo stato. È "true" se può essere riavviato senza riferimento allo stato precedente e "false" se è richiesto quello precedente. Il valore predefinito è "false".

Solitamente, prima di arrestare temporaneamente un'attività per risparmiare risorse, viene chiamato il suo metodo onSaveInstanceState(). Questo metodo archivia lo stato attuale 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 al posto di Bundle, come quando l'attività viene avviata per la prima volta.

Un'impostazione "true" indica che l'attività può essere riavviata senza mantenere lo stato. Ad esempio, l'attività che mostra la schermata Home utilizza questa impostazione per assicurarsi che non venga rimossa se si verifica un arresto anomalo per qualche motivo.

android:supportsPictureInPicture

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

android:taskAffinity

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

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

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

Se questo attributo non è impostato, l'attività eredita l'affinità impostata per l'applicazione. Vedi l'attributo <application> dell'elemento taskAffinity. 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 potrebbe anche causare l'"avvio" di animazioni prima dell'avvio dell'attività, per corrispondere meglio all'aspetto effettivo dell'attività.

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

android:uiOptions

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

ValoreDescrizione
"none"Nessuna opzione UI aggiuntiva. Questa è l'impostazione predefinita.
"splitActionBarWhenNarrow"Aggiunge una barra nella parte inferiore dello schermo per visualizzare le attività nella barra delle app, nota anche come barra delle azioni, quando è vincolato a uno spazio orizzontale, ad esempio in modalità verticale su uno smartphone. Invece di mostrare un numero ridotto di attività nella barra delle app nella parte superiore dello schermo, la barra delle app è divisa nella sezione di navigazione superiore e nella barra in basso per le attività. Ciò significa che viene resa disponibile una quantità ragionevole di spazio non solo per le attività, ma anche per gli elementi di navigazione e titolo in alto. Le voci di menu non sono suddivise tra le due barre. Appaiono sempre insieme.

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

Questo attributo è stato aggiunto nel livello API 14.

android:windowSoftInputMode
L'interazione della finestra principale dell'attività con la finestra contenente la tastiera su schermo sullo schermo. L'impostazione di questo attributo influisce su due aspetti:
  • Indica se la tastiera su schermo è nascosta o visibile quando l'attività diventa al centro dell'attenzione dell'utente.
  • Indica se la finestra principale dell'attività viene ridimensionata per fare spazio alla tastiera su schermo o al suo riquadro dei contenuti per rendere visibile l'elemento attivo corrente quando parte della finestra è coperta dalla tastiera su schermo.

L'impostazione deve essere uno dei valori elencati nella seguente tabella o una combinazione di un valore "state..." più un valore "adjust...". L'impostazione di più valori in uno dei due 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 quelli impostati nel tema.

Valore Descrizione
"stateUnspecified" Non è specificato se la tastiera su schermo è 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 su schermo.

"stateUnchanged" La tastiera software viene mantenuta nello stato in cui si trovava l'ultima volta, visibile o nascosta, al momento dell'attività.
"stateHidden" La tastiera su schermo è nascosta quando l'utente sceglie l'attività, ovvero quando l'utente passa positivamente all'attività, anziché tornare indietro quando abbandona un'altra attività.
"stateAlwaysHidden" La tastiera su schermo è sempre nascosta quando lo stato attivo dell'input è attivo nella finestra principale dell'attività.
"stateVisible" La tastiera su schermo viene resa visibile quando l'utente sceglie l'attività, ovvero quando l'utente passa positivamente all'attività anziché tornare indietro quando esce da un'altra attività.
"stateAlwaysVisible" La tastiera su schermo è 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 su schermo o ai contenuti dello panoramica della finestra per rendere visibile l'elemento attivo corrente sullo schermo. Il sistema seleziona automaticamente una di queste modalità a seconda che i contenuti della finestra abbiano o meno visualizzazioni di layout in grado di scorrerne i contenuti. In questo caso, la finestra viene ridimensionata, partendo dal presupposto che lo scorrimento può rendere tutti i contenuti della finestra visibili all'interno di 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 su schermo.
"adjustPan" La finestra principale dell'attività non viene ridimensionata per liberare spazio per la tastiera su schermo. Invece, i contenuti della finestra eseguono automaticamente una panoramica in modo che l'elemento attivo corrente non sia mai oscurato dalla tastiera e gli utenti possano sempre vedere ciò che stanno digitando. Questa operazione è generalmente meno auspicabile del ridimensionamento, perché l'utente potrebbe dover chiudere la tastiera software per accedere e interagire con le parti oscurate della finestra.

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>