Stiamo affrontando uno strano problema. Non sono sicuro che si tratti di un difetto di progettazione dell'applicazione esistente. Il tuo aiuto / suggerimento è apprezzato.
Abbiamo un'app Xamarin.forms. Mirato sia per iOS che per Android.
Il problema sta arrivando principalmente nell'app Android.
Flusso dell'applicazione:
- una volta che ci disconnettiamo dall'applicazione, l'app apre un'attività di disconnessione ed elimina le informazioni dell'utente e altri dati.
- apre una nuova attività per il login che contiene l'implementazione SSO del client
- in caso di accesso riuscito, l'app imposta le informazioni sull'utente e recupera i dati dal servizio web.
- quindi chiama il metodo LoadApplication in modo che il flusso ritorni nell'applicazione principale
Ora, se l'utente esegue il logout / login più volte, apre una nuova istanza dell'applicazione chiamando il metodo LoadApplication e quindi visualizzando la schermata iniziale
Quindi, quando l'utente tocca il pulsante Indietro nella home page,l'app non si chiude e visualizza l'istanza precedente della stessa applicazione. L'utente deve premere più volte il pulsante Indietro (a seconda di quante volte l'utente esegue il logout-login).
C'è un buon modo per fermare questo? Possiamo chiudere l'istanza corrente dell'applicazione prima che LoadApplication venga chiamato?
Bloccato per molto tempo.
risposte:
2 per risposta № 1Avrei cercato di evitare di chiamare LoadApplication
più di una volta. Dovresti controllare lo stack di navigazione.
Dato che sei nella pagina Logout
- rimuovere tutte le visualizzazioni tramite
PopToRootAsync
- mostra il
LoginPage
await Navigation.PopToRootAsync(false);
await Navigation.PushAsync(new LoginPage(), true);
Potrebbe valere la pena leggere questo post del blog: https://jfarrell.net/2015/01/22/understanding-xamarin-forms-navigation/
0 per risposta № 2
Gentilmente prova questo.
https://stackoverflow.com/a/36885388/1941942
[Activity (NoHistory = true)]
public class LoginActivity : Activity { }
L'errore dell'istanza di salvataggio è passato un po 'di tempo dopo averlo implementato su MainActivity.