Gospodarz ogranicza liczbę szablonów wyświetlanych dla danego zadania do maksymalnie 5, z których ostatni musi być jednym z tych typów:
NavigationTemplatePaneTemplateMessageTemplateMediaPlaybackTemplateSignInTemplateLongMessageTemplate
Pamiętaj, że ten limit dotyczy liczby szablonów, a nie liczby instancji w stosie.Screen Jeśli na przykład aplikacja wyśle 2 szablony
na ekranie A, a potem przejdzie do ekranu B, może teraz wysłać jeszcze 3 szablony.
Jeśli jednak każdy ekran jest skonstruowany tak, aby wysyłać pojedynczy szablon, aplikacja może umieścić 5 instancji ekranu na stosie ScreenManager.
Istnieją jednak wyjątki od tych ograniczeń: odświeżanie szablonów oraz operacje przywracania i resetowania.
Odświeżanie szablonów
Niektóre aktualizacje treści nie są wliczane do limitu szablonów. Ogólnie rzecz biorąc, jeśli aplikacja przesyła nowy szablon tego samego typu, który zawiera te same główne treści co poprzedni szablon, nie jest on wliczany do limitu. Na przykład zmiana stanu przełącznika w wierszu w ListTemplate nie wlicza się do limitu. Więcej informacji o tym, jakie rodzaje aktualizacji treści można uznać za odświeżenie, znajdziesz w dokumentacji poszczególnych szablonów.
Operacje cofania
Aby włączyć podrzędne przepływy w ramach zadania, host wykrywa, kiedy aplikacja wycofuje się z Screen stosu ScreenManager, i aktualizuje pozostały limit na podstawie liczby szablonów, o którą aplikacja się cofa.
Jeśli na przykład aplikacja wyśle 2 szablony na ekranie A, a potem przejdzie do ekranu B i wyśle 2 kolejne szablony, pozostanie jej 1 szablon do wykorzystania. Jeśli aplikacja wróci do ekranu A, host zresetuje limit do 3, ponieważ aplikacja cofnęła się o 2 szablony.
Pamiętaj, że podczas powrotu do ekranu aplikacja musi wysłać szablon tego samego typu co ostatni szablon wysłany przez ten ekran. Wysłanie szablonu innego typu spowoduje błąd. Jeśli jednak typ pozostanie taki sam podczas operacji powrotu, aplikacja może swobodnie modyfikować zawartość szablonu bez wpływu na limit.
Operacje resetowania
Niektóre szablony mają specjalną semantykę, która oznacza koniec zadania. Na przykład NavigationTemplate to widok, który powinien pozostać na ekranie i być odświeżany nowymi instrukcjami skrętu dla użytkownika.
Gdy zadanie dotrze do jednego z tych szablonów, host zresetuje limit szablonu, traktując go jako pierwszy krok nowego zadania. Umożliwia to aplikacji rozpoczęcie nowego zadania. Więcej informacji znajdziesz w dokumentacji poszczególnych szablonów, aby dowiedzieć się, które z nich powodują resetowanie hosta.
Jeśli host otrzyma intencję uruchomienia aplikacji z działania powiadomienia lub z programu uruchamiającego, limit zostanie zresetowany. Ten mechanizm umożliwia aplikacji rozpoczęcie nowego przepływu zadań z poziomu powiadomień, nawet jeśli jest ona już powiązana i działa na pierwszym planie.