Производительность навигации .Net Maui, как ее улучшить? ⇐ Android
-
Anonymous
Производительность навигации .Net Maui, как ее улучшить?
У меня возникла проблема с .Net Maui, особенно с навигацией, где она может работать нестабильно и медленно при переходе к представлению с большим количеством информации. Иногда это может возникать даже при переходе на страницу, которая содержит только имеет представление коллекции с привязками, которые загружают только пару элементов.
Я пробовал использовать как навигацию оболочки, так и базовую навигацию, но все равно возникает та же проблема: медленная и тряская навигация.
Самая быстрая загрузка — это когда я не заметил никаких привязок. Так не лучше ли не использовать привязки для повышения производительности? Я прочитал документацию по использованию скомпилированных привязок здесь Microsoft Docs, и хотя это и повышает производительность, но не решает проблему на 100%.
Проверили это на всех типах устройств: от старых планшетов и телефонов (6+ лет) до новых планшетов и телефонов (2+ лет). Хотя новые модели работают лучше, проблема все еще существует.
Я видел несколько предложений о том, что для повышения производительности вы добавляете Task.Delay(500) в OnAppearing(), чтобы представление могло анимироваться перед тем, как что-либо делать, но если бы вы смотрели на другие приложения Android, созданные за пределами Мауи, тогда страницы загружаются в течение полсекунды, и не используйте этот хак, почему Мауи отличается производительностью навигации или я что-то упускаю? Если кто-нибудь знает способ улучшить производительность загрузки навигации, дайте мне знать.
MonkeysView.xaml
MonkeysView.xaml.cs public ObservableCollection Обезьяны публичный MonkeysView() { BindingContext = это; } публичное переопределение void OnAppearing() { ожидайте FetchMonkeysAsync(); } общедоступная асинхронная задача FetchMonkeysAsync() { // Имитируем выборку обезьяны // Здесь много кода для получения обезьян. ждать Task.Delay(2500); // ... // ... Обезьяны = новый ObservableCollection(monkeysFromServer); } MonkeyModel.cs
публичный класс MonkeyModel: ObservableObject { [Обсерваблесвойство] частная строка _name; [Обсерваблесвойство] частная строка _location; [Обсерваблесвойство] частная строка _imageUrl; } Двигайтесь с помощью:
Shell.Current.GoToAsync("MonkeysView");
У меня возникла проблема с .Net Maui, особенно с навигацией, где она может работать нестабильно и медленно при переходе к представлению с большим количеством информации. Иногда это может возникать даже при переходе на страницу, которая содержит только имеет представление коллекции с привязками, которые загружают только пару элементов.
Я пробовал использовать как навигацию оболочки, так и базовую навигацию, но все равно возникает та же проблема: медленная и тряская навигация.
Самая быстрая загрузка — это когда я не заметил никаких привязок. Так не лучше ли не использовать привязки для повышения производительности? Я прочитал документацию по использованию скомпилированных привязок здесь Microsoft Docs, и хотя это и повышает производительность, но не решает проблему на 100%.
Проверили это на всех типах устройств: от старых планшетов и телефонов (6+ лет) до новых планшетов и телефонов (2+ лет). Хотя новые модели работают лучше, проблема все еще существует.
Я видел несколько предложений о том, что для повышения производительности вы добавляете Task.Delay(500) в OnAppearing(), чтобы представление могло анимироваться перед тем, как что-либо делать, но если бы вы смотрели на другие приложения Android, созданные за пределами Мауи, тогда страницы загружаются в течение полсекунды, и не используйте этот хак, почему Мауи отличается производительностью навигации или я что-то упускаю? Если кто-нибудь знает способ улучшить производительность загрузки навигации, дайте мне знать.
MonkeysView.xaml
MonkeysView.xaml.cs public ObservableCollection Обезьяны публичный MonkeysView() { BindingContext = это; } публичное переопределение void OnAppearing() { ожидайте FetchMonkeysAsync(); } общедоступная асинхронная задача FetchMonkeysAsync() { // Имитируем выборку обезьяны // Здесь много кода для получения обезьян. ждать Task.Delay(2500); // ... // ... Обезьяны = новый ObservableCollection(monkeysFromServer); } MonkeyModel.cs
публичный класс MonkeyModel: ObservableObject { [Обсерваблесвойство] частная строка _name; [Обсерваблесвойство] частная строка _location; [Обсерваблесвойство] частная строка _imageUrl; } Двигайтесь с помощью:
Shell.Current.GoToAsync("MonkeysView");
Мобильная версия