- 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:enableOnBackInvokedCallback=["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:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] 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:minAspectRatio="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>- possono contenere:
<intent-filter><meta-data><layout><property>- description:
- Dichiara un'attività (una sottoclasse di
Activity) che implementa parte dell'interfaccia utente visiva dell'applicazione. Tutte le attività devono essere rappresentate da elementi<activity>nel file manifest. Quelle non dichiarate non vengono visualizzate dal sistema e non vengono mai pubblicate. - attributi:
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
Displaydi 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 relativo stream di contesto, che si trova in un altro processo.Il valore predefinito di questo attributo è
false. android:allowTaskReparenting- Se l'attività può passare dall'attività che l'ha avviata all'attività per cui ha un'affinità quando quest'ultima viene portata in primo piano. È
"true"se può spostarsi e"false"se rimane con l'attività in cui è iniziato.Se questo attributo non è impostato, all'attività viene applicato il valore impostato dall'attributo
allowTaskReparentingcorrispondente dell'elemento<application>. Il valore predefinito è"false".Normalmente, quando viene avviata un'attività, questa viene associata all'attività che l'ha avviata e rimane lì per tutta la sua durata. Puoi utilizzare questo attributo per forzare la riassegnazione all'attività per cui ha un'affinità quando l'attività corrente non viene più visualizzata. In genere, viene utilizzato per spostare le attività di un'applicazione all'attività 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 browser, ma viene avviata nell'ambito dell'attività email. Se viene riassegnata all'attività del browser, viene visualizzata quando il browser torna in primo piano e non viene visualizzata quando l'attività email torna in primo piano.
L'affinità di un'attività è definita dall'attributo
taskAffinity. L'affinità di un'attività viene determinata leggendo l'affinità della sua attività principale. Pertanto, per definizione, un'attività radice si trova sempre in un'attività con la stessa affinità. Poiché le attività con modalità di avvio"singleTask"o"singleInstance"possono trovarsi solo nella radice di un'attività, il riassegnamento dell'attività principale è limitato alle modalità"standard"e"singleTop". Vedi anche l'attributolaunchMode. android:alwaysRetainTaskState- Se lo stato dell'attività in cui si trova l'attività viene sempre
gestito dal sistema.
"true"se lo è 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à dallo stack sopra l'attività radice, in determinate situazioni quando l'utente seleziona di nuovo 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 arrivano. Ciò è 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- 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. Questa azione sostituisce l'utilizzo diFLAG_ACTIVITY_RETAIN_IN_RECENTSda parte del chiamante. Deve essere un valore booleano, ovvero"true"o"false". android:banner- Una risorsa drawable
che fornisce un banner grafico esteso per l'elemento associato. Utilizza questo tag 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 disegnabile contenente l'immagine, ad esempio
"@drawable/banner". Non è presente alcun banner predefinito.Per maggiori informazioni, consulta 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 che potrebbe o meno eseguire Android. Deve essere un valore booleano, ovvero
"true"o"false".Il valore predefinito di questo attributo è
"true". android:clearTaskOnLaunch- 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 alla sua attività principale e"false"in caso contrario. Il valore predefinito è"false". Questo attributo è significativo solo per le attività che iniziano una nuova attività, ovvero l'attività principale. Viene ignorato per tutte le altre attività del compito.Quando il valore è
"true", ogni volta che gli utenti iniziano l'attività, vengono portati alla sua attività principale, indipendentemente da ciò che stavano facendo nell'attività e indipendentemente 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'attributoalwaysRetainTaskState.Supponiamo che l'utente avvii l'attività P dalla schermata Home e da lì passi all'attività Q. L'utente tocca Home e poi torna all'attività P. Normalmente, l'utente vede l'attività Q, perché è l'ultima che ha svolto nell'attività di P. Tuttavia, se P imposta questo flag su
"true", tutte le attività 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
allowTaskReparentingsono entrambi"true", tutte le attività che possono essere riassegnate vengono spostate all'attività con cui condividono un'affinità. Le attività rimanenti vengono quindi eliminate.Questo attributo viene ignorato se
FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDnon è impostato. android:colorModeSpecifica la modalità colore dell'attività. Se specificato, può essere
hdrowideColorGamut.Se
hdr, richiede che l'attività venga visualizzata in un intervallo dinamico elevato se il dispositivo lo supporta.Se
wideColorGamut, richiede che l'attività venga visualizzata in modalità ad ampia gamma di colori su dispositivi compatibili. In modalità con gamma cromatica ampia, una finestra può essere visualizzata al di fuori della gammaSRGBper mostrare colori più vivaci. Se il dispositivo non supporta il rendering della gamma cromatica estesa, questo attributo non ha effetto. Per ulteriori informazioni sul rendering in modalità colore ampio, vedi Migliorare la grafica con contenuti a colori ampi.android:configChanges- Elenca le modifiche alla configurazione gestite dall'attività stessa. Quando si verifica una modifica della configurazione in fase di runtime, l'attività viene arrestata e riavviata 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à colore dello schermo (gamma di colori o gamma dinamica) sono cambiate.
Nota:la modalità colore richiesta dall'attività con l'attributo
colorModeo in fase di runtime è diversa dalla funzionalità per le diverse modalità colore. Un'attività che cambia la modalità colore che utilizza non causa una modifica della configurazione, perché le funzionalità di colore del display non sono cambiate."density"Una modifica alla densità di visualizzazione, ad esempio quando l'utente specifica una scala di visualizzazione diversa o un altro display è ora attivo.
Aggiunto nel livello API 24.
"fontScale"Una modifica del fattore di ridimensionamento dei caratteri, ad esempio quando l'utente seleziona una nuova dimensione globale dei caratteri. "fontWeightAdjustment"L'aumento dello spessore del carattere è cambiato. "grammaticalGender"Il genere grammaticale della lingua è cambiato. Vedi GrammaticalInflectionManager.Aggiunto 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 da sinistra a destra (LTR) a da destra a sinistra (RTL).
Aggiunto nel livello API 17.
"locale"Una modifica delle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua in cui visualizzare il testo. "mcc"Una modifica al Mobile Country Code (MCC) IMSI quando viene rilevata una SIM che aggiorna l'MCC. "mnc"Una modifica al codice di rete mobile (MNC) IMSI quando viene rilevata una SIM che aggiorna l'MNC. "navigation"Modifica dell'assistente vocale al tipo di navigazione (trackball o D-pad). Normalmente, 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."screenLayout"Una modifica al layout dello schermo, ad esempio quando viene attivato un altro display. "screenSize"Una modifica delle dimensioni dello schermo attualmente disponibili.
Rappresenta una modifica delle dimensioni attualmente disponibili, rispetto all'aspect ratio corrente, quindi cambia quando l'utente passa dalla modalità orizzontale a quella verticale.
Aggiunto nel livello API 13.
"smallestScreenSize"Una modifica alle dimensioni dello schermo fisico.
Ciò rappresenta una modifica delle dimensioni indipendentemente dall'orientamento, quindi cambia solo quando cambiano le dimensioni fisiche effettive dello schermo, ad esempio quando si passa a un display esterno. Una modifica a questa configurazione corrisponde a una modifica nella configurazione
smallestWidth.Aggiunto nel livello API 13.
"touchscreen"Una modifica alla modalità touch screen, ad esempio quando l'utente collega o scollega una periferica di input o sposta l'app tra diversi display. "uiMode"Una modifica alla modalità dell'interfaccia utente, ad esempio quando l'utente posiziona il dispositivo in una base di ricarica per la scrivania o l'auto oppure quando cambia la modalità notte. Per ulteriori informazioni sulle diverse modalità della UI, consulta UiModeManager.Aggiunto 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 di nuovo tutte le risorse, inclusi i layout di visualizzazione e le risorse disegnabili, per gestire correttamente la modifica.Nota:per gestire le modifiche alla configurazione relative alla modalità multi-finestra, utilizza sia
"screenLayout"che"smallestScreenSize". La funzionalità multi-finestra è supportata in Android 7.0 (livello API 24) o versioni successive. android:directBootAwareIndica se l'attività è compatibile con l'avvio diretto, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.
Nota: durante l'avvio 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 come viene aggiunta una nuova istanza di un'attività 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à la cui intent di base ComponentNamee URI dati corrispondono a quelli dell'intent di avvio. Se il sistema trova un'attività di questo tipo, la cancella e si riavvia, con l'attività radice che riceve una chiamata aonNewIntent(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 è già aperto. Equivale a impostare i flag FLAG_ACTIVITY_NEW_DOCUMENTeFLAG_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 fa per impostazione predefinita: mostra 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. L'impostazione di questo valore sostituisce il comportamento dei flagFLAG_ACTIVITY_NEW_DOCUMENTeFLAG_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à viene definita conlaunchMode="standard". Se questo attributo non è specificato, viene utilizzatodocumentLaunchMode="none". android:enabled- Indica se l'attività può essere istanziata dal sistema. È
"true"se può esserlo e"false"in caso contrario. Il valore predefinito è"true".L'elemento
<application>ha un proprio attributoenabledche si applica a tutti i componenti dell'applicazione, incluse le attività. Gli attributi<application>e<activity>devono essere entrambi"true", come sono per impostazione predefinita, affinché il sistema possa creare un'istanza dell'attività. Se uno dei due è"false", non può essere istanziato. android:enableOnBackInvokedCallbackQuesto flag ti consente di disattivare le animazioni di sistema predittive a livello di attività.
Imposta
android:enableOnBackInvokedCallback=falseper disattivare le animazioni del gesto Indietro predittivo a livello di attività e indica al sistema di ignorare le chiamate all'API della piattaformaOnBackInvokedCallback.android:excludeFromRecentsIndica se l'attività avviata da questa attività è esclusa dalla schermata Recenti. ovvero, 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:exportedIndica se l'attività può essere avviata da componenti di altre applicazioni:
- Se è
"true", l'attività è accessibile a qualsiasi app e può essere avviata con 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 per intent.
Se un'attività nella tua app include filtri per intent, imposta questo elemento su
"true"per consentire ad altre app di avviarla. Ad esempio, se l'attività è l'attività principale dell'app e includecategoryandroid.intent.category.LAUNCHER.Se questo elemento è impostato su
"false"e un'app tenta di avviare l'attività, il sistema genera unActivityNotFoundException.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.- Se è
android:finishOnTaskLaunch- Se un'istanza esistente dell'attività viene chiusa,
ad eccezione dell'attività principale, quando l'utente riavvia l'attività scegliendola nella
schermata Home. È
"true"se è spento e"false"in caso contrario. Il valore predefinito è"false".Se questo attributo e
allowTaskReparentingsono entrambi"true", questo attributo ha la precedenza sull'altro. L'affinità dell'attività viene ignorata. L'attività non viene riclassificata, ma eliminata.Questo attributo viene ignorato se
FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDnon è impostato. android:hardwareAccelerated- Indica se il rendering con accelerazione hardware è attivato 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 per le applicazioni per migliorare le prestazioni di molte operazioni grafiche 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 più fluide, scorrimento più fluido e una migliore 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 vengono accelerate. Se attivi il renderer con accelerazione hardware, verifica se la tua applicazione può utilizzare il renderer senza errori.
android:iconUn'icona che rappresenta l'attività. L'icona viene mostrata agli utenti quando è necessaria una rappresentazione dell'attività sullo schermo. Ad esempio, le icone delle attività che avviano le attività vengono visualizzate nella finestra di avvio. L'icona è spesso accompagnata da un'etichetta. Per informazioni sull'etichetta, consulta l'attributo
android:label.Questo attributo è impostato come riferimento a una risorsa disegnabile contenente la definizione dell'immagine. Se non è impostata, viene utilizzata l'icona specificata per l'applicazione nel suo complesso. Per ulteriori informazioni, consulta l'attributo
icondell'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 ulteriori informazioni, consulta l'attributoicondell'elemento<intent-filter>.android:immersive- Imposta l'impostazione della modalità immersiva per l'attività corrente. Se è
"true", il membroActivityInfo.flagsha sempre il bitFLAG_IMMERSIVEimpostato, anche se la modalità immersiva cambia in fase di runtime utilizzando il metodosetImmersive(). android:intentMatchingFlags-
Utilizza questo attributo per perfezionare il modo in cui il sistema associa gli intent in entrata ai componenti dell'app. Per impostazione predefinita, non vengono applicate regole di corrispondenza speciali.
Il valore impostato su un tag
<activity>sostituisce il valore impostato sul tag<application>.Il valore deve essere uno o più dei seguenti flag, separati da "
|":Flag Descrizione noneDisattiva tutte le regole di corrispondenza speciali per gli intent in entrata. Quando specifichi più flag, i valori in conflitto vengono risolti dando la precedenza al flag none.enforceIntentFilterApplica una corrispondenza più rigorosa per gli intent in entrata:
- Gli intent espliciti devono corrispondere al filtro per intent del componente di destinazione.
- Gli intent senza un'azione non corrispondono ad alcun filtro per intent.
allowNullActionRilassa le regole di corrispondenza per consentire la corrispondenza degli intent senza un'azione. Questo flag viene utilizzato insieme a
enforceIntentFilterper ottenere il seguente comportamento:- Gli intent espliciti devono corrispondere al filtro per intent del componente di destinazione.
- Gli intent senza un'azione possono corrispondere a qualsiasi filtro per intent.
Per ulteriori informazioni, consulta la sezione Intent più sicuri nelle modifiche al comportamento di Android 16 (livello API 36).
android:labelUn'etichetta leggibile dall'utente per l'attività. L'etichetta viene visualizzata sullo schermo quando l'attività viene rappresentata all'utente. Viene spesso visualizzato insieme all'icona dell'attività. Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Consulta l'attributo
labeldell'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 ulteriori informazioni, consulta l'attributolabeldell'elemento<intent-filter>.L'etichetta è impostata come riferimento a una risorsa stringa in modo che possa essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per comodità durante lo sviluppo dell'applicazione, può essere impostato anche come stringa non elaborata.
android:launchModeUn'istruzione su come viene avviata l'attività. Esistono cinque modalità, che funzionano in combinazione con i flag di attività (costanti
FLAG_ACTIVITY_*) negli oggettiIntentper determinare cosa succede quando l'attività viene chiamata 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 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 istanziata più volte.Le istanze possono appartenere a qualsiasi attività e possono trovarsi in qualsiasi punto dell'attività. In genere, vengono avviate nell'attività che ha chiamato
startActivity(), a meno che l'oggettoIntentnon contenga un'istruzioneFLAG_ACTIVITY_NEW_TASK, nel qual caso viene scelta un'attività diversa. Per ulteriori informazioni, consulta l'attributotaskAffinity.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à"singleInstancePerTaskpuò essere istanziata più volte in attività diverse quandoFLAG_ACTIVITY_MULTIPLE_TASKoFLAG_ACTIVITY_NEW_DOCUMENTè impostato.Un'attività con la modalità di avvio
"singleTask"combina i comportamenti di"singleInstance"e"singleInstancePerTask": l'attività può essere istanziata più volte e può essere posizionata ovunque in un'attività dello stessotaskAffinity. Tuttavia, il dispositivo può contenere una sola attività per la localizzazione dell'attività"singleTask"alla radice dell'attività.Le modalità
"standard"e"singleTop"differiscono l'una dall'altra per un aspetto: ogni volta che viene rilevato un nuovo intent per un'attività"standard", viene creata una nuova istanza della classe per rispondere a questo intent. Ogni intent gestisce un singolo intent. Allo stesso modo, è possibile creare una nuova istanza di un'attività"singleTop"per gestire un nuovo intent.Tuttavia, se l'attività di destinazione ha già un'istanza dell'attività nella parte superiore dello stack, questa 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 in cima allo stack, o se si trova in cima a uno stack, ma non nell'attività di destinazione, viene creata una nuova istanza e inserita nello stack.Allo stesso modo, 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'intentupcontieneFLAG_ACTIVITY_CLEAR_TOP), l'attività principale viene portata in primo piano nello stack e il suo stato viene mantenuto.L'intent di navigazione viene ricevuto dal metodo
onNewIntent()dell'attività principale. Se l'attività padre ha la modalità di avviostandarde l'intentupnon contieneFLAG_ACTIVITY_CLEAR_TOP, l'attività corrente e la relativa attività padre vengono rimosse dallo stack e viene creata una nuova istanza dell'attività padre per ricevere l'intent di navigazione.La modalità
"singleInstance"si differenzia da"singleTask"e"singleInstancePerTask"solo per un aspetto: un'attività con la modalità di avvio"singleTask"o"singleInstancePerTask"consente ad altre attività, necessariamente"standard"e"singleTop", di far parte della sua attività.Un'attività
"singleInstance", invece, non consente ad altre attività di far parte del suo compito. Deve essere l'unica attività del compito. Se avvia un'altra attività, questa viene assegnata a un'altra attività, come seFLAG_ACTIVITY_NEW_TASKfosse nell'intent.Casi d'uso Modalità di lancio Più istanze? Commenti Avvii normali per la maggior parte delle attività "standard"Sì Predefinita. Il sistema crea sempre una nuova istanza dell'attività nell'attività di destinazione e indirizza l'intent. "singleTop"Condizionatamente Se un'istanza dell'attività esiste già nella parte superiore dell'attività di destinazione, il sistema indirizza l'intent a quell'istanza tramite una chiamata al relativo metodo onNewIntent(), anziché creare una nuova istanza dell'attività.Lanci specializzati
(non consigliati per l'uso generale)"singleTask"Condizionatamente 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à e si trova nella 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 l'unico membro del suo compito."singleInstancePerTask"Condizionatamente L'attività può essere eseguita solo come attività principale del task, la prima attività che ha creato il task, pertanto esiste una sola istanza di questa attività in un task. Tuttavia, l'attività può essere istanziata più volte in attività diverse. Come mostrato nella tabella precedente,
"standard"è la modalità predefinita ed è adatta alla 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. che si traduce in un modello di interazione probabilmente sconosciuto agli utenti e molto diverso dalla maggior parte delle altre applicazioni.Indipendentemente dalla modalità di avvio scelta, assicurati di testare l'usabilità dell'attività durante l'avvio e quando torni indietro da altre attività e altri task utilizzando il pulsante Indietro.
Per saperne di più sulle modalità di avvio e sulla loro interazione con i flag
Intent, vedi Attività e back stack.android:lockTaskMode- Determina il modo in cui il sistema presenta questa attività quando il dispositivo è in esecuzione in
modalità di blocco attività.
Android può eseguire attività in modo immersivo, simile a un kiosk, chiamato modalità di blocco attività. Quando il sistema è in modalità di blocco attività, in genere gli utenti del dispositivo non possono visualizzare le notifiche, accedere alle app non consentite 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 possono essere eseguite quando il sistema è in modalità di blocco attività. Le app di sistema e con privilegi, tuttavia, possono essere eseguite in modalità di blocco attività senza essere incluse nella lista consentita.
Il valore può essere una qualsiasi delle seguenti stringhe
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 chiamando startLockTask()."never"Le attività non vengono avviate in modalità
lockTaske 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 non privilegiate con questo valore vengono trattate come
normal."if_whitelisted"Se il DPC autorizza questo pacchetto utilizzando DevicePolicyManager.setLockTaskPackages(), questa modalità è identica aalways, tranne per il fatto che l'attività deve chiamarestopLockTask()prima di poter terminare se è l'ultimo task bloccato. Se il DPC non autorizza questo pacchetto, questa modalità è identica anormal."always"Le attività basate su questa attività vengono sempre avviate in modalità di blocco attività. Se il sistema è già in modalità di blocco attività quando viene avviata questa attività, la nuova attività viene avviata sopra quella corrente. Le attività avviate in questa modalità possono uscire dalla modalità di blocco dell'attività 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à 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 numeri interi da 1 a 50 o da 1 a 25 sui dispositivi con poca memoria. Lo zero non è valido. Il valore predefinito è 16.
android:maxAspectRatio-
Il formato massimo supportato dall'attività.
Se l'app viene eseguita su un dispositivo con proporzioni più ampie, il sistema la letterbox automaticamente, lasciando inutilizzate alcune parti dello schermo in modo che l'app possa essere eseguita con le proporzioni massime specificate.
Il formato massimo è espresso come forma decimale del quoziente della dimensione più lunga 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 pari o superiore a 1,33. Sui dispositivi indossabili, deve essere 1.0 o superiore. In caso contrario, il sistema ignora il valore impostato.
Per saperne di più su questo attributo, consulta R.attr.maxAspectRatio.
android:minAspectRatio-
Il formato minimo supportato dall'attività.
Se l'app viene eseguita su un dispositivo con un formato più stretto, il sistema aggiunge automaticamente le bande nere, lasciando porzioni dello schermo inutilizzate in modo che l'app possa essere eseguita con il formato minimo specificato.
Le proporzioni minime sono espresse come forma decimale del quoziente della dimensione più lunga del dispositivo divisa per la dimensione più corta. Ad esempio, se le proporzioni di visualizzazione sono 4:3, imposta il valore minimo delle proporzioni su 1,33.
Il valore deve essere maggiore o uguale a 1,0, altrimenti il sistema ignora il valore impostato.
Per ulteriori informazioni su questo attributo, vedi R.attr.minAspectRatio.
android:multiprocess- Indica se un'istanza dell'attività può essere avviata nel processo del componente
che l'ha avviata.
"true"se è possibile,"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 è impostato su
"true", le istanze dell'attività possono essere eseguite in più processi, consentendo al sistema di creare istanze 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 è in genere un nome di classe completo, ad esempio"com.example.project.ExtracurricularActivity". Tuttavia, come abbreviazione, se il primo carattere del nome è un punto, ad esempio".ExtracurricularActivity", viene aggiunto allo spazio dei nomi specificato nel filebuild.gradle.Una volta pubblicata l'applicazione, non modificare questo nome, a meno che tu non imposti
android:exported="false". Non esiste un valore predefinito. È necessario specificare il nome. android:noHistory- Indica se l'attività viene rimossa dalla pila di attività e
terminata chiamando il relativo metodo
finish()quando l'utente esce dall'attività e questa non è più visibile sullo schermo."true"se è terminato e"false"in caso contrario. Il valore predefinito è"false".Un valore di
"true"significa che l'attività non lascia traccia storica. Non rimane nello stack delle attività per l'attività, quindi l'utente non può tornarci. 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 del genitore logico dell'attività. Il nome qui deve corrispondere al nome della classe
assegnato all'attributo
android:namedell'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ò anche utilizzare queste informazioni per sintetizzare una cronologia delle attività 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, leggi Fornire la navigazione verso l'alto.
Questo attributo è stato introdotto nel livello API 16.
android:persistableModeDefinisce come viene conservata un'istanza di un'attività 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à che si trovano più in alto nel back stack dell'attività; viene mantenuta qualsiasi attività che imposta il valore di questo attributo supersistAcrossReboots.Se utilizzi questo attributo, devi impostarne il valore su uno dei seguenti:
Valore Descrizione persistRootOnlyValore predefinito. Quando il sistema viene riavviato, l'attività viene mantenuta, 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 utilizzareonSaveInstanceState()per mantenere lo stato dell'attività principale dell'app dopo il riavvio di un dispositivo.Nota : questo valore dell'attributo influisce sul comportamento della tua app solo se è impostato sull'attività principale dell'app.
persistAcrossRebootsLo stato di questa attività viene mantenuto, così come lo stato di ogni attività più in alto nello stack indietro che ha il proprio attributo
persistableModeimpostato supersistAcrossReboots. Se un'attività non ha un attributopersistableModeimpostato supersistAcrossRebootso se viene avviata utilizzando il flagIntent.FLAG_ACTIVITY_NEW_DOCUMENT, l'attività, insieme a tutte le attività più in alto nello stack indietro, non vengono conservate.Quando un intent carica un'attività il cui attributo
persistableModeè impostato supersistAcrossRebootsnella tua app, l'attività riceve un oggettoPersistableBundlenel suo metodoonCreate(). Pertanto, puoi utilizzareonSaveInstanceState()per conservare lo stato di un'attività dopo il riavvio di un dispositivo, a condizione che l'attributopersistableModesia impostato supersistAcrossReboots.Nota: questo valore dell'attributo influisce sul comportamento della tua app anche se è impostato su un'attività diversa dall'attività principale dell'app.
persistNeverLo stato dell'attività non viene conservato.
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 altrimenti farla rispondere a un intent. Se a un chiamante di
startActivity()ostartActivityForResult()non viene concessa l'autorizzazione specificata, il suo intent non viene recapitato all'attività.Se questo attributo non è impostato, all'attività si applica l'autorizzazione impostata dall'attributo
permissiondell'elemento<application>. Se nessuno dei due attributi è impostato, l'attività non è protetta da un'autorizzazione.Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni della panoramica del manifest dell'app e i suggerimenti per la sicurezza.
android:processIl 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 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 i due punti (
:), viene creato un nuovo processo, privato per l'applicazione, quando è necessario e l'attività viene eseguita in questo processo.Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con quel nome, a condizione che abbia l'autorizzazione per farlo. Ciò consente ai componenti di applicazioni diverse di condividere un processo, riducendo l'utilizzo delle risorse.
L'attributo
processdell'elemento<application>può impostare un nome di processo predefinito diverso per tutti i componenti.android:relinquishTaskIdentityIndica se l'attività cede i propri identificatori di attività a un'attività sopra di essa nello stack di attività. Un'attività la cui attività radice ha questo attributo impostato su
"true"sostituisce l'intentIntentcon quello dell'attività successiva nell'attività.Se anche l'attività successiva ha questo attributo impostato su
"true", restituisce l'intent di baseIntenta qualsiasi attività che avvia nella stessa attività. Questo continua per ogni attività finché non viene rilevata un'attività con questo attributo impostato su"false". Il valore predefinito è"false".Se questo attributo è impostato su
"true", l'attività può utilizzareActivityManager.TaskDescriptionper modificare etichette, colori e icone nella schermata Recenti.android:requireContentUriPermissionFromCaller-
Specifica le autorizzazioni necessarie per avviare questa attività quando vengono passati 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'invocatore. Se l'invocatore non dispone delle autorizzazioni richieste, l'avvio dell'attività verrà negato tramite unSecurityException.Tieni presente che l'applicazione funziona per gli URI dei contenuti all'interno di
Intent.getData(),Intent.EXTRA_STREAM, eIntent.getClipData().Può essere un valore 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 Opzione predefinita, non sono richieste autorizzazioni specifiche. lettura 1 Impone al chiamante di disporre dell'accesso in lettura agli URI dei contenuti passati. readAndWrite 4 Impone al chiamante di disporre dell'accesso in lettura e scrittura agli URI dei contenuti passati. readOrWrite 3 Impone al chiamante di disporre dell'accesso in lettura o scrittura agli URI dei contenuti passati. scrittura 2 Impone al chiamante di disporre dell'accesso in scrittura agli URI dei contenuti passati. 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 in 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 mettere l'attività in modalità multi-finestra con la modalità di compatibilità applicata.L'impostazione di questo attributo su
"false"non garantisce che non siano presenti altre app in modalità multi-finestra visibili sullo schermo, ad esempio in 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 dell'attributo è
"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 messa in modalità di compatibilità quando necessario per rispettare le dimensioni del display. - Schermi piccoli (sw < 600 dp): se
resizeableActivity="true"e la larghezza minima e l'altezza minima dell'attività rientrano nei requisiti per la modalità multi-finestra, l'app supporta la modalità multi-finestra. SeresizeableActivity="false", l'app non supporta la modalità multi-finestra indipendentemente dalla larghezza e dall'altezza minime dell'attività.
Il valore dell'attività principale di un'attività viene applicato a tutte le attività aggiuntive avviate nell'attività. ovvero, se l'attività radice di un'attività è ridimensionabile, il sistema considera tutte le altre attività dell'attività come ridimensionabili. Se l'attività radice non è ridimensionabile, le altre attività nel task non sono ridimensionabili.
Nota:il valore dell'attività principale di un'attività viene applicato a tutte le attività aggiuntive avviate nell'attività. ovvero, 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à nel task non sono ridimensionabili.
- 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
android:screenOrientationL'orientamento richiesto dell'attività.
Quando un'attività riempie l'intero schermo, l'orientamento richiesto funge da suggerimento per modificare 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 singoli schermi (ad esempio lo schermo di un tablet di un dispositivo pieghevole) in modo che ignorino questo suggerimento e forzino un'attività a essere letterboxata 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à multi-finestra, l'orientamento richiesto non funge da suggerimento per l'orientamento generale. Se l'attività è letterbox, l'orientamento richiesto influisce sul letterbox applicato all'attività.
Il valore può essere una delle seguenti stringhe:
"unspecified"Il valore predefinito. Il sistema sceglie l'orientamento. La norma che utilizza e, di conseguenza, le scelte effettuate in contesti specifici, potrebbero variare da dispositivo a dispositivo. "behind"Lo stesso orientamento dell'attività immediatamente sottostante nello stack delle attività. "landscape"Orientamento orizzontale (il display è più largo che alto). "portrait"Orientamento verticale (il display è più alto che largo). "reverseLandscape"Orientamento orizzontale nella direzione opposta rispetto al normale orientamento orizzontale. Aggiunto nel livello API 9. "reversePortrait"Orientamento verticale nella direzione opposta rispetto al normale orientamento verticale. Aggiunto nel livello API 9. "sensorLandscape"Orientamento orizzontale, ma può essere normale o inverso in base al sensore del dispositivo. Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore. Aggiunto nel livello API 9. "sensorPortrait"Orientamento verticale, ma può essere normale o invertito 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. Aggiunto nel livello API 9. "userLandscape"Orientamento orizzontale, ma può essere normale o inverso in base al sensore del dispositivo e alle preferenze dell'utente. Aggiunto nel livello API 18. "userPortrait"Orientamento verticale, ma può essere normale o 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. Aggiunto nel livello API 18. "sensor"Il sensore di orientamento del dispositivo determina l'orientamento. L'orientamento del display dipende da come l'utente tiene in mano il dispositivo. Cambia quando l'utente ruota il dispositivo. Alcuni dispositivi, tuttavia, non ruotano in tutte e quattro le possibili orientazioni per impostazione predefinita. Per utilizzare tutti e quattro gli orientamenti, utilizza "fullSensor". Il sensore viene utilizzato anche se l'utente ha bloccato la rotazione basata sul sensore."fullSensor"Il sensore di orientamento del dispositivo determina l'orientamento per una delle quattro orientamenti. Questa impostazione è simile a "sensor", ma consente una qualsiasi delle quattro possibili orientamenti dello schermo indipendentemente da ciò che il dispositivo supporta normalmente. Ad esempio, alcuni dispositivi normalmente non utilizzano l'orientamento verticale inverso o orizzontale inverso, ma questa impostazione attiva questi orientamenti. Aggiunto 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 a come l'utente sposta il dispositivo. "user"L'orientamento preferito attuale dell'utente. "fullUser"Se l'utente ha bloccato la rotazione basata sui sensori, il comportamento è lo stesso di user, altrimenti è lo stesso difullSensore consente una delle quattro possibili orientamenti dello schermo. Aggiunto nel livello API 18."locked"Blocca l'orientamento sulla rotazione corrente, qualunque essa sia. Aggiunto nel livello API 18. Nota:quando dichiari uno dei valori orizzontale o verticale, questo viene considerato un requisito rigido per l'orientamento in cui viene eseguita l'attività. Il valore che dichiari consente il filtraggio in base a servizi come Google Play, in modo che la tua applicazione sia 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"/>. Questo è un comportamento di filtraggio 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-
Indica se l'attività viene mostrata quando l'utente attuale del dispositivo è diverso dall'utente che ha avviato l'attività. Puoi impostare questo attributo su un valore letterale, ad esempio
"true"o"false", oppure puoi impostarlo su un attributo di 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 correttamente
senza aver salvato il suo stato. È
"true"se può essere riavviato senza riferimento al suo stato precedente ed è"false"se è necessario il suo stato precedente. Il valore predefinito è"false".Normalmente, prima che un'attività venga chiusa temporaneamente per risparmiare risorse, viene chiamato il relativo metodo
onSaveInstanceState(). Questo metodo memorizza lo stato attuale dell'attività in un oggettoBundle, che viene poi passato aonCreate()quando l'attività viene riavviata. Se questo attributo è impostato su"true",onSaveInstanceState()potrebbe non essere chiamato eonCreate()viene passatonullanzichéBundle, come avviene 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 arresta in modo anomalo per qualche motivo. android:supportsPictureInPicture-
Specifica se l'attività supporta la visualizzazione picture in picture.
android:taskAffinityL'attività per 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à è determinata dall'affinità della sua attività principale.
L'affinità determina due cose: l'attività a cui viene riassegnata l'attività (vedi l'attributo
allowTaskReparenting) e l'attività che contiene l'attività quando viene avviata con il flagFLAG_ACTIVITY_NEW_TASK.Per impostazione predefinita, tutte le attività di un'applicazione hanno la stessa affinità. Puoi impostare questo attributo per raggrupparli 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. Vedi l'attributo
taskAffinitydell'elemento<application>. Il nome dell'affinità predefinita per un'applicazione è lo spazio dei nomi impostato nel filebuild.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 per utilizzare questo
themee potrebbero anche essere visualizzate animazioni di "avvio" 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 complesso dall'attributo
themedell'elemento<application>. Se anche questo attributo non è impostato, viene utilizzato il tema di sistema predefinito. Per saperne di più, consulta Stili e temi. android:uiOptionsOpzioni aggiuntive per l'interfaccia utente di un'attività. Deve essere uno dei seguenti valori.
Valore Descrizione "none"Nessuna opzione aggiuntiva dell'interfaccia utente. 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 lo spazio orizzontale è limitato, ad esempio in modalità verticale su un dispositivo mobile. Invece di un piccolo numero di elementi di azione visualizzati nella barra dell'app nella parte superiore dello schermo, la barra dell'app è suddivisa nella sezione di navigazione superiore e nella barra inferiore per gli elementi di azione. Ciò significa che viene reso disponibile uno spazio ragionevole non solo per gli elementi di azione, ma anche per gli elementi di navigazione e titolo nella parte superiore. Le voci di menu non sono suddivise tra le due barre. Appaiono sempre insieme. Per saperne di più 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 su schermo. L'impostazione di questo attributo influisce su due
cose:
- Indica se la tastiera su schermo è nascosta o visibile quando l'attività diventa il centro dell'attenzione dell'utente.
- Se la finestra principale dell'attività viene ridimensionata per fare spazio alla tastiera su schermo o se i suoi contenuti vengono spostati per rendere visibile lo stato attivo corrente quando parte della finestra è coperta dalla tastiera su schermo.
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 due gruppi, ad esempio più valori"state...", produce risultati non definiti. 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"Se la tastiera su schermo è nascosta o visibile non è specificato. Il sistema sceglie uno stato appropriato o si basa sull'impostazione del tema. Questa è l'impostazione predefinita per il comportamento della tastiera su schermo.
"stateUnchanged"La tastiera su schermo viene mantenuta nello stato in cui si trovava l'ultima volta, visibile o nascosta, quando l'attività viene visualizzata in primo piano. "stateHidden"La tastiera su schermo viene nascosta quando l'utente sceglie l'attività, ovvero quando l'utente passa all'attività, anziché quando torna indietro da un'altra attività. "stateAlwaysHidden"La tastiera su schermo è sempre nascosta quando la finestra principale dell'attività ha lo stato attivo. "stateVisible"La tastiera su schermo viene visualizzata quando l'utente sceglie l'attività, ovvero quando l'utente naviga in avanti verso l'attività, anziché tornare indietro quando lascia 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'Activity viene ridimensionata per fare spazio alla tastiera su schermo o se i contenuti della finestra vengono spostati per rendere visibile sullo schermo lo stato attivo corrente. Il sistema seleziona automaticamente una di queste modalità a seconda che i contenuti della finestra abbiano visualizzazioni del layout che possono scorrere i propri contenuti. Se esiste una visualizzazione di questo tipo, la finestra viene ridimensionata, partendo dal 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 virtuale sullo schermo. "adjustPan"La finestra principale dell'attività non viene ridimensionata per fare spazio alla tastiera virtuale. I contenuti della finestra vengono invece spostati automaticamente in modo che la messa a fuoco corrente non venga mai oscurata dalla tastiera e gli utenti possano sempre vedere ciò che stanno digitando. In genere, questa soluzione è meno desiderabile rispetto al ridimensionamento, perché l'utente potrebbe dover chiudere la tastiera software per accedere e interagire con le parti oscurate della finestra. "adjustNothing"La finestra principale dell'attività non viene ridimensionata o spostata per fare spazio alla tastiera su schermo. L'attività è responsabile di fare spazio alla tastiera virtuale utilizzando gli inset della finestra. Per le attività che gestiscono correttamente gli inset 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.
- introdotta in:
- Livello API 1 per tutti gli attributi, tranne
noHistoryewindowSoftInputMode, che sono stati aggiunti nel livello API 3. - Vedi anche:
<application><activity-alias>
<attività>
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2026-07-03 UTC.
[null,null,["Ultimo aggiornamento 2026-07-03 UTC."],[],[]]