Pergunta

Primeiro de tudo, eu não tenho certeza se eu estou indo mesmo sobre isso da melhor maneira em termos de design, mas eu sou um pouco novo para o Android e muito novo para Xamarin.Formulários.Minha configuração é uma série de ContentPages em um Xamarin.Formulários PCL que todos lidam com informações de um serviço REST.Este serviço, ao fazer o login, concede um WorkToken que a aplicação, em seguida, agarra a fim de realizar mais operações.Estou armazenando isto em um ISessionManager.

O meu problema é um problema de fluxo de trabalho.Eu tenho um LoginPage que eu quero apresentar para o usuário se a sua sessão foi encerrada/falha/tudo;basicamente, se eles não estão registrados no e tentar fazer qualquer coisa, quero empurrar essa página novamente na pilha e forçá-los a tentativa para iniciar sessão e se eles fornecer credenciais válidas deixá-los continuar de onde parou.Tudo isto está a acontecer, para a maioria de parte, em PCL, mas eu criei um Android implementação do ISessionManager que é consultado cada ContentPage's substituído OnAppearing o método.Cada página de chamadas ISessionManager's CheckLogin o que irá fazer exatamente isso, e se não for, ele irá criar um Intent e começar a LoginActivity através disso. LoginActivity essencialmente, apenas envolve o PCL é LoginPage.

O problema que eu tenho é que, fazendo dessa maneira, o LoginActivity é executado de forma assíncrona na parte superior de qualquer página chamou.Esta página chamada está em um estado quebrado, no entanto, porque ele não foi inicializado corretamente através de RESTO o serviço ainda.Eu imagino que há duas soluções possíveis.Execute o Intent de forma síncrona (que eu não acho que é possível) ou repensar meu projeto.Aqui está o Intent o programa de configuração:

var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);

Eu chequei várias Xamarin fóruns relacionados posts sobre isso, mas não tenho encontrado muito além do básico de navegação fluxos de trabalho no Xamarin.Formulários.

Editar:Eu encontrei algo análogo ao que eu estou tentando fazer aqui: Como passar variáveis a partir de uma nova intenção de trás para a classe que o criou no android, mas dentro do contexto da Xamarin.Formulários.O startActivityForResult iria resolver o meu problema, se é que existiam em Forms.Context, mas não parece ser um equivalente.

Foi útil?

Solução

Por que você está criando uma loginatividade?é porque você precisa usar algo nativo do Android?

Meu primeiro pensamento é que depois de verificar o status do token no OnAppearing, você pode decidir empurrar ou não o modal para a página de login, após o login do usuário terminar e o token é salvar, você podeModal e mostrará a página anterior, o usuário foi.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top