Restrições de modelos

O host limita o número de modelos a serem exibidos para determinada tarefa até o máximo de cinco. Nesse caso, o último dos modelos precisa ser um dos tipos a seguir:

Esse limite se aplica ao número de modelos, e não ao número de instâncias de Screen na pilha. Por exemplo, se um app enviar dois modelos enquanto estiver na tela A e depois abrir a tela B, ele poderá enviar mais três modelos.

Como alternativa, se cada tela for estruturada para enviar um único modelo, o app poderá enviar cinco instâncias de tela para a pilha ScreenManager.

Há casos especiais para essas restrições: atualizações de modelos e operações de retorno e redefinição.

Atualizações de modelos

Algumas atualizações de conteúdo não são contabilizadas no limite de modelos. Em geral, se um app enviar um novo modelo que seja do mesmo tipo e tenha o mesmo conteúdo principal do anterior, o novo modelo não será contabilizado na cota. Por exemplo, a atualização do estado de alternância de uma linha em um ListTemplate não é considerada na cota. Consulte a documentação de modelos individuais para saber mais sobre quais tipos de atualizações de conteúdo podem ser considerados uma atualização.

Operações de retorno

Para ativar subfluxos em uma tarefa, o host detecta quando um app está abrindo uma Screen da pilha ScreenManager e atualiza a cota restante com base no número de modelos que o app está retornando.

Por exemplo, se o app enviar dois modelos enquanto estiver na tela A, depois abrir a tela B e enviar mais dois, o app terá uma cota restante. Se o app voltar à tela A, o host vai redefinir a cota para três, porque o app voltou dois modelos.

Ao retornar a uma tela, um app precisa enviar um modelo do mesmo tipo que o último enviado por essa tela. O envio de qualquer outro tipo de modelo causa um erro. Porém, contanto que o tipo permaneça o mesmo durante uma operação de retorno, um aplicativo poderá modificar livremente o conteúdo do modelo sem afetar a cota.

Redefinir operações

Alguns modelos têm uma semântica especial que representa o final de uma tarefa. Por exemplo, o NavigationTemplate é uma visualização que deve permanecer na tela e ser atualizada com novas instruções passo a passo para o usuário.

Quando uma tarefa chega a um desses modelos, o host redefine a cota e trata o modelo como se fosse a primeira etapa de uma nova tarefa. Isso permite que o app inicie uma nova tarefa. Para saber mais, consulte a documentação de modelos individuais para saber quais deles acionam uma redefinição no host.

Se o host receber uma intent para iniciar o app por uma ação de notificação ou pela tela de início, a cota também será redefinida. Esse mecanismo permite que um app inicie um novo fluxo de tarefas pelas notificações e é válido até mesmo quando um app já está vinculado e em primeiro plano.