<activité>

Syntaxe :
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enabledOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android: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>
Contenu dans :
<application>
Peut contenir :
<intent-filter>
<meta-data>
<layout>
Description :
Déclare une activité (une sous-classe Activity) qui implémente une partie de l'interface utilisateur visuelle de l'application. Toutes les activités doivent être représentées par des éléments <activity> dans le fichier manifeste. Celles qui ne sont pas déclarées ne sont pas vues par le système et ne s'exécutent jamais.
Attributs :
android:allowEmbedded
Indique que l'activité peut être lancée en tant qu'enfant intégré à une autre activité, en particulier dans le cas où l'enfant réside dans un conteneur, tel qu'un élément Display appartenant à une autre activité. Par exemple, les activités utilisées pour les notifications personnalisées Wear doivent le déclarer pour que Wear puisse afficher l'activité dans son flux contextuel, qui se trouve dans un autre processus.

La valeur par défaut de cet attribut est false.

android:allowTaskReparenting
Indique si l'activité peut être déplacée de la tâche qui l'a démarrée vers la tâche avec laquelle elle a une affinité lorsqu'elle sera prête. La valeur possible est "true" si l'instance peut être déplacée et "false" si elle reste dans la tâche où elle a commencé.

Si cet attribut n'est pas défini, la valeur spécifiée par l'attribut allowTaskReparenting correspondant de l'élément <application> s'applique à l'activité. La valeur par défaut est "false".

Normalement, lorsqu'une activité est lancée, elle est associée à la tâche qui l'a démarrée et y reste jusqu'à la fin de sa durée de vie. Vous pouvez utiliser cet attribut pour remplacer la tâche parent de l'activité par celle avec laquelle elle a une affinité, lorsque sa tâche actuelle ne s'affichera plus. Généralement, cela permet de déplacer les activités d'une application vers la tâche principale qui lui est associée.

Par exemple, si un e-mail contient un lien vers une page Web, le fait de cliquer sur ce lien renvoie une activité qui permet d'afficher la page. Cette activité est définie par l'application de navigateur, mais elle est lancée dans le cadre de la tâche de l'e-mail. Si son parent est remplacé par la tâche du navigateur, l'activité s'affichera lorsque le navigateur apparaîtra au premier plan, et sera absente lorsque la tâche de l'e-mail reviendra au premier plan.

L'affinité d'une activité est définie par l'attribut taskAffinity. L'affinité d'une tâche est déterminée par la lecture de l'affinité de son activité racine. Par conséquent, une activité racine est toujours définie dans une tâche ayant la même affinité. Étant donné que les activités avec les modes de lancement "singleTask" ou "singleInstance" peuvent seulement être à la racine d'une tâche, le changement de parent est limité aux modes "standard" et "singleTop". Consultez également l'attribut launchMode.

android:alwaysRetainTaskState
Indique si le système conserve toujours l'état de la tâche dans laquelle l'activité est conservée. "true" ou "false" si le système peut rétablir l'état initial de la tâche dans certains cas. La valeur par défaut est "false". Cet attribut n'a de sens que pour l'activité racine d'une tâche. Il est ignoré pour toutes les autres activités.

Normalement, le système efface une tâche (en supprimant toutes les activités de la pile au-dessus de l'activité racine) dans certains cas où l'utilisateur sélectionne à nouveau cette tâche depuis l'écran d'accueil. En règle générale, ce scénario se produit si l'utilisateur n'a pas consulté la tâche pendant un certain temps, par exemple 30 minutes.

Toutefois, lorsque cet attribut est défini sur "true", les utilisateurs retournent toujours à la tâche dans l'état dans lequel ils l'avaient laissée, quelle que soit la façon dont ils y accèdent. Il est particulièrement utile dans les applications telles qu'un navigateur Web qui présente un grand nombre d'états (par exemple, plusieurs onglets ouverts) que les utilisateurs ne souhaitent pas perdre.

android:autoRemoveFromRecents
Indique si les tâches lancées par l'activité avec cet attribut restent sur l'écran "Recents" (Éléments récents) jusqu'à la fin de la dernière activité. Si la valeur est true, la tâche est automatiquement supprimée de l'écran "Recents" (Éléments récents). Cet attribut remplace l'utilisation de FLAG_ACTIVITY_RETAIN_IN_RECENTS par l'appelant. Il doit s'agir d'une valeur booléenne : "true" ou "false".
android:banner
Ressource drawable fournissant une bannière graphique étendue pour l'élément associé. Utilisez ce paramètre avec la balise <activity> afin de fournir une bannière par défaut pour une activité spécifique, ou avec la balise <application> afin de fournir une bannière pour toutes les activités de l'application.

Le système utilisera cette bannière pour représenter une application sur l'écran d'accueil d'Android TV. Étant donné que la bannière ne s'affiche que sur l'écran d'accueil, elle n'est spécifiée que par les applications ayant une activité qui gère l'intent CATEGORY_LEANBACK_LAUNCHER.

Cet attribut est défini comme référence à une ressource drawable contenant l'image, par exemple "@drawable/banner". Il n'existe pas de bannière par défaut.

Pour en savoir plus, consultez la section Fournir une bannière sur l'écran d'accueil dans "Premiers pas avec les applications TV".

android:clearTaskOnLaunch
Indique si toutes les activités sont supprimées de la tâche, à l'exception de l'activité racine, lorsqu'elle est relancée depuis l'écran d'accueil. "true" si la tâche est toujours supprimée de son activité racine, et "false" dans le cas contraire. La valeur par défaut est "false". Cet attribut n'a de sens que pour les activités qui démarrent une nouvelle tâche (l'activité racine). Il est ignoré pour toutes les autres activités de la tâche.

Lorsque la valeur est "true", chaque fois que les utilisateurs relancent la tâche, ils sont redirigés vers son activité racine, indépendamment de leur dernière action dans la tâche et de l'option utilisée pour la quitter (bouton Retour ou Accueil). Lorsque cette valeur est "false", la tâche peut être effacée des activités dans certaines situations, mais pas toujours. Pour en savoir plus, consultez l'attribut alwaysRetainTaskState.

Supposons qu'un utilisateur lance l'activité P depuis l'écran d'accueil, puis passe à l'activité Q. L'utilisateur appuie ensuite sur Accueil, puis revient à l'activité P. Normalement, il verra l'activité Q, car il s'agissait de sa dernière tâche dans la tâche P. Toutefois, si P définit cet indicateur sur "true", toutes les activités qui s'y rapportent (dans le cas présent, Q) sont supprimées lorsque l'utilisateur lance l'activité P depuis l'écran d'accueil. Dès lors, l'utilisateur ne voit que P lorsqu'il retourne dans la tâche.

Si cet attribut et allowTaskReparenting sont tous deux "true", toutes les activités qui peuvent changer de parent sont déplacées vers la tâche avec laquelle elles partagent une affinité. Les activités restantes sont supprimées.

Cet attribut est ignoré si FLAG_ACTIVITY_RESET_TASK_IF_NEEDED n'est pas défini.

android:colorMode

Spécifie le mode couleur de l'activité. Si spécifié, il peut s'agir de hdr ou de wideColorGamut.

Si la valeur est hdr, demande l'affichage de l'activité dans une plage HDR (High Dynamic Range) si l'appareil le permet.

Si la valeur est wideColorGamut, demande l'affichage de l'activité en mode large gamme de couleurs sur les appareils compatibles. En mode large gamme de couleurs, une fenêtre peut s'afficher en dehors de la gamme SRGB pour afficher des couleurs plus vives. Si l'appareil n'est pas compatible avec l'affichage en mode large gamme de couleurs, cet attribut n'a aucun effet. Pour en savoir plus sur l'affichage en mode large gamme de couleurs, consultez la section Améliorer les graphiques avec des contenus à large gamme de couleurs.

android:configChanges
Indique les changements de configuration que l'activité gère elle-même. Lorsqu'un changement de configuration se produit au moment de l'exécution, l'activité est arrêtée et redémarrée par défaut, mais la déclaration d'une configuration avec cet attribut empêche son redémarrage. Au lieu de cela, l'activité reste en cours d'exécution, et sa méthode onConfigurationChanged() est appelée.

Remarque : N'utilisez cet attribut que dans des cas particuliers, pour améliorer les performances et la réactivité de l'application. Pour en savoir plus, consultez Gérer les modifications de configuration.

Les chaînes suivantes sont des valeurs valides pour cet attribut. Plusieurs valeurs sont séparées par | (par exemple, "locale|navigation|orientation").

Valeur Description
"density" Modification de la densité d'affichage, par exemple, lorsque l'utilisateur spécifie une autre échelle d'affichage ou qu'un autre écran est désormais actif.

Attribut ajouté au niveau d'API 24.

"fontScale" Modification du facteur de mise à l'échelle de la police, par exemple lorsque l'utilisateur sélectionne une nouvelle taille de police globale.
"keyboard" Modification du type de clavier, par exemple lorsque l'utilisateur branche un clavier externe.
"keyboardHidden" Modification de l'accessibilité du clavier, par exemple lorsque l'utilisateur révèle le clavier matériel.
"layoutDirection" Modification du sens de mise en page, par exemple en remplacant l'orientation de gauche à droite par l'orientation de droite à gauche.

Attribut ajouté au niveau d'API 17.

"locale" Modification des paramètres régionaux, par exemple, lorsque l'utilisateur sélectionne une nouvelle langue dans laquelle le texte s'affiche.
"mcc" Modification du mobile country code (MCC) IMSI en cas de détection d'une carte SIM qui le met à jour.
"mnc" Modification du mobile network code (MNC) IMSI en cas de détection d'une carte SIM qui le met à jour.
"navigation" Modification du type de navigation (trackball ou pavé directionnel). Normalement, cela ne se produit pas.
"orientation"

Modification de l'orientation de l'écran, par exemple lorsque l'utilisateur fait pivoter l'appareil.

Remarque : Si votre application cible Android 3.2 (niveau d'API 13) ou une version ultérieure, déclarez également les configurations "screenLayout" et "screenSize", car la mise en page et la taille de l'écran peuvent changer lorsqu'un appareil passe du mode portrait au mode paysage, ou vice versa.

"screenLayout" Modification de la mise en page de l'écran, par exemple lorsqu'un autre écran devient actif.
"screenSize" Modification de la taille d'écran disponible actuellement.

Ce changement concerne la taille actuellement disponible par rapport au format actuel. Il intervient lorsque l'utilisateur passe du mode paysage au mode portrait, et vice versa.

Attribut ajouté au niveau d'API 13.

"smallestScreenSize" Modification de la taille de l'écran physique.

Il s'agit d'un changement de taille, quelle que soit l'orientation. Par conséquent, le changement n'intervient que lorsque la taille réelle de l'écran physique a changé (par exemple, en passant à un écran externe). Une modification de cette configuration correspond à une modification de la configuration de smallestWidth.

Attribut ajouté au niveau d'API 13.

"touchscreen" Modification de l'écran tactile. Normalement, cela ne se produit pas.
"uiMode" Modification du mode d'interface utilisateur, par exemple lorsque l'utilisateur place l'appareil sur un bureau ou un support voiture, ou lorsque le mode Nuit change. Pour en savoir plus sur les différents modes d'interface utilisateur, consultez UiModeManager.

Attribut ajouté au niveau d'API 8.

Toutes ces modifications de configuration peuvent avoir une incidence sur les valeurs de ressources observées par l'application. Par conséquent, lorsque la méthode onConfigurationChanged() est appelée, il est généralement nécessaire de récupérer à nouveau toutes les ressources, y compris les mises en page de vues et les drawables, pour gérer correctement la modification.

Remarque : Pour gérer toutes les modifications de configuration liées au mode multifenêtre, utilisez à la fois "screenLayout" et "smallestScreenSize". Le mode multifenêtre est compatible avec Android 7.0 (niveau d'API 24) ou version ultérieure.

android:directBootAware

Indique si l'activité est compatible avec le démarrage direct, c'est-à-dire si elle peut s'exécuter avant que l'utilisateur déverrouille l'appareil.

Remarque : Pendant le démarrage direct, une activité de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:documentLaunchMode
Spécifie la façon dont la nouvelle instance d'une activité doit être ajoutée à une tâche chaque fois qu'elle est lancée. Cet attribut permet à l'utilisateur d'afficher plusieurs documents de la même application sur l'écran "Recents" (Éléments récents).

Cet attribut présente quatre valeurs qui entraînent les effets suivants lorsque l'utilisateur ouvre un document avec l'application :

Valeur Description
"intoExisting" Le système recherche une tâche dont l'intent de base ComponentName et l'URI de données correspondent à ceux de l'intent de lancement. Si le système trouve cette tâche, il l'efface et redémarre avec l'activité racine qui reçoit un appel à onNewIntent(android.content.Intent). Dans le cas contraire, il en crée une autre.
"always" L'activité crée une tâche pour le document, même s'il est déjà ouvert. Cela revient à définir les indicateurs FLAG_ACTIVITY_NEW_DOCUMENT et FLAG_ACTIVITY_MULTIPLE_TASK.
"none" L'activité ne crée pas de tâche pour elle-même. Il s'agit de la valeur par défaut, qui crée une tâche uniquement lorsque FLAG_ACTIVITY_NEW_TASK est défini. L'écran "Recents" (Éléments récents) traite l'activité normalement : il affiche une seule tâche pour l'application, qui reprend à partir de n'importe quelle activité appelée en dernier par l'utilisateur.
"never" L'activité n'est pas lancée dans un nouveau document, même si l'intent contient FLAG_ACTIVITY_NEW_DOCUMENT. La définition de cette option remplace le comportement des indicateurs FLAG_ACTIVITY_NEW_DOCUMENT et FLAG_ACTIVITY_MULTIPLE_TASK, s'ils sont définis dans l'activité, et l'écran "Recents" (Éléments récents) affiche une seule tâche pour l'application, qui reprend à partir de la dernière activité appelée par l'utilisateur.

Remarque : Pour les valeurs autres que "none" et "never", l'activité est définie avec launchMode="standard". Si cet attribut n'est pas spécifié, documentLaunchMode="none" est utilisé.

android:enabled
Indique si l'activité peut être instanciée par le système. Cette valeur indique "true" si l'activité peut être instanciée, et "false" dans le cas contraire. La valeur par défaut est "true".

L'élément <application> possède son propre attribut enabled qui s'applique à tous les composants d'application, y compris les activités. Pour que le système puisse instancier l'activité, les attributs <application> et <activity> doivent être tous les deux définis sur la valeur par défaut "true". Si l'un d'eux indique "false", l'activité ne peut pas être instanciée.

android:enableOnBackInvokedCallback
Cet indicateur vous permet d'activer les animations système de prévisualisation au niveau de l'activité. Ce comportement facilite la migration des applications multi-activités volumineuses vers la prévisualisation des gestes Retour.

Définir android:enableOnBackInvokedCallback=false désactive les animations de prévisualisation du Retour soit au niveau de l'activité, soit au niveau de l'application, selon l'endroit où vous définissez la balise, et demande au système d'ignorer les appels à l'API de plate-forme OnBackInvokedCallback.

android:excludeFromRecents
Indique si la tâche lancée par cette activité est exclue de l'écran "Recents" (Éléments récents). Autrement dit, lorsque cette activité est l'activité racine d'une nouvelle tâche, cet attribut détermine si la tâche apparaîtra dans la liste des applications récentes. Cette valeur indique "true" si la tâche est exclue de la liste, et "false" si elle est incluse. La valeur par défaut est "false".

android:exported
Indique si l'activité peut être lancée par des composants d'autres applications.

  • Si cette valeur indique "true", l'activité est accessible à toutes les applications et peut être lancée grâce au nom de classe exact.
  • Si la valeur est "false", l'activité ne peut être lancée que par des composants de la même application, des applications ayant le même ID utilisateur ou des composants système privilégiés. En l'absence de filtres d'intent, il s'agit de la valeur par défaut.

Si une activité dans votre application inclut des filtres d'intent, définissez cet élément sur "true" pour permettre à d'autres applications de la démarrer (par exemple, s'il s'agit de l'activité principale de l'application et qu'elle inclut la category android.intent.category.LAUNCHER).

Si cet élément est défini sur "false" et qu'une application tente de démarrer l'activité, le système génère une exception ActivityNotFoundException.

Cet attribut n'est pas le seul moyen de limiter l'exposition d'une activité à d'autres applications. Les autorisations permettent également de limiter les entités externes pouvant appeler l'activité. Consultez l'attribut permission.

android:finishOnTaskLaunch
Indique si une instance existante de l'activité est arrêtée, à l'exception de l'activité racine, lorsque l'utilisateur relance sa tâche en la sélectionnant sur l'écran d'accueil. Cette valeur indique "true" si l'instance est arrêtée, et "false" dans le cas contraire. La valeur par défaut est "false".

Si cet attribut et allowTaskReparenting sont tous les deux "true", il prévaut sur l'autre. L'affinité de l'activité est ignorée. L'activité ne change pas de parent, mais est détruite.

Cet attribut est ignoré si FLAG_ACTIVITY_RESET_TASK_IF_NEEDED n'est pas défini.

android:hardwareAccelerated
Indique si le rendu avec accélération matérielle doit être activé pour cette activité. "true" est défini si tel est le cas, et "false" dans le cas contraire. La valeur par défaut est "false".

Sous Android 3.0 ou version supérieure, un moteur de rendu OpenGL avec accélération matérielle est disponible pour les applications. Il permet d'améliorer les performances de nombreuses opérations graphiques 2D courantes. Lorsque le moteur de rendu avec accélération matérielle est activé, la plupart des opérations dans Canvas, Paint, Xfermode, ColorFilter, Shader et Camera sont accélérées.

Cela se traduit par des animations et un défilement plus fluides, ainsi que par une meilleure réactivité globale, même pour les applications qui n'utilisent pas explicitement les bibliothèques OpenGL du framework. En raison de l'augmentation des ressources requises pour activer l'accélération matérielle, votre application utilisera plus de RAM.

Les opérations OpenGL en 2D ne sont pas toutes accélérées. Si vous activez le moteur de rendu avec accélération matérielle, vérifiez si votre application peut l'utiliser générer d'erreurs.

android:icon
Icône représentant l'activité. L'icône s'affiche pour les utilisateurs lorsqu'une représentation de l'activité est requise à l'écran. Par exemple, les icônes des activités qui lancent des tâches sont affichées dans la fenêtre du lanceur d'applications. L'icône est souvent accompagnée d'un libellé. Pour en savoir plus sur ce libellé, consultez l'attribut android:label.

Cet attribut est défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place. Pour en savoir plus, consultez l'attribut icon de l'élément <application>.

L'icône de l'activité, définie ici ou par l'élément <application>, est également l'icône par défaut de tous les filtres d'intent de l'activité. Pour en savoir plus, consultez l'attribut icon de l'élément <intent-filter>.

android:immersive
Définit le paramètre de mode immersif de l'activité actuelle. Si cette valeur indique "true", l'élément FLAG_IMMERSIVE du membre ActivityInfo.flags est toujours défini, même si le mode immersif est modifié au moment de l'exécution à l'aide de la méthode setImmersive().
android:label
Libellé compréhensible de l'activité. Ce libellé s'affiche à l'écran lorsque l'activité est présentée à l'utilisateur. Il s'affiche souvent avec l'icône d'activité. Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place (consultez l'attribut label de l'élément <application>).

Le libellé de l'activité, défini ici ou par l'élément <application>, est également le libellé par défaut de tous les filtres d'intent de l'activité. Pour en savoir plus, consultez l'attribut label de l'élément <intent-filter>.

Le libellé est défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:launchMode
Instruction sur le lancement de l'activité. Cinq modes fonctionnent conjointement avec des indicateurs d'activité (constantes FLAG_ACTIVITY_*) dans les objets Intent pour déterminer ce qui doit se passer lorsque l'activité est appelée pour gérer un intent :

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

Le mode par défaut est "standard".

Comme indiqué dans le tableau suivant, les modes se divisent en deux groupes principaux, avec les activités "standard" et "singleTop" d'un côté, et les activités "singleTask" ,"singleInstance" et "singleInstancePerTask" de l'autre. Une activité avec le mode de lancement "standard" ou "singleTop" peut être instanciée plusieurs fois.

Les instances peuvent appartenir à n'importe quelle tâche et se trouver n'importe où dans la tâche. En règle générale, elles sont lancées dans la tâche appelée startActivity(), sauf si l'objet Intent contient une instruction FLAG_ACTIVITY_NEW_TASK, auquel cas une autre tâche est choisie. Pour en savoir plus, consultez l'attribut taskAffinity.

En revanche, les activités "singleTask", "singleInstance" et "singleInstancePerTask" ont des comportements différents. "singleInstancePerTask" est toujours à la racine de la tâche de l'activité. De plus, l'appareil ne peut contenir qu'une seule instance de l'activité "singleInstance" à la fois, tandis que l'activité "singleInstancePerTask peut être instanciée plusieurs fois dans différentes tâches lorsque FLAG_ACTIVITY_MULTIPLE_TASK ou FLAG_ACTIVITY_NEW_DOCUMENT est défini.

Une activité avec le mode de lancement "singleTask" combine les comportements de "singleInstance" et "singleInstancePerTask" : l'activité peut être instanciée plusieurs fois et peut se trouver n'importe où dans une tâche de même affinité (taskAffinity). Toutefois, l'appareil ne peut contenir qu'une seule tâche pour localiser l'activité "singleTask" à la racine de la tâche.

Les modes "standard" et "singleTop" diffèrent l'un de l'autre sur un seul point : chaque fois qu'il existe un nouvel intent pour une activité "standard", une instance de la classe est créée pour répondre cet intent. Chaque instance gère un seul intent. De même, une instance d'une activité "singleTop" peut également être créée pour gérer un nouvel intent.

Toutefois, si la tâche cible possède déjà une instance de l'activité en haut de sa pile, cette instance recevra le nouvel intent (dans un appel onNewIntent()). Aucune instance ne sera créée. Sinon, si une instance existante de l'activité "singleTop" se trouve dans la tâche cible, mais pas en haut de la pile, ou si elle est en haut d'une pile, mais pas dans la tâche cible, une instance sera créée et envoyée sur la pile.

De même, si l'utilisateur accède à une activité qui se trouve plus haut dans la pile actuelle, le comportement est déterminé par le mode de lancement de l'activité parent. Si l'activité parent utilise le mode de lancement singleTop (ou que l'intent up contient FLAG_ACTIVITY_CLEAR_TOP), le parent est placé en haut de la pile, et son état est préservé.

L'intent de navigation est reçu par la méthode onNewIntent() de l'activité parent. Si le mode de lancement standard est activé pour l'activité parent et que l'intent up ne contient pas FLAG_ACTIVITY_CLEAR_TOP, l'activité actuelle et son parent sortent tous deux de la pile. Par ailleurs, une nouvelle instance de l'activité parent est créée pour recevoir l'intent de navigation.

Le mode "singleInstance" diffère également de "singleTask" et "singleInstancePerTask" sur un seul point : une activité avec le mode de lancement "singleTask" ou "singleInstancePerTask" permet aux autres activités, notamment les activités "standard" et "singleTop", de faire partie de sa tâche.

En revanche, une activité "singleInstance" n'autorise aucune autre activité à faire partie de sa tâche. Il doit s'agir de la seule activité de la tâche. Si une autre activité démarre, elle sera attribuée à une autre tâche, comme si FLAG_ACTIVITY_NEW_TASK était dans l'intent.

Cas d'utilisation Mode de lancement Plusieurs instances ? Commentaires
Lancements normaux pour la plupart des activités "standard" Oui Par défaut. Le système crée toujours une instance de l'activité dans la tâche cible et y achemine l'intent.
"singleTop" Sous certaines conditions Si une instance de l'activité existe déjà en haut de la tâche cible, le système achemine l'intent vers cette instance via un appel à sa méthode onNewIntent(), au lieu de créer une instance de l'activité.
Lancements spécialisés
(non recommandés pour une utilisation générale)
"singleTask" Sous certaines conditions Le système crée l'activité à la racine d'une nouvelle tâche ou localise l'activité au niveau d'une tâche existante avec la même affinité. Si une instance de l'activité existe déjà et se trouve à la racine de la tâche, le système achemine l'intent vers l'instance existante via un appel à sa méthode onNewIntent(), au lieu d'en créer une.
"singleInstance" Non Identique à "singleTask", sauf que le système ne lance aucune autre activité dans la tâche contenant l'instance. L'activité est toujours le seul et unique membre de sa tâche.
"singleInstancePerTask" Sous certaines conditions L'activité ne peut être exécutée qu'en tant qu'activité racine de la tâche (en tant que première activité qui l'a créée). Par conséquent, il n'y aura qu'une seule instance de cette activité dans une tâche. Cependant, l'activité peut être instanciée plusieurs fois dans différentes tâches.

Comme indiqué dans le tableau précédent, "standard" est le mode par défaut et convient à la plupart des types d'activités. "singleTop" est également un mode de lancement courant et utile pour de nombreux types d'activités. Les autres modes ( "singleTask", "singleInstance" et "singleInstancePerTask") ne sont pas appropriés pour la plupart des applications. Ils entraînent un modèle d'interaction que les utilisateurs ne connaissent pas et qui sont très différents de la plupart des autres applications.

Quel que soit le mode de lancement que vous choisissez, veillez à tester l'usabilité de l'activité pendant le lancement et lorsque vous y revenez à partir d'autres activités et tâches à l'aide du bouton "Retour".

Pour en savoir plus sur les modes de lancement et leur interaction avec les options Intent, consultez la section Tâches et pile "Retour".

android:lockTaskMode
Détermine comment le système présente cette activité lorsque l'appareil s'exécute en mode tâches verrouillées.

Android peut exécuter des tâches selon une approche immersive appelée "mode tâches verrouillées". Lorsque le système s'exécute en mode tâches verrouillées, les utilisateurs d'appareils ne peuvent généralement pas voir les notifications, accéder aux applications non autorisées ni revenir à l'écran d'accueil, sauf si l'application Home est sur la liste d'autorisation.

Seules les applications ajoutées à la liste d'autorisation par un outil de contrôle des règles relatives aux appareils (DPC) peuvent s'exécuter lorsque le système est en mode tâches verrouillées. Toutefois, le système et les applications privilégiées peuvent s'exécuter en mode tâches verrouillées sans être ajoutés à la liste d'autorisation.

Cette valeur peut correspondre à l'une des valeurs de chaîne R.attr.lockTaskMode suivantes :

Valeur Description
"normal" Valeur par défaut. Il s'agit de la valeur par défaut. Les tâches ne sont pas lancées en mode tâches verrouillées, mais peuvent y être placées en appelant startLockTask().
"never"

Les tâches ne sont pas lancées en mode lockTask, et l'utilisateur de l'appareil ne peut pas les épingler à partir de l'écran "Recents" (Éléments récents).

Remarque : Ce mode n'est disponible que pour les applications système et privilégiées. Les applications non privilégiées ayant cette valeur sont traitées comme normal.

"if_whitelisted" Si l'outil DPC autorise ce package à l'aide de DevicePolicyManager.setLockTaskPackages(), ce mode est identique à always, sauf que l'activité doit appeler stopLockTask() avant de pouvoir terminer s'il s'agit de la dernière tâche verrouillée. Si l'outil DPC n'autorise pas ce package, ce mode est identique à normal.
"always"

Les tâches associées à cette activité sont toujours lancées en mode tâches verrouillées. Si le système est déjà en mode tâches verrouillées au lancement de cette tâche, la nouvelle tâche est lancée en plus de la tâche actuelle. Pour que les tâches lancées dans ce mode quittent le mode tâches verrouillées, appelez finish().

Remarque : Ce mode n'est disponible que pour les applications système et privilégiées. Les applications non privilégiées ayant cette valeur sont traitées comme normal.

Cet attribut a été introduit dans le niveau d'API 23.

android:maxRecents
Nombre maximal de tâches associées à cette activité dans l'écran "Recents" (Éléments récents). Lorsque ce nombre d'entrées est atteint, le système supprime de l'écran "Recents" (Éléments récents) l'instance la moins récemment utilisée. Les valeurs valides sont des entiers compris entre 1 et 50, ou entre 1 et 25 sur les appareils à faible mémoire. Utiliser zéro n'est pas valide. La valeur par défaut est 16.
android:maxAspectRatio

Format maximal accepté par l'activité. Si l'application s'exécute sur un appareil dont le format est plus large, le système recadre automatiquement l'application, laissant des portions de l'écran inutilisées pour qu'elle puisse s'exécuter au format maximal spécifié.

Le format maximal est exprimé sous la forme décimale correspondant au quotient de la dimension la plus longue de l'appareil, divisé par sa dimension la plus courte. Par exemple, si le format maximal est de 7:3, définissez la valeur de cet attribut sur 2,33.

Sur les appareils non connectés, la valeur de cet attribut doit être 1,33 ou supérieure. Sur les accessoires connectés, elle doit être de 1 ou plus. Dans le cas contraire, le système ignore la valeur définie.

Remarque : Cet attribut est ignoré si la valeur resizeableActivity de l'activité est définie sur "true", car cela signifie que votre activité accepte toutes les tailles.

Pour en savoir plus sur cet attribut, consultez la section Déclarer un format maximum.

android:multiprocess
Indique si une instance de l'activité peut être lancée dans le processus du composant qui l'a lancée. "true" si tel est le cas, et "false" dans le cas contraire. La valeur par défaut est "false".

Normalement, une nouvelle instance d'une activité est lancée dans le processus de l'application qui l'a définie. Toutes les instances de l'activité s'exécutent donc dans le même processus. Toutefois, si cet indicateur est défini sur "true", les instances de l'activité peuvent s'exécuter dans plusieurs processus, ce qui permet au système de créer des instances partout où elles sont utilisées (à condition que les autorisations le permettent), ce qui n'est presque jamais nécessaire ni souhaitable.

android:name
Nom de la classe qui implémente l'activité, sous-classe de Activity. La valeur de l'attribut est généralement un nom de classe complet, tel que "com.example.project.ExtracurricularActivity". Cependant, pour faire court, si le premier caractère du nom est un point (".ExtracurricularActivity", par exemple), il est ajouté à l'espace de noms spécifié dans l'élément build.gradle.

Une fois l'application publiée, ne modifiez pas ce nom, sauf si vous définissez android:exported="false". Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:noHistory
Indique si l'activité est supprimée de la pile d'activités et terminée, en appelant sa méthode finish(), lorsque l'utilisateur la quitte et qu'elle n'est plus visible à l'écran. "true" si tel est le cas, et "false" dans le cas contraire. La valeur par défaut est "false".

La valeur "true" signifie que l'activité ne laissera pas de trace historique. Elle ne restera pas dans la pile d'activités de la tâche. L'utilisateur ne pourra donc pas y revenir. Dans ce cas, onActivityResult() n'est jamais appelé si vous démarrez une autre activité pour démarrer un processus à partir de cette activité.

Cet attribut a été introduit dans le niveau d'API 3.

android:parentActivityName
Nom de classe du parent logique de l'activité. Le nom ici doit correspondre au nom de classe attribué à l'attribut android:name de l'élément <activity> correspondant.

Le système lit cet attribut pour déterminer quelle activité doit démarrer lorsque l'utilisateur appuie sur le bouton "Haut" de la barre d'action. Le système peut également utiliser ces informations pour synthétiser une pile d'activités antérieure avec TaskStackBuilder.

Pour prendre en charge les niveaux d'API 4 à 16, vous pouvez également déclarer l'activité parent avec un élément <meta-data> qui spécifie une valeur pour "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>

Pour en savoir plus sur la déclaration de l'activité parent afin de permettre la navigation vers le haut, consultez la section Ajouter la navigation vers le haut.

Cet attribut a été introduit dans le niveau d'API 16.

android:persistableMode

Définit la manière dont l'instance d'une activité est préservée dans une tâche associée lors des redémarrages d'appareils.

Si l'activité racine d'une tâche définit la valeur de cet attribut sur persistRootOnly, seule l'activité racine est conservée. Dans le cas contraire, les activités qui se trouvent plus haut dans la pile "Retour" de la tâche sont examinées. Toute activité qui définit la valeur de cet attribut sur persistAcrossReboots est conservée.

Si vous utilisez cet attribut, vous devez lui attribuer la valeur suivante :

Valeur Description
persistRootOnly Valeur par défaut. Lorsque le système redémarre, la tâche est conservée, mais seul l'intent de lancement de l'activité racine est utilisé.

Lorsque l'intent de lancement de votre application charge l'activité racine de votre application, l'activité ne reçoit pas d'objet PersistableBundle. Par conséquent, n'utilisez pas onSaveInstanceState() pour préserver l'état de l'activité racine de votre application lors du redémarrage d'un appareil.

Remarque : Cette valeur d'attribut n'affecte le comportement de votre application que si elle est définie sur l'activité racine de votre application.

persistAcrossReboots

L'état de cette activité est conservé, ainsi que l'état de chaque activité située plus haut dans la pile "Retour", dont l'attribut persistableMode est défini sur persistAcrossReboots. Si une activité ne comporte pas d'attribut persistableMode défini sur persistAcrossReboots ou qu'elle est lancée via l'indicateur Intent.FLAG_ACTIVITY_NEW_DOCUMENT, cette activité, ainsi que toutes les activités situées plus haut dans la pile "Retour" ne sont pas conservées.

Lorsqu'un intent charge une activité dont l'attribut persistableMode est défini sur persistAcrossReboots dans votre application, l'activité reçoit un objet PersistableBundle dans sa méthode onCreate(). Par conséquent, vous pouvez utiliser onSaveInstanceState() pour conserver l'état d'une activité lors du redémarrage d'un appareil, à condition que l'attribut persistableMode soit défini sur persistAcrossReboots.

Remarque  : Cette valeur d'attribut affecte le comportement de votre application, même si elle est définie sur une activité autre que l'activité racine de votre application.

persistNever

L'état de l'activité n'est pas conservé.

Remarque : Cette valeur d'attribut n'affecte le comportement de votre application que si elle est définie sur l'activité racine de votre application.

Cet attribut a été introduit dans le niveau d'API 21.

android:permission
Nom d'une autorisation que les clients doivent avoir pour lancer l'activité ou qu'ils doivent obtenir pour répondre à un intent. Si un appelant de startActivity() ou startActivityForResult() n'a pas reçu l'autorisation spécifiée, son intent ne sera pas transmis à l'activité.

Si cet attribut n'est pas spécifié, l'autorisation définie par l'attribut permission de l'élément <application> s'applique à l'activité. Si aucun attribut n'est défini, l'activité n'est pas protégée par une autorisation.

Pour en savoir plus, consultez la section Autorisations de la présentation du fichier manifeste d'application, ainsi que les conseils de sécurité.

android:process
Nom du processus dans lequel l'activité s'exécutera. Normalement, tous les composants d'une application s'exécutent avec un nom de processus par défaut créé pour celle-ci, et vous n'avez pas besoin d'utiliser cet attribut. Toutefois, si nécessaire, vous pouvez remplacer le nom du processus par défaut par cet attribut, ce qui vous permet de répartir les composants de l'application sur plusieurs processus.

Si le nom assigné à cet attribut commence par le signe deux-points (:), un processus réservé à l'application est créé lorsque cela est nécessaire, et l'activité est exécutée dans ce processus.

Si le nom du processus commence par une lettre minuscule, l'activité s'exécute dans un processus global du même nom, à condition qu'elle soit autorisée à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

L'attribut process de l'élément <application> peut définir un nom de processus par défaut différent pour tous les composants.

android:relinquishTaskIdentity
Indique si l'activité cède ses identifiants de tâche à une activité supérieure à celle-ci dans la pile. Une tâche dont l'attribut racine est défini sur "true" remplacera l'Intent de base par l'activité suivante de cette tâche.

Si l'attribut de l'activité suivante est également défini sur "true", l'Intent de base sera généré pour toute activité lancée dans la même tâche. Le processus se poursuit pour chaque activité jusqu'à ce qu'une activité corresponde à l'attribut "false". La valeur par défaut est "false".

Cet attribut défini sur "true" permet également à l'activité d'utiliser ActivityManager.TaskDescription pour modifier les libellés, les couleurs et les icônes de l'écran "Recents" (Éléments récents).

android:resizeableActivity

Indique si l'application est compatible avec le mode multifenêtre. Vous pouvez définir cet attribut dans l'élément <activity> ou <application>.

Si vous définissez cet attribut sur "true", l'utilisateur peut lancer l'activité en mode Écran partagé et en mode Format libre. Si vous le définissez sur "false", l'application ne peut pas être testée ni optimisée pour un environnement multifenêtre. Pour activer l'activité en mode multifenêtre, le système peut toujours appliquer le mode de compatibilité.

Définir cet attribut sur "false" ne garantit pas qu'aucune autre application en mode multifenêtre (telle que Picture-in-picture) n'est visible à l'écran ni sur d'autres écrans. Par conséquent, cela ne signifie pas que votre application dispose d'un accès exclusif aux ressources.

Si votre application cible un niveau d'API 24 ou supérieur et que vous ne spécifiez pas de valeur pour cet attribut, la valeur de l'attribut est définie par défaut sur "true".

Si votre application cible le niveau d'API 31 ou supérieur, cet attribut fonctionne différemment sur les petits et les grands écrans :

  • Grands écrans (SW = > 600 dp) : toutes les applications sont compatibles avec le mode multifenêtre. L'attribut indique si une application peut être redimensionnée (et non si elle est compatible avec le mode multifenêtre). Si la valeur est resizeableActivity="false", l'application passe en mode de compatibilité lorsque cela est nécessaire, conformément aux dimensions d'affichage.
  • Petits écrans (SW < 600 dp) : si resizeableActivity="true" et si la largeur et la hauteur minimales de l'activité sont conformes aux exigences du mode multifenêtre, l'application est compatible avec le mode multifenêtre. Si cette valeur indique resizeableActivity="false", l'application n'est pas compatible avec le mode multifenêtre, quelles que soient la largeur et la hauteur minimales de l'activité.

Remarque : Les fabricants d'appareils peuvent ignorer le comportement du niveau d'API 31.

Cet attribut a été ajouté au niveau d'API 24.

Remarque : La valeur de l'activité racine d'une tâche est appliquée à toutes les autres activités qui y sont lancées. Autrement dit, si l'activité racine d'une tâche peut être redimensionnée, le système considère toutes les autres activités de cette tâche comme redimensionnables. Si l'activité racine n'est pas redimensionnable, les autres activités de la tâche ne le sont pas.

android:screenOrientation

Orientation de l'activité sur l'écran de l'appareil.

Sur Android 7.0 (niveau d'API 24) ou version ultérieure, le système ignore les modifications apportées à l'environnement d'exécution pour cet attribut si l'activité est en mode multifenêtre.

Sous Android 12 (niveau d'API 31) ou version ultérieure, les fabricants d'appareils peuvent configurer des écrans d'appareil individuels (comme l'écran de tablette d'un pliable) afin qu'ils ignorent la spécification d'orientation. Ils peuvent également forcer une application définie pour être en portrait uniquement à s'afficher à la verticale, mais au format letterbox sur les écrans en mode paysage. Cette stratégie conserve le format portrait de l'application, mais oriente l'application de sorte à optimiser l'usabilité.

Cette valeur peut correspondre à l'une des chaînes suivantes :

"unspecified" Valeur par défaut. Le système choisit l'orientation. La règle utilisée et les choix effectués dans des contextes spécifiques peuvent varier d'un appareil à l'autre.
"behind" Même orientation que l'activité située juste en dessous dans la pile d'activités.
"landscape" Orientation paysage (l'écran est plus large que haut).
"portrait" Orientation portrait (l'écran est plus haut que large).
"reverseLandscape" Orientation paysage dans le sens opposé au mode paysage standard. Attribut ajouté au niveau d'API 9.
"reversePortrait" Orientation portrait dans le sens opposé au mode portrait standard. Attribut ajouté au niveau d'API 9.
"sensorLandscape" Orientation paysage standard ou inversée selon le capteur de l'appareil. Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur. Attribut ajouté au niveau d'API 9.
"sensorPortrait" Orientation portrait standard ou inversée selon le capteur de l'appareil. Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur. Toutefois, selon la configuration de l'appareil, la rotation de 180 degrés par rapport à l'original n'est pas toujours autorisée. Attribut ajouté au niveau d'API 9.
"userLandscape" Orientation paysage standard ou inversée selon le capteur de l'appareil et les préférences de l'utilisateur. Attribut ajouté au niveau d'API 18.
"userPortrait" Orientation portrait standard ou inversée selon le capteur de l'appareil et les préférences de l'utilisateur. Toutefois, selon la configuration de l'appareil, la rotation de 180 degrés par rapport à l'original n'est pas toujours autorisée. Attribut ajouté au niveau d'API 18.
"sensor" L'orientation est déterminée par le capteur d'orientation de l'appareil. L'orientation de l'écran dépend de la façon dont l'utilisateur tient l'appareil. Elle change lorsqu'il fait pivoter l'appareil. Cependant, certains appareils ne pivotent pas par défaut dans les quatre orientations possibles. Pour activer les quatre orientations, utilisez "fullSensor". Le capteur est utilisé même si l'utilisateur a verrouillé la rotation basée sur le capteur.
"fullSensor" L'une des quatre orientations est déterminée par le capteur d'orientation. Cette méthode est semblable à "sensor", à la différence près qu'elle autorise l'une des quatre orientations d'écran possibles, quelles que soient les actions habituellement possibles avec l'appareil. Par exemple, certains appareils n'utilisent généralement pas le mode portrait ou paysage inversé, mais ces orientations sont tout de même activées. Attribut ajouté au niveau d'API 9.
"nosensor" L'orientation est déterminée sans tenir compte d'un capteur d'orientation physique. Le capteur est ignoré. L'écran ne pivote donc pas en fonction de la façon dont l'utilisateur déplace l'appareil.
"user" Orientation préférée actuelle de l'utilisateur.
"fullUser" Si l'utilisateur a verrouillé la rotation basée sur le capteur, le comportement est le même que l'attribut user. Sinon, le comportement est le même que fullSensor et l'une des quatre orientations d'écran est possible. Attribut ajouté au niveau d'API 18.
"locked" Verrouille la direction actuelle de l'orientation, quelle qu'elle soit. Attribut ajouté au niveau d'API 18.

Remarque : Lorsque vous déclarez l'une des valeurs paysage ou portrait, elle est considérée comme une exigence stricte pour l'orientation dans laquelle l'activité s'exécute. La valeur que vous déclarez permet un filtrage par services tels que Google Play, afin que votre application ne soit disponible que sur les appareils compatibles avec l'orientation requise par vos activités. Par exemple, si vous déclarez "landscape", "reverseLandscape" ou "sensorLandscape", votre application ne sera disponible que pour les appareils compatibles avec l'orientation paysage.

Vous devez également déclarer explicitement que votre application nécessite l'orientation portrait ou paysage avec l'élément <uses-feature> (par exemple, <uses-feature android:name="android.hardware.screen.portrait"/>). Il s'agit d'un comportement de filtrage fourni par Google Play et d'autres services compatibles. La plate-forme elle-même ne contrôle pas si votre application peut être installée lorsqu'un appareil n'accepte que certaines orientations.

android:showForAllUsers

Indique si l'activité est affichée lorsque l'utilisateur actuel de l'appareil est différent de celui qui a lancé l'activité. Vous pouvez définir cet attribut sur une valeur littérale ("true" ou "false") ou définir un attribut de ressource ou thématique contenant une valeur booléenne.

Cet attribut a été ajouté au niveau d'API 23.

android:stateNotNeeded
Indique si l'activité peut être arrêtée et redémarrée avec succès sans avoir enregistré son état. "true" si elle peut être redémarrée sans référence à son état précédent, et "false" si son état précédent est requis. La valeur par défaut est "false".

Normalement, avant qu'une activité ne soit temporairement arrêtée pour économiser des ressources, sa méthode onSaveInstanceState() est appelée. Cette méthode stocke l'état actuel de l'activité dans un objet Bundle, qui est ensuite transmis à onCreate() lorsque l'activité est redémarrée. Si cet attribut est défini sur "true", onSaveInstanceState() ne peut pas toujours être appelé, et onCreate() est transmis avec null à la place du Bundle, comme c'est le cas lorsque l'activité démarre pour la première fois.

Le paramètre "true" garantit que l'activité peut redémarrer sans que l'état ne soit conservé. Par exemple, l'activité qui affiche l'écran d'accueil utilise ce paramètre pour éviter qu'elle ne soit supprimée en cas de plantage quelconque.

android:supportsPictureInPicture

Indique si l'activité est compatible avec le mode d'affichage Picture-in-picture.

android:taskAffinity
Tâche avec laquelle l'activité a une affinité. Les activités avec la même affinité appartiennent conceptuellement à la même tâche (à la même "application" du point de vue de l'utilisateur). L'affinité d'une tâche est déterminée par l'affinité de son activité racine.

Elle détermine deux choses : la nouvelle tâche parent vers laquelle l'activité est renvoyée (voir l'attribut allowTaskReparenting) et la tâche qui héberge l'activité lorsqu'elle est lancée avec l'indicateur FLAG_ACTIVITY_NEW_TASK.

Par défaut, toutes les activités d'une application ont la même affinité. Vous pouvez définir cet attribut pour les regrouper différemment, et même placer les activités définies dans différentes applications au sein de la même tâche. Pour spécifier que l'activité n'a aucune affinité avec une tâche, définissez-la sur une chaîne vide.

Si cet attribut n'est pas défini, l'activité hérite de l'affinité spécifiée pour l'application. Consultez l'attribut taskAffinity de l'élément <application>. Le nom de l'affinité par défaut d'une application est l'espace de noms défini dans le fichier build.gradle.

android:theme
Renvoie à une ressource de style définissant un thème général pour l'activité. Il définit automatiquement le contexte de l'activité pour l'utilisation de ce theme et peut également entraîner des animations de "début" avant le lancement de l'activité (pour être encore plus fidèle à l'activité réelle).

Si cet attribut n'est pas spécifié, l'activité hérite du thème défini pour l'application dans son ensemble, à partir de l'attribut theme de l'élément <application>. Si cet attribut n'est pas non plus spécifié, le thème système par défaut est utilisé. Pour en savoir plus, consultez la section Styles et thèmes.

android:uiOptions
Options supplémentaires pour l'interface utilisateur d'une activité. Doit correspondre à l'une des valeurs suivantes.

ValeurDescription
"none"Aucune option d'interface utilisateur supplémentaire. Il s'agit de l'option par défaut.
"splitActionBarWhenNarrow"Ajoute une barre en bas de l'écran pour afficher les tâches dans la barre d'application (également appelée barre d'action) lorsque l'espace horizontal de l'écran est limité (par exemple, en mode portrait sur un téléphone). Au lieu d'afficher quelques-unes des tâches qui apparaissent dans la barre d'application en haut de l'écran, celle-ci est divisée en deux sections : la partie de navigation supérieure et la barre de tâches inférieure. Vous disposerez ainsi d'un espace raisonnable non seulement pour les tâches, mais aussi pour la navigation et les éléments de titre dans la partie supérieure. Les éléments de menu ne sont pas répartis entre les deux barres. Ils apparaissent toujours ensemble.

Pour en savoir plus, consultez Ajouter la barre d'application.

Cet attribut a été ajouté au niveau d'API 14.

android:windowSoftInputMode
Interactions entre la fenêtre principale de l'activité et la fenêtre contenant le clavier virtuel à l'écran. Le paramètre de cet attribut a une incidence sur deux éléments :
  • Il indique si le clavier virtuel est masqué ou visible lorsque l'activité est au centre de l'attention de l'utilisateur.
  • Il indique si la taille de la fenêtre principale de l'activité doit être réduite pour faire de la place au clavier virtuel ou si son contenu doit apparaître en panoramique pour que l'élément sélectionné soit visible à l'écran lorsqu'une partie de la fenêtre est recouverte par le clavier virtuel.

Ce paramètre doit correspondre à l'une des valeurs répertoriées dans le tableau suivant, ou à une combinaison de la valeur "state..." et d'une valeur "adjust...". La spécification de plusieurs valeurs dans l'un ou l'autre des groupes (plusieurs valeurs "state...", par exemple) génère des résultats non définis. Les valeurs individuelles sont séparées par une barre verticale (|), comme dans l'exemple suivant :

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

Les valeurs définies ici (autres que "stateUnspecified" et "adjustUnspecified") remplacent les valeurs définies dans le thème.

Valeur Description
"stateUnspecified" L'état du clavier virtuel (masqué ou visible) n'est pas spécifié. Le système choisira un état approprié ou se basera sur le paramètre du thème.

Ce paramètre est le comportement par défaut du clavier virtuel.

"stateUnchanged" Le clavier virtuel est conservé dans son état précédent, qu'il soit visible ou masqué, lorsque l'activité apparaît au premier plan.
"stateHidden" Le clavier virtuel est masqué lorsque l'utilisateur choisit l'activité, c'est-à-dire lorsqu'il y accède explicitement au lieu d'y retourner après avoir quitté une autre activité.
"stateAlwaysHidden" Le clavier virtuel est toujours masqué lorsque la fenêtre principale de l'activité est sélectionnée.
"stateVisible" Le clavier virtuel est visible lorsque l'utilisateur choisit l'activité, c'est-à-dire lorsqu'il y accède de manière explicite au lieu d'y retourner après avoir quitté une autre activité.
"stateAlwaysVisible" Le clavier virtuel est visible lorsque la fenêtre est sélectionnée.
"adjustUnspecified" Il n'est pas précisé si la fenêtre principale de l'activité doit être redimensionnée pour laisser de la place au clavier virtuel ou si son contenu doit apparaître en panoramique pour que l'élément sélectionné soit visible à l'écran. Le système sélectionne automatiquement l'un de ces modes selon que le contenu de la fenêtre comporte des vues de mise en page qui peuvent faire défiler leur contenu. Dans ce cas, la fenêtre est redimensionnée selon l'hypothèse que le défilement peut rendre tout contenu de la fenêtre visible dans une zone plus petite.

Il s'agit du paramètre par défaut pour le comportement de la fenêtre principale.

"adjustResize" La fenêtre principale de l'activité est toujours redimensionnée pour faire de la place au clavier virtuel à l'écran.
"adjustPan" La fenêtre principale de l'activité n'est pas redimensionnée pour faire de la place au clavier virtuel. À la place, le contenu de la fenêtre est automatiquement affiché en panoramique de sorte que la sélection active ne soit jamais masquée par le clavier et que les utilisateurs puissent toujours voir ce qu'ils saisissent. Ce comportement n'est généralement pas aussi souhaitable que le redimensionnement, car l'utilisateur peut avoir à fermer le clavier virtuel pour accéder à des parties masquées de la fenêtre et interagir avec elles.

Cet attribut a été introduit dans le niveau d'API 3.

Première apparition :
Niveau d'API 1 pour tous les attributs, à l'exception de noHistory et windowSoftInputMode, qui ont été ajoutés au niveau d'API 3
Voir aussi :
<application>
<activity-alias>