Der Host begrenzt die Anzahl der Vorlagen, die für eine bestimmte Aufgabe angezeigt werden, auf maximal fünf. Die letzte Vorlage muss einen der folgenden Typen haben:
NavigationTemplatePaneTemplateMessageTemplateMediaPlaybackTemplateSignInTemplateLongMessageTemplate
Dieses Limit gilt für die Anzahl der Vorlagen und nicht für die Anzahl der Screen-Instanzen im Stack. Wenn eine App beispielsweise auf Bildschirm A zwei Vorlagen sendet und dann Bildschirm B aufruft, kann sie jetzt drei weitere Vorlagen senden.
Wenn jeder Bildschirm so strukturiert ist, dass er eine einzelne Vorlage sendet, kann die App alternativ fünf Bildschirminstanzen auf den ScreenManager-Stack übertragen.
Für diese Einschränkungen gibt es Sonderfälle: Vorlagenaktualisierungen sowie Zurück- und Zurücksetzen-Vorgänge.
Vorlagenaktualisierungen
Bestimmte Inhaltsaktualisierungen werden nicht auf das Vorlagenlimit angerechnet. Wenn eine App eine neue Vorlage pusht, die denselben Typ und dieselben Hauptinhalte wie die vorherige Vorlage hat, wird die neue Vorlage in der Regel nicht auf das Kontingent angerechnet. Wenn Sie beispielsweise den Ein/Aus-Status einer Zeile in einem ListTemplate aktualisieren, wird das nicht auf das Kontingent angerechnet. In der Dokumentation der einzelnen Vorlagen erfahren Sie mehr darüber, welche Arten von Inhaltsaktualisierungen als Aktualisierung gelten.
Vorgänge für die Rückseite
Damit Unterläufe innerhalb einer Aufgabe möglich sind, erkennt der Host, wenn eine App ein Screen aus dem ScreenManager-Stack entfernt, und aktualisiert das verbleibende Kontingent basierend auf der Anzahl der Vorlagen, die die App zurückgeht.
Wenn die App beispielsweise zwei Vorlagen auf Bildschirm A sendet, dann Bildschirm B pusht und zwei weitere Vorlagen sendet, hat die App noch ein Kontingent übrig. Wenn die App dann wieder zu Bildschirm A zurückkehrt, setzt der Host das Kontingent auf drei zurück, da die App zwei Vorlagen zurückgegangen ist.
Wenn eine App zu einem Bildschirm zurückkehrt, muss sie eine Vorlage senden, die denselben Typ hat wie die zuletzt von diesem Bildschirm gesendete Vorlage. Das Senden eines anderen Vorlagentyps führt zu einem Fehler. Solange der Typ jedoch während eines Back-Vorgangs gleich bleibt, kann eine App den Inhalt der Vorlage frei ändern, ohne dass sich dies auf das Kontingent auswirkt.
Vorgänge zurücksetzen
Bestimmte Vorlagen haben eine spezielle Semantik, die das Ende einer Aufgabe signalisiert. Beispielsweise ist die NavigationTemplate eine Ansicht, die auf dem Bildschirm bleiben und mit neuen Abbiegehinweisen für den Nutzer aktualisiert werden soll.
Wenn eine Aufgabe eine dieser Vorlagen erreicht, setzt der Host das Vorlagenkontingent zurück und behandelt die Vorlage so, als wäre sie der erste Schritt einer neuen Aufgabe. Dadurch kann die App eine neue Aufgabe starten. Weitere Informationen finden Sie in der Dokumentation zu den einzelnen Vorlagen.
Wenn der Host eine Absicht zum Starten der App über eine Benachrichtigungsaktion oder über den Launcher empfängt, wird das Kontingent ebenfalls zurückgesetzt. Mit diesem Mechanismus kann eine App einen neuen Aufgabenablauf über Benachrichtigungen starten. Das gilt auch, wenn eine App bereits gebunden ist und sich im Vordergrund befindet.