Wie .net Maui Seitenaufbau beschleunigen?
Hallo zusammen.
Ich habe eine Maui App welche durch eine SQLite Datenbank content Seiten befüllt das Laden der Daten habe ich in einen Service gepackt welcher die Daten lädt während die App hochfährt also während der splash screen zu sehen ist. Jetzt habe ich das Problem dass der Aufbau der Seiten im xaml code sehr lange dauert und ich suche nach lösungsideen diesen ganzen Prozess zu beschleunigen. Zur Info geladen werden mehrere integer ein paar strings und Bilder es handelt sich dabei um Lego Figuren jede Lego Figur hat ein Bild und mehrere Informationen. Wenn jemand eine Idee hat wie ich den ganzen bildungsprozess der content page beschleunigen kann wäre ich sehr dankbar.
1 Antwort
Ein paar Tipps, die mir spontan dazu einfallen:
- Komprimiere die Bilder. Vermutlich sind sie dein Hauptproblem.
- Sicherlich ist es nicht notwendig, alle Daten von Anfang an zu laden, da sie eh erst nach bestimmten Nutzeraktionen angezeigt werden. Lade Inhalte also erst, sobald sie benötigt werden (es gibt dafür auch Hooks, für Pages wird bspw. das Appearing-Event gefeuert), ruhig auch asynchron. Bereits geladene Inhalte (die wiederverwendet werden sollen) kann man im Arbeitsspeicher halten / cachen. Das heißt für dein View, dass du Komponenten nicht unbedingt komplett entfernst, sondern eher das IsVisible-Property verwendest, um dessen Rendering zu kontrollieren. Ressourcen (z.B. Streams), die du hingegen nicht mehr benötigst, sollten so früh wie möglich wieder freigegeben werden.
- Verwende für Data Binding, wo möglich, Compiled Bindings.
- Schau noch einmal deinen XAML-Code durch. Eventuell kann das Layout vereinfacht werden.
Des Weiteren solltest du dein Programm mit einem Profiler analysieren (schau hier), um die Peaks zu finden.
(...) mitnoder ohne Bilder bleibt sich von der Ladezeit tatsächlich gleich (...)
Dann definitiv erst mit dem Profiler prüfen, um sicherzustellen, dass du die Hauptprobleme findest und somit den Arbeitsaufwand effizienter gestaltest.
Compiled bindings weiß ich noch nichts von (...)
Ich habe den Begriff mit einem Doku-Artikel verlinkt. 😉 Es setzt allerdings voraus, dass du auch Data Binding nutzt.
(...) da redest du von lazy loading wenn ich mich nicht irre (...)
Ja, genau.
Okay ich danke dir. Da sind eine Menge Dinge die ich mir erstmal ergooglen muss ^^ zu den Bildern, also wenn ich die Daten laden lasse mitnoder ohne Bilder bleibt sich von der Ladezeit tatsächlich gleich . Hatte auch zuerst ans komprimieren gedacht. Compiled bindings weiß ich noch nichts von ( bin auch noch relativ am Anfang meiner programmier Karriere ^^) und mit dem nur laden von Inhalten die auch tatsächlich gebraucht werden da redest du von lazy loading wenn ich mich nicht irre oder ? Aufjedenfall schon mal grosses Dankeschön für deine ausführliche Antwort :-)