Restrictions des modèles

L'hôte limite le nombre de modèles à afficher pour une tâche donnée à cinq maximum, dont le dernier modèle doit être l'un des types suivants :

Notez que cette limite s'applique au nombre de modèles et non au nombre d'instances Screen dans la pile. Par exemple, si une application envoie deux modèles sur l'écran A, puis envoie l'écran B, elle peut désormais envoyer trois modèles supplémentaires.

Si chaque écran est structuré pour envoyer un seul modèle, l'application peut envoyer cinq instances d'écran sur la pile ScreenManager.

Il existe des cas particuliers pour ces restrictions : l'actualisation des modèles, ainsi que les opérations de retour et de réinitialisation.

Actualisations des modèles

Certaines mises à jour de contenu ne sont pas comptabilisées dans la limite de modèles. En général, si une application envoie un nouveau modèle du même type et contenant le même contenu principal que le modèle précédent, le nouveau modèle n'est pas comptabilisé dans le quota. Par exemple, la modification de l'état d'activation d'une ligne dans un ListTemplate n'est pas décomptée du quota. Consultez la documentation des modèles individuels pour en savoir plus sur les types de mises à jour de contenu qui peuvent être considérés comme une actualisation.

Opérations de retour

Pour activer les sous-flux dans une tâche, l'hôte détecte lorsqu'une application extrait un Screen de la pile ScreenManager et met à jour le quota restant en fonction du nombre de modèles que l'application recule.

Par exemple, si l'application envoie deux modèles sur l'écran A, puis envoie l'écran B et deux autres modèles, il lui reste un quota. Si l'application revient à l'écran A, l'hôte réinitialise le quota à trois, car l'application a reculé de deux modèles.

Notez que, lors du retour à un écran, une application doit envoyer un modèle du même type que celui envoyé en dernier par cet écran. L'envoi de tout autre type de modèle entraîne une erreur. Toutefois, tant que le type reste le même lors d'une opération de retour, une application peut modifier librement le contenu du modèle sans affecter le quota.

Opérations de réinitialisation

Certains modèles ont une sémantique spéciale qui indique la fin d'une tâche. Par exemple, NavigationTemplate est une vue qui doit rester à l'écran et être actualisée avec de nouvelles instructions de navigation pour l'utilisateur.

Lorsqu'une tâche atteint l'un de ces modèles, l'hôte réinitialise le quota de modèles, en traitant ce modèle comme s'il s'agissait de la première étape d'une nouvelle tâche. Cela permet à l'application de démarrer une nouvelle tâche. Pour en savoir plus, consultez la documentation des modèles individuels afin de savoir lesquels déclenchent une réinitialisation sur l'hôte.

Si l'hôte reçoit un intent pour démarrer l'application à partir d'une action de notification ou du lanceur d'applications, le quota est également réinitialisé. Ce mécanisme permet à une application de démarrer un nouveau flux de tâches à partir des notifications, et ce, même si une application est déjà liée et au premier plan.