Écran "Recents" (Éléments récents), également appelé écran "Overview" (Aperçu), pour les tâches récentes ou l'écran des applications récentes, est une interface utilisateur au niveau du système qui répertorie les activités et tâches. L'utilisateur peut parcourir la liste, sélectionner une tâche reprendre ou supprimer une tâche de la liste en la balayant.
L'écran "Recents" (Éléments récents) utilise une interface centrée sur les documents d'assistance, intégré à Android 5.0 (API niveau 21), dans lequel plusieurs instances la même activité contenant des documents différents peut apparaître comme des tâches dans Écran "Récents". Par exemple, Google Drive peut proposer une tâche pour chacun plusieurs documents Google. Chaque document apparaît en tant que tâche dans la section écran:
<ph type="x-smartling-placeholder">Un autre exemple courant est lorsque l'utilisateur utilise son navigateur et qu'il appuie sur Partager > Gmail : L'écran Nouveau message de l'application Gmail s'affiche. En appuyant sur l'icône Le bouton "Récents" affiche alors Chrome et Gmail de manière distincte. tâches:
<ph type="x-smartling-placeholder">Normalement, vous laissez le système définir la façon dont vos tâches et activités dans l'écran "Recents" (Éléments récents). Vous n'avez pas besoin de le modifier comportemental. Toutefois, votre application peut déterminer quand et comment les activités apparaissent dans les Écran "Récents".
La
ActivityManager.AppTask
permet de gérer les tâches, ainsi que les indicateurs d'activité de
Intent
permet de spécifier quand une
est ajoutée ou supprimée de l'écran "Récents". Par ailleurs,
Les attributs <activity>
vous permettent de définir
le comportement dans le fichier manifeste.
Ajouter des tâches à l'écran "Récents"
Utiliser les options de la classe Intent
pour :
ajouter une tâche vous permet de mieux contrôler quand et comment un document s'ouvre ou
rouverte dans l'écran "Récents". Lorsque vous utilisez la
<activity>
, vous pouvez
choisir d'ouvrir toujours le document dans une nouvelle tâche ou de réutiliser un document existant
pour le document.
Utiliser l'indicateur d'intent pour ajouter une tâche
Lorsque vous créez un document pour votre activité, vous appelez la méthode
startActivity()
en lui transmettant l'intent qui lance l'activité. Pour insérer un opérateur logique
pour que le système traite votre activité comme une nouvelle tâche
à l'écran, transmettez
FLAG_ACTIVITY_NEW_DOCUMENT
indicateur dans le addFlags()
du Intent
qui lance la
activité.
Si vous définissez FLAG_ACTIVITY_MULTIPLE_TASK
lorsque vous créez le document, le système crée toujours une nouvelle tâche avec
l'activité cible en tant que racine. Avec ce paramètre, le même document
ouvert dans plusieurs tâches. Le code suivant montre comment
effectue cette opération:
Kotlin
fun createNewDocument(view: View) { val newDocumentIntent = newDocumentIntent() if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) } startActivity(newDocumentIntent) } private fun newDocumentIntent(): Intent = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++) }
Java
public void createNewDocument(View view) { final Intent newDocumentIntent = newDocumentIntent(); if (useMultipleTasks) { newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); } startActivity(newDocumentIntent); } private Intent newDocumentIntent() { boolean useMultipleTasks = checkbox.isChecked(); final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++); return newDocumentIntent; } }
Lorsque l'activité principale lance une nouvelle activité, le système effectue une recherche dans
des tâches existantes dont l'intent correspond au nom du composant d'intent et au
des données d'intent pour l'activité. Si la tâche est introuvable ou si l'intent est contenu
l'/le/la FLAG_ACTIVITY_MULTIPLE_TASK
, une tâche est créée avec l'activité comme racine.
Si le système trouve une tâche dont l'intent correspond au nom du composant d'intent et
les données d'intent, il met cette tâche au premier plan et transmet le nouvel intent à
onNewIntent()
La nouvelle activité récupère l'intent et crée un document dans la section "Recents" (Éléments récents).
écran, comme illustré dans l'exemple suivant:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_new_document) documentCount = intent .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0) documentCounterTextView = findViewById(R.id.hello_new_document_text_view) setDocumentCounterText(R.string.hello_new_document_counter) } override fun onNewIntent(newIntent: Intent) { super.onNewIntent(newIntent) /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this Activity will be reused. */ setDocumentCounterText(R.string.reusing_document_counter) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_document); documentCount = getIntent() .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0); documentCounterTextView = (TextView) findViewById( R.id.hello_new_document_text_view); setDocumentCounterText(R.string.hello_new_document_counter); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity is reused to create a new document. */ setDocumentCounterText(R.string.reusing_document_counter); }
Utiliser l'attribut activity pour ajouter une tâche
Une activité peut également spécifier dans son fichier manifeste qu'elle se lance systématiquement dans une nouvelle
tâche à l'aide de la commande <activity>
l'attribut android:documentLaunchMode
.
Cet attribut comporte quatre valeurs. Voici ce qui se produit lorsque l'utilisateur
ouvre un document avec l'application:
intoExisting
- L'activité réutilise une tâche existante pour le document. Cela revient à définir
FLAG_ACTIVITY_NEW_DOCUMENT
option sans définirFLAG_ACTIVITY_MULTIPLE_TASK
, comme décrit dans les Utiliser l'option Intent pour ajouter une tâche. always
- L'activité crée une tâche pour le document, même s'il est
déjà ouvert. Utiliser cette valeur revient à définir à la fois
options
FLAG_ACTIVITY_NEW_DOCUMENT
etFLAG_ACTIVITY_MULTIPLE_TASK
. none
- L'activité ne crée pas de tâche pour le document. Les éléments récents l'écran traite l'activité comme il le ferait par défaut. 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é ne crée pas de tâche pour le document. Définir cette valeur
remplace le comportement
FLAG_ACTIVITY_NEW_DOCUMENT
etFLAG_ACTIVITY_MULTIPLE_TASK
options. Si l'un de ces éléments est défini dans l'intent et que l'écran "Recents" (Éléments récents) affiche une seule tâche pour l'application, elle reprend à partir de n'importe quelle activité dernier appel de l'utilisateur.
Supprimer des tâches
Par défaut, une tâche liée au document se ferme automatiquement de l'écran "Éléments récents".
lorsque son activité se termine. Vous pouvez ignorer ce comportement à l'aide de la méthode
ActivityManager.AppTask
, avec un indicateur Intent
ou avec
un attribut <activity>
.
Vous pouvez toujours exclure complètement une tâche de l'écran "Applications récentes" en définissant
Attribut <activity>
android:excludeFromRecents
à true
.
Vous pouvez définir le nombre maximal de tâches que votre application peut inclure dans le
l'écran "Récents" en définissant
Attribut <activity>
android:maxRecents
à un
et un nombre entier. Lorsque le nombre maximal
de tâches est atteint,
la tâche la plus récemment utilisée disparaît de l'écran "Recents" (Éléments récents). La valeur par défaut est 16,
et la valeur maximale est 50 (25 sur les appareils à faible mémoire). Valeur inférieure
supérieur à 1 ne sont pas valides.
Utiliser la classe AppTask pour supprimer des tâches
Dans l'activité qui crée une tâche de l'écran "Recents" (Éléments récents), vous pouvez :
spécifier quand supprimer la tâche et terminer toutes les activités qui lui sont associées en
en appelant la méthode
finishAndRemoveTask()
méthode:
Kotlin
fun onRemoveFromOverview(view: View) { // It is good pratice to remove a document from the overview stack if not needed anymore. finishAndRemoveTask() }
Java
public void onRemoveFromRecents(View view) { // The document is no longer needed; remove its task. finishAndRemoveTask(); }
Conserver les tâches terminées
Si vous souhaitez conserver une tâche dans l'écran "Actions récentes", même si son activité a
terminé, transmettez la
FLAG_ACTIVITY_RETAIN_IN_RECENTS
dans la section
Méthode addFlags()
de
qui lance l'activité.
Kotlin
private fun newDocumentIntent() = Intent(this, NewDocumentActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS) putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()) }
Java
private Intent newDocumentIntent() { final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class); newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS); newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement()); return newDocumentIntent; }
Pour obtenir le même effet, définissez la
Attribut <activity>
android:autoRemoveFromRecents
à false
. La valeur par défaut est true
pour les activités liées aux documents et false
pour
les activités
régulières. L'utilisation de cet attribut remplace
FLAG_ACTIVITY_RETAIN_IN_RECENTS
.
Activer le partage d'URL pour les éléments récents (Pixel uniquement)
Sur les appareils Pixel fonctionnant sous Android 12 ou version ultérieure, les utilisateurs peuvent partager des liens au contenu Web récemment consulté, directement depuis l'écran "Récents". Après la visite contenu dans une application, l'utilisateur peut balayer l'écran jusqu'à l'écran "Récents" et trouver l'application où ils ont regardé le contenu, puis appuyez sur le bouton "Lien" pour copier ou partager URL.
<ph type="x-smartling-placeholder">Toute application peut activer l'association des applications récentes pour les utilisateurs en fournissant une interface utilisateur Web et
remplacement
onProvideAssistContent()
,
comme illustré dans l'exemple suivant:
Kotlin
class MainActivity : AppCompatActivity() { protected fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun onProvideAssistContent(outContent: AssistContent) { super.onProvideAssistContent(outContent) outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")) } }
Java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onProvideAssistContent(AssistContent outContent) { super.onProvideAssistContent(outContent); outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage")); } }