- syntax:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] android:directBootAware=["true" | "false"] android:documentLaunchMode=["intoExisting" | "always" | "none" | "never"] android:enabled=["true" | "false"] android: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: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>
- contenuti in:
<application>
- può contenere:
<intent-filter>
<meta-data>
<layout>
- description:
- Dichiara un'attività (una sottoclasse
Activity
) che implementa parte dell'interfaccia utente visiva dell'applicazione. Tutte le attività devono essere rappresentate da elementi<activity>
nel file manifest. Gli annunci non dichiarati non vengono visti dal sistema e non vengono mai pubblicati. - attributes:
android:allowEmbedded
-
Indica che l'attività può essere avviata come attività secondaria incorporata di un'altra attività, in particolare nel caso in cui l'attività secondaria si trovi in un contenitore, ad esempio un
Display
di proprietà di un'altra attività. Ad esempio, le attività utilizzate per le notifiche personalizzate di Wear lo dichiarano in modo che Wear possa visualizzare l'attività nel proprio stream di contesto, che risiede in un altro processo.Il valore predefinito di questo attributo è
false
. android:allowTaskReparenting
- Indica se l'attività può passare dall'attività che l'ha avviata all'attività con cui ha affinità quando questa viene messa in primo piano la volta successiva. È
"true"
se può spostarsi e"false"
se rimane con l'attività in cui è stato avviato.Se questo attributo non è impostato, all'attività viene applicato il valore impostato dall'attributo
allowTaskReparenting
corrispondente dell'elemento<application>
. Il valore predefinito è"false"
.Normalmente, quando un'attività viene avviata, viene associata all'attività che l'ha avviata e rimane lì per tutta la sua durata. Puoi utilizzare questo attributo per forzare la ridefinizione della parentela con l'attività con cui ha affinità quando l'attività corrente non viene più visualizzata. In genere, viene utilizzato per spostare le attività di un'applicazione nella task principale associata a quell'applicazione.
Ad esempio, se un messaggio email contiene un link a una pagina web, facendo clic sul link viene visualizzata un'attività che può mostrare la pagina. Questa attività è definita dall'applicazione del browser, ma viene avviata nell'ambito dell'attività email. Se viene impostato come attività principale per l'attività del browser, viene visualizzato quando il browser viene visualizzato in primo piano e non è presente quando viene visualizzata nuovamente l'attività email.
L'affinità di un'attività è definita dall'attributo
taskAffinity
. L'affinità di un'attività viene determinata leggendo l'affinità della relativa attività principale. Pertanto, per definizione, un'attività principale si trova sempre in un'attività con la stessa affinità. Poiché le attività con modalità di lancio"singleTask"
o"singleInstance"
possono trovarsi solo alla radice di un'attività, la ridefinizione del ruolo è limitata alle modalità"standard"
e"singleTop"
. (vedi anche l'attributolaunchMode
). android:alwaysRetainTaskState
- Se lo stato dell'attività è sempre gestito dal sistema.
"true"
se è così e"false"
se il sistema può reimpostare l'attività allo stato iniziale in determinate situazioni. Il valore predefinito è"false"
. Questo attributo è significativo solo per l'attività principale di un'attività. Viene ignorato per tutte le altre attività.Normalmente, il sistema cancella un'attività rimuovendo tutte le attività dalla pila sopra l'attività principale in determinate situazioni in cui l'utente seleziona di nuovo l'attività dalla schermata Home. In genere, questo viene fatto se l'utente non ha visitato la scheda per un determinato periodo di tempo, ad esempio 30 minuti.
Tuttavia, quando questo attributo è
"true"
, gli utenti tornano sempre all'attività nel suo ultimo stato, indipendentemente da come ci arrivano. Questo è utile in un'applicazione come un browser web in cui è presente molto stato, ad esempio più schede aperte, che gli utenti non vogliono perdere. android:autoRemoveFromRecents
- Indica se le attività avviate dall'attività con questo attributo rimangono nella
schermata Recenti fino al completamento dell'ultima attività nell'attività. Se
true
, l'attività viene rimossa automaticamente dalla schermata Recenti. Questo sostituisce l'uso diFLAG_ACTIVITY_RETAIN_IN_RECENTS
da parte dell'utente che chiama. Deve essere un valore booleano,"true"
o"false"
. android:banner
- Una risorsa drawable
che fornisce un banner grafico esteso per l'elemento associato. Da utilizzare con il
tag
<activity>
per fornire un banner predefinito per un'attività specifica o con il tag<application>
per fornire un banner per tutte le attività dell'applicazione.Il sistema utilizza il banner per rappresentare un'app nella schermata Home di Android TV. Poiché il banner viene visualizzato solo nella schermata Home, viene specificato solo dalle applicazioni con un'attività che gestisce l'intent
CATEGORY_LEANBACK_LAUNCHER
.Questo attributo viene impostato come riferimento a una risorsa drawable contenente l'immagine, ad esempio
"@drawable/banner"
. Non è presente alcun banner predefinito.Per ulteriori informazioni, consulta la sezione Fornire un banner della schermata Home nella Guida introduttiva all'utilizzo delle app TV.
android:canDisplayOnRemoteDevices
-
Indica se l'attività può essere visualizzata su un dispositivo remoto su cui potrebbe o meno essere in esecuzione Android. Deve essere un valore booleano, ovvero
"true"
o"false"
.Il valore predefinito di questo attributo è
"true"
. android:clearTaskOnLaunch
- Indica se tutte le attività vengono rimosse dall'attività, ad eccezione dell'attività principale, quando viene riavviata dalla schermata Home.
"true"
se l'attività viene sempre ridotta all'attività principale e"false"
in caso contrario. Il valore predefinito è"false"
. Questo attributo è significativo solo per le attività che avviano una nuova attività, ovvero l'attività principale. Viene ignorato per tutte le altre attività nell'attività.Quando il valore è
"true"
, ogni volta che gli utenti avviano l'attività, vengono indirizzati all'attività principale, indipendentemente dall'ultima azione che stavano eseguendo nell'attività e indipendentemente dal fatto che abbiano utilizzato il pulsante Indietro o Home per uscire. Quando il valore è"false"
, le attività possono essere eliminate dall'attività 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 Casa e poi torna all'attività P. Normalmente, l'utente vede l'attività Q, poiché è l'ultima attività che ha eseguito nell'attività P. Tuttavia, se P imposta questo flag su
"true"
, tutte le attività al di sopra, in questo caso Q, vengono rimosse quando l'utente avvia l'attività P dalla schermata Home. Pertanto, l'utente vede solo P quando torna all'attività.Se questo attributo e
allowTaskReparenting
sono entrambi"true"
, tutte le attività che possono essere associate a un'altra attività principale vengono spostate nell'attività con cui condividono un'affinità. Le attività rimanenti vengono eliminate.Questo attributo viene ignorato se
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
non è impostato. android:colorMode
Specifica la modalità colore dell'attività. Se specificato, può essere
hdr
owideColorGamut
.Se
hdr
, richiede che l'attività venga visualizzata in un'ampia gamma dinamica, se il dispositivo lo supporta.Se
wideColorGamut
, richiede che l'attività venga visualizzata in modalità Ampia gamma di colori su dispositivi compatibili. In modalità gamma di colori estesa, una finestra può essere visualizzata al di fuori della gammaSRGB
per mostrare colori più brillanti. Se il dispositivo non supporta il rendering con una gamma di colori ampia, questo attributo non ha alcun effetto. Per ulteriori informazioni sul rendering in modalità a colori estesi, consulta Migliorare la grafica con contenuti a colori estesi.android:configChanges
- Elenca le modifiche alla configurazione gestite dall'attività stessa. Quando si verifica una variazione di configurazione in fase di esecuzione, l'attività si arresta e si riavvia per impostazione predefinita, ma la dichiarazione di una configurazione con questo attributo impedisce il riavvio dell'attività. L'attività rimane in esecuzione e viene chiamato il relativo metodo
onConfigurationChanged()
.Nota:utilizza questo attributo solo in casi speciali per migliorare le prestazioni e la reattività dell'applicazione. Per ulteriori informazioni, vedi Gestire le modifiche alla configurazione.
Le seguenti stringhe sono valori validi per questo attributo. I valori multipli sono separati da
|
, ad esempio"locale|navigation|orientation"
.Valore Descrizione "colorMode"
Le funzionalità della modalità a colori dello schermo (gamma di colori o gamma dinamica) sono cambiate.
Nota:la modalità di colore richiesta dall'attività con l'attributo
colorMode
o in fase di esecuzione è diversa dalla funzionalità per le diverse modalità di colore. Un'attività che modifica la modalità colore in uso non causa una modifica della configurazione, perché le funzionalità di colore del display non sono cambiate."density"
Una modifica alla densità del display, ad esempio quando l'utente specifica una scala di visualizzazione diversa o un display diverso è ora attivo.
Aggiunta nel livello API 24.
"fontScale"
Una modifica al fattore di scalatura dei caratteri, ad esempio quando l'utente seleziona una nuova dimensione del carattere globale. "fontWeightAdjustment"
L'entità dell'aumento dell'intensità del carattere è cambiata. "grammaticalGender"
Il genere grammaticale della lingua è cambiato. Vedi GrammaticalInflectionManager
.Aggiunta nel livello API 34.
"keyboard"
Una modifica al tipo di tastiera, ad esempio quando l'utente collega una tastiera esterna. "keyboardHidden"
Una modifica all'accessibilità della tastiera, ad esempio quando l'utente rivela la tastiera hardware. "layoutDirection"
Una modifica alla direzione del layout, ad esempio da sinistra a destra (LTR) a destra a sinistra (RTL).
Aggiunta nel livello API 17.
"locale"
Una modifica alle impostazioni internazionali, ad esempio quando l'utente seleziona una nuova lingua in cui viene visualizzato il testo. "mcc"
Una modifica al codice paese mobile (MCC) IMSI quando viene rilevata una SIM che aggiorna il codice MCC. "mnc"
Una modifica al codice della rete mobile IMSI (MNC) quando viene rilevata una SIM che aggiorna la MNC. "navigation"
L'agente di assistenza tecnica passa al tipo di navigazione (trackball o D-pad). Di solito, questo non accade. "orientation"
Una modifica all'orientamento dello schermo, ad esempio quando l'utente ruota il dispositivo.
Nota:se la tua applicazione ha come target Android 3.2 (livello API 13) o versioni successive, dichiara anche le configurazioni
"screenLayout"
e"screenSize"
, perché il layout e le dimensioni dello schermo possono cambiare quando un dispositivo passa dall'orientamento verticale a quello orizzontale e viceversa."screenLayout"
Una modifica al layout dello schermo, ad esempio quando diventa attivo un altro display. "screenSize"
Una modifica alle dimensioni dello schermo attualmente disponibili.
Questo rappresenta una modifica delle dimensioni attualmente disponibili, rispetto alle proporzioni attuali, pertanto cambia quando l'utente passa dal formato orizzontale a quello verticale e viceversa.
Aggiunta nel livello API 13.
"smallestScreenSize"
Una modifica alle dimensioni fisiche dello schermo.
Questo rappresenta una variazione delle dimensioni indipendentemente dall'orientamento, pertanto cambia solo quando cambiano le dimensioni fisiche effettive dello schermo, ad esempio quando passi a un display esterno. Una modifica a questa configurazione corrisponde a una modifica nella configurazione di
smallestWidth
.Aggiunta nel livello API 13.
"touchscreen"
Una modifica alla modalità touchscreen, 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 inserisce il dispositivo nella base da tavolo o nell'auto oppure quando cambia la modalità Notte. Per ulteriori informazioni sulle diverse modalità dell'interfaccia utente, consulta UiModeManager
.Aggiunta nel livello API 8.
Tutte queste modifiche alla configurazione possono influire sui valori delle risorse visualizzati dall'applicazione. Pertanto, quando viene chiamato
onConfigurationChanged()
, in genere è necessario recuperare di nuovo tutte le risorse, inclusi i layout delle visualizzazioni e gli elementi drawable, per gestire correttamente la modifica.Nota:per gestire le modifiche di configurazione relative al multi-window, utilizza sia
"screenLayout"
sia"smallestScreenSize"
. La funzionalità Multi-window è supportata su Android 7.0 (livello API 24) o versioni successive. android:directBootAware
Indica se l'attività è consapevole del boot diretto, ovvero se può essere eseguita prima che l'utente sblocchi il dispositivo.
Nota: durante il boot diretto, un'attività nella tua applicazione può accedere solo ai dati memorizzati nello spazio di archiviazione protetto dal dispositivo.
Il valore predefinito è
"false"
.android:documentLaunchMode
- Specifica in che modo una nuova istanza di un'attività viene aggiunta a un'attività ogni volta che viene avviata.
Questo attributo consente all'utente di visualizzare più documenti della stessa applicazione nella schermata Recenti.
Questo attributo ha quattro valori, che producono i seguenti effetti quando l'utente apre un documento con l'applicazione:
Valore Descrizione "intoExisting"
Il sistema cerca un'attività il cui URI ComponentName
e dati dell'intent di base corrisponde a quelli dell'intent di lancio. Se il sistema trova un'attività di questo tipo, la cancella e si riavvia, con l'attività principale che riceve una chiamata 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 il documento è già aperto. È lo stesso che impostare sia i flag FLAG_ACTIVITY_NEW_DOCUMENT
cheFLAG_ACTIVITY_MULTIPLE_TASK
."none"
L'attività non crea una nuova attività. Questo è il valore predefinito, che crea una nuova attività solo quando è impostato FLAG_ACTIVITY_NEW_TASK
. La schermata Recenti tratta l'attività come per impostazione predefinita: mostra una singola attività per l'app, che riprende dall'attività invocata per ultima dall'utente."never"
L'attività non viene avviata in un nuovo documento anche se l'intent contiene FLAG_ACTIVITY_NEW_DOCUMENT
. Questa impostazione sostituisce il comportamento degli indicatoriFLAG_ACTIVITY_NEW_DOCUMENT
eFLAG_ACTIVITY_MULTIPLE_TASK
, se uno di questi è impostato nell'attività, e la schermata Recenti mostra un'unica attività per l'app, che riprende da qualunque attività invocata per ultima dall'utente.Nota:per valori diversi da
"none"
e"never"
, l'attività viene definita conlaunchMode="standard"
. Se questo attributo non è specificato, viene utilizzatodocumentLaunchMode="none"
. android:enabled
- Se l'attività può essere creata dal sistema. È
"true"
se è possibile e"false"
in caso contrario. Il valore predefinito è"true"
.L'elemento
<application>
ha un proprio attributoenabled
che si applica a tutti i componenti dell'applicazione, incluse le attività. Affinché il sistema possa creare un'istanza dell'attività, gli attributi<application>
e<activity>
devono essere entrambi"true"
, come accade per impostazione predefinita. Se uno dei due è"false"
, non può essere istanziato. android:enableOnBackInvokedCallback
Questo flag ti consente di disattivare le animazioni di sistema predittive a livello di attività.
Imposta
android:enableOnBackInvokedCallback=false
per disattivare le animazioni di Indietro predittivo a livello di attività e indica al sistema di ignorare le chiamate all'API di piattaformaOnBackInvokedCallback
.android:excludeFromRecents
Indica se l'attività avviata da questa attività è esclusa dalla schermata Recenti. In altre parole, quando questa attività è l'attività principale di una nuova attività, questo attributo determina se l'attività viene visualizzata nell'elenco delle app recenti. È
"true"
se l'attività è esclusa dall'elenco;"false"
se è inclusa. Il valore predefinito è"false"
.android:exported
Indica se l'attività può essere avviata da componenti di altre applicazioni:
- Se
"true"
, l'attività è accessibile a qualsiasi app ed è avviabile tramite il nome esatto della classe. - Se
"false"
, l'attività può essere avviata solo da componenti della stessa applicazione, da applicazioni con lo stesso ID utente o da componenti di sistema con privilegi. Questo è il valore predefinito quando non sono presenti filtri di intent.
Se un'attività nella tua app include filtri per intent, imposta questo elemento su
"true"
per consentire ad altre app di avviarlo. Ad esempio, se l'attività è l'attività principale dell'app e includecategory
android.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 invocare l'attività. Consulta l'attributo
permission
.- Se
android:finishOnTaskLaunch
- Indica se un'istanza esistente dell'attività viene chiusa,
tranne l'attività principale, quando l'utente riavvia l'attività scegliendola sulla
schermata Home. È
"true"
se è spento e"false"
se non lo è. Il valore predefinito è"false"
.Se questo attributo e
allowTaskReparenting
sono entrambi"true"
, questo attributo ha la precedenza sull'altro. L'affinità dell'attività viene ignorata. L'attività non viene riassegnato, ma viene eliminata.Questo attributo viene ignorato se
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
non è impostato. android:hardwareAccelerated
- Indica se il rendering con accelerazione hardware è abilitato per questa attività.
"true"
se è attivata e"false"
se non lo è. Il valore predefinito è"false"
.Su Android 3.0 e versioni successive, un renderer OpenGL con accelerazione hardware è disponibile per le applicazioni per migliorare le prestazioni di molte operazioni 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 e scorrimenti più fluidi e in una maggiore reattività complessiva, anche per le applicazioni che non utilizzano esplicitamente le librerie OpenGL del framework. A causa dell'aumento delle risorse necessarie per attivare l'accelerazione hardware, la tua app consuma più RAM.
Non tutte le operazioni OpenGL 2D sono accelerate. Se attivi il renderer con accelerazione hardware, verifica se la tua applicazione può utilizzarlo senza errori.
android:icon
Un'icona che rappresenta l'attività. L'icona viene mostrata agli utenti quando sullo schermo è richiesta una rappresentazione dell'attività. Ad esempio, le icone per le attività che avviano le attività vengono visualizzate nella finestra del programma di avvio. L'icona è spesso accompagnata da un'etichetta. Per informazioni sull'etichetta, consulta l'attributo
android:label
.Questo attributo viene impostato come riferimento a una risorsa drawable contenente la definizione dell'immagine. Se non è impostato, viene utilizzata l'icona specificata per l'applicazione nel suo complesso. Per ulteriori informazioni, consulta l'attributo
icon
dell'elemento<application>
.L'icona dell'attività, impostata qui o dall'elemento
<application>
, è anche l'icona predefinita per tutti i filtri di intent dell'attività. Per ulteriori informazioni, consulta l'attributoicon
dell'elemento<intent-filter>
.android:immersive
- Imposta l'impostazione della modalità immersiva per l'attività corrente. Se è
"true"
, il membroActivityInfo.flags
ha sempre il bitFLAG_IMMERSIVE
impostato, anche se la modalità immersiva cambia in fase di esecuzione utilizzando il metodosetImmersive()
. android:label
Un'etichetta leggibile dall'utente per l'attività. L'etichetta viene visualizzata sullo schermo quando l'attività viene rappresentata all'utente. Spesso viene visualizzata insieme all'icona Attività. Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Consulta l'attributo
label
dell'elemento<application>
.L'etichetta dell'attività, impostata qui o dall'elemento
<application>
, è anche l'etichetta predefinita per tutti i filtri di intent dell'attività. Per ulteriori informazioni, consulta l'attributolabel
dell'elemento<intent-filter>
.L'etichetta viene impostata come riferimento a una risorsa stringa in modo che possa essere localizzata come le altre stringhe nell'interfaccia utente. Tuttavia, per comodità durante lo sviluppo dell'applicazione, puoi impostarlo anche come stringa non elaborata.
android:launchMode
Un'istruzione su come viene avviata l'attività. Esistono cinque modalità, che funzionano in combinazione con i flag attività (costanti
FLAG_ACTIVITY_*
) negli oggettiIntent
per determinare cosa succede quando l'attività viene chiamata a gestire un'intenzione:"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
La modalità predefinita è
"standard"
.Come mostrato nella tabella seguente, le modalità si suddividono in due gruppi principali, con le attività
"standard"
e"singleTop"
da un lato e le attività"singleTask"
,"singleInstance"
e"singleInstancePerTask"
dall'altro. Un'attività con la modalità di avvio"standard"
o"singleTop"
può essere creata più volte.Le istanze possono appartenere a qualsiasi attività e possono trovarsi in qualsiasi punto dell'attività. In genere, vengono avviati nell'attività che ha chiamato
startActivity()
, a meno che l'oggettoIntent
non 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à"singleInstance"
può essere creata più volte in attività diverse quando è impostatoFLAG_ACTIVITY_MULTIPLE_TASK
oFLAG_ACTIVITY_NEW_DOCUMENT
."singleInstancePerTask
Un'attività con la modalità di lancio
"singleTask"
combina i comportamenti di"singleInstance"
e"singleInstancePerTask"
: l'attività può essere creata più volte e può trovarsi in qualsiasi punto di un'attività dello stessotaskAffinity
. Tuttavia, il dispositivo può contenere una sola attività per individuare l'attività"singleTask"
alla radice dell'attività.Le modalità
"standard"
e"singleTop"
differiscono tra loro in un aspetto: ogni volta che c'è un nuovo intento per un'attività"standard"
, viene creata una nuova istanza della classe per rispondere a quell'intento. Ogni istanza gestisce un singolo intento. Analogamente, è possibile creare anche una nuova istanza di un'attività"singleTop"
per gestire un nuovo intent.Tuttavia, se l'attività target ha già un'istanza esistente nella parte superiore della pila, questa istanza riceve il nuovo intento in una chiamata
onNewIntent()
. Non viene creata una nuova istanza. In caso contrario, se un'istanza esistente dell'attività"singleTop"
è nell'attività di destinazione, ma non nella parte superiore della pila, o se si trova nella parte superiore di una pila, ma non nell'attività di destinazione, viene creata una nuova istanza e inserita nella pila.Analogamente, se l'utente naviga su 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'intentup
contieneFLAG_ACTIVITY_CLEAR_TOP
), l'attività principale viene posizionata in cima alla pila e il relativo stato viene mantenuto.L'intent di navigazione viene ricevuto dal metodo
onNewIntent()
dell'attività principale. Se l'attività principale ha la modalità di avviostandard
e l'intentup
non contieneFLAG_ACTIVITY_CLEAR_TOP
, l'attività corrente e la sua attività principale vengono rimosse dallo stack e viene creata una nuova istanza dell'attività principale per ricevere l'intent di navigazione.La modalità
"singleInstance"
è diversa da"singleTask"
e"singleInstancePerTask"
anche in un solo aspetto: un'attività con la modalità di lancio"singleTask"
o"singleInstancePerTask"
consente ad altre attività, necessariamente"standard"
e"singleTop"
, di far parte del relativo compito.Un'attività
"singleInstance"
, invece, non consente ad altre attività di far parte del suo compito. Deve essere l'unica attività nell'attività. Se avvia un'altra attività, questa viene assegnata a un'altra attività, come seFLAG_ACTIVITY_NEW_TASK
fosse nell'intent.Casi d'uso Modalità di lancio Più istanze? Commenti Lanci normali per la maggior parte delle attività "standard"
Sì Predefinita. Il sistema crea sempre una nuova istanza dell'attività nell'attività di destinazione e inoltra l'intent. "singleTop"
Condizionalmente Se esiste già un'istanza dell'attività nella parte superiore dell'attività di destinazione, il sistema inoltra l'intent a quell'istanza tramite una chiamata al relativo metodo onNewIntent()
, anziché creare una nuova istanza dell'attività.Lanci specializzati
(non consigliati per uso generale)"singleTask"
Condizionalmente Il sistema crea l'attività nella radice di una nuova attività o la individua in un'attività esistente con la stessa affinità. Se esiste già un'istanza dell'attività e si trova alla radice dell'attività, il sistema indirizza l'intent all'istanza esistente tramite una chiamata al relativo metodo onNewIntent()
, anziché crearne uno nuovo."singleInstance"
No Come "singleTask"
, tranne per il fatto che il sistema non avvia altre attività nell'attività che contiene l'istanza. L'attività è sempre il singolo e unico membro della relativa attività."singleInstancePerTask"
Condizionalmente L'attività può essere eseguita solo come attività principale dell'attività, la prima attività che ha creato l'attività, pertanto esiste una sola istanza di questa attività in un'attività. Tuttavia, l'attività può essere creata più volte in attività diverse. Come mostrato nella tabella precedente,
"standard"
è la modalità predefinita ed è appropriata per la maggior parte dei tipi di attività."singleTop"
è anche una modalità di lancio comune e utile per molti tipi di attività. Le altre modalità,"singleTask"
,"singleInstance"
e"singleInstancePerTask"
, sono non appropriate per la maggior parte delle applicazioni. Il risultato è un modello di interazione che probabilmente non è familiare agli utenti ed è molto diverso dalla maggior parte delle altre applicazioni.Indipendentemente dalla modalità di lancio scelta, assicurati di testare l'usabilità dell'attività durante il lancio e quando torni da altre attività e attività utilizzando il pulsante Indietro.
Per ulteriori informazioni sulle modalità di lancio e sulla loro interazione con i flag
Intent
, consulta Task e pila di ritorno.android:lockTaskMode
- Determina in che modo il sistema presenta questa attività quando il dispositivo è in modalità di blocco delle attività.
Android può eseguire attività in una modalità immersiva simile a quella dei kiosk, chiamata modalità di blocco attività. Quando il sistema viene eseguito in modalità di blocco delle attività, in genere gli utenti del dispositivo non possono vedere le notifiche, accedere alle app non incluse nella lista consentita o tornare alla schermata Home, a meno che l'app Home non sia inclusa nella lista consentita.
Solo le app inserite nella lista consentita da un controller dei criteri dei dispositivi (DPC) possono essere eseguite quando il sistema è in modalità di blocco delle attività. Tuttavia, le app privilegiate e di sistema possono essere eseguite in modalità di attività di blocco anche se non sono incluse nella lista consentita.
Il valore può essere uno dei seguenti valori di stringa
R.attr.lockTaskMode
:Valore Descrizione "normal"
Valore predefinito. Questo è il valore predefinito. Le attività non vengono avviate in modalità di blocco attività, ma possono essere inserite in questa modalità chiamando startLockTask()
."never"
Le attività non vengono avviate in modalità
lockTask
e l'utente del dispositivo non può 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()
, poi questa modalità è identica aalways
, tranne per il fatto che l'attività deve chiamarestopLockTask()
prima di essere in grado di terminare se è l'ultima attività bloccata. Se il DPC non autorizza questo pacchetto, questa modalità è identica anormal
."always"
Le attività con origine in questa attività vengono sempre avviate in modalità di blocco delle attività. Se il sistema è già in modalità di blocco delle attività quando viene avviata questa attività, la nuova attività viene avviata sopra l'attività corrente. Le attività avviate in questa modalità possono uscirne chiamando
finish()
.Nota:questa modalità è disponibile solo per le applicazioni di sistema e con privilegi. Le app non privilegiate con questo valore vengono trattate come
normal
.Questo attributo è stato introdotto nel livello API 23.
android:maxRecents
- Il numero massimo di attività correlate a questa attività nella schermata Recenti. Quando viene raggiunto questo numero di voci, il sistema rimuove l'istanza meno utilizzata 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 più grande supportato dall'attività.
Se l'app viene eseguita su un dispositivo con una proporzione più ampia, il sistema la inserisce automaticamente in una cornice, lasciando parti dello schermo inutilizzate in modo che l'app possa essere eseguita con la proporzione massima specificata.
Il formato massimo è espresso nella forma decimale del quoziente della dimensione più lunga del dispositivo diviso per la dimensione più corta. Ad esempio, se il formato massimo è 7:3, imposta il valore di questo attributo su 2,33.
Sui dispositivi non indossabili, il valore di questo attributo deve essere pari o superiore a 1,33. Sui dispositivi indossabili, deve essere 1.0 o versioni successive. In caso contrario, il sistema ignora il valore impostato.
Per ulteriori informazioni su questo attributo, consulta R.attr.maxAspectRatio.
android:minAspectRatio
-
Il formato immagine minimo supportato dall'attività.
Se l'app viene eseguita su un dispositivo con un formato più stretto, il sistema la inserisce automaticamente in una sagoma, lasciando alcune parti dello schermo inutilizzate in modo che l'app possa essere eseguita con il formato minimo specificato.
Le proporzioni minime sono espresse nella forma decimale del quoziente della dimensione più lunga del dispositivo diviso per la dimensione più corta. Ad esempio, se le proporzioni dello schermo 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.