- Anwendung.Aktuelle.MainPage-vs-Navigation.PushAsync() vs-Navigation.PushModalAsync()

Entwickle ich einen Xamarin Forms-Anwendung (PCL), das NICHT mit einem zurück-button. Diese app hat drei Seiten : eine SplashScreenPage um Daten zu laden, eine LoginPage wenn der Benutzer anmelden muss und eine RootPage was ist ein MasterDetailPage. Ich habe mich gefragt, was die beste option, um zwischen den Seiten zu navigieren (um Speicherverluste zu vermeiden z.B.):

Erste Lösung:

Application.Current.MainPage = new ContentPage();

Zweite Lösung:

Navigation.PushAsync(new NavigationPage(new ContentPage()));

dann

NavigationPage.SetHasNavigationBar(this, false);
ClearNavigationStack();

Dritte Lösung

await Navigation.PushModalAsync(new NavigationPage(new ContentPage()));

dann

NavigationPage.SetHasNavigationBar(this, false);
ClearModalStack();
  • Beste option in Bezug auf was? Keine dieser Optionen sollte memory leaks, wenn richtig implementiert (abgesehen von Xamarin.Formulare internen Leck-Probleme). Sie haben versucht, die Umsetzung dieser Lösungen noch und sehen, was passiert?
  • Zunächst einmal vielen Dank für deine schnelle Antwort @WillDecker. Ich habe implementiert die erste Lösung, die ich vorgeschlagen hatte, und es schien gut. Aber ich Frage mich (mit Lösung), wenn der Vorherige aktuelle Seite wurde gelöscht, nachdem die aufrufende Anwendung.Aktuelle.MainPage = new ContentPage(); ich habe versucht, heute die Umsetzung der zweiten Lösung, aber der NavigationBar erschien, selbst wenn ich rief NavigationPage.SetHasNavigationBar(this, false); (vielleicht habe ich etwas falsch gemacht ?) Also versuchte ich die Dritte Lösung, die NavigationBar nicht mehr erscheinen, aber ich will klar den modal-stack und ich weiß nicht, was ist der beste Weg, das zu tun.
  • Mit Bezug auf die erste Lösung, die Vorherige Seite sollte bereinigt weisen Sie, nachdem Sie Ihre neue Seite auf der Hauptseite. Ich glaube tatsächlich, dass wäre Ihre beste Wette in diesem Szenario.
  • Danke ! Wissen Sie, was ist die Lösung, zum bereinigen der vorherigen Seite ? Mit der zweiten Lösung, die ich verwenden können, die RemovePage Methode der Navigation-Objekt, aber ich weiß nicht, wie zu tun, mit dem ersten.
  • Ich wurde empfohlen, um dem Garbage Collector die Methode Sammeln und entsorgen von Elementen, die sind nicht mehr in Gebrauch (dann deaktivieren Sie die vorherigen Seite). Was denkst du über diese Lösung @WillDecker ?
Schreibe einen Kommentar