Xamarin формирует оптимизацию представления, когда IsVisible = false - PullRequest
0 голосов
/ 10 января 2020

Я ищу наилучшую практику для оптимизации приложения Xamarin Forms при переключении видимости макетов, чтобы показать их при изменении размера экрана. Xamarin Forms загружает любой макет, если IsVisible = false. Итак, что я ищу для оптимизации моего приложения, так это загружать макеты, когда IsVisible=True, если оно превращается в False, есть ли способ «выгрузить» его, чтобы оно не занимало слишком много памяти устройства? Потому что с UWP проблем нет, но есть телефоны с низким объемом памяти.

Предположим, у меня есть следующий код:

    <StackLayout IsVisible="False" Orientation="Vertical">
        <!-- Make it visible when small screen -->
        <CustomView1></CustomView1>
        <CustomView2></CustomView2>
    </StackLayout>

    <StackLayout IsVisible="True" Orientation="Horizontal">
        <!-- Make it NON visible when small screen -->
        <CustomView1></CustomView1>
        <CustomView2></CustomView2>
    </StackLayout>

Xamarin будет загружать одни и те же представления 2 раза. То, что я смотрю, похоже на веб, удалите его из DOM (или не загружайте его в DOM, пока оно не станет видимым), но для форм Xamarin. Таким образом, приложение не загружает представление, когда оно ему не нужно, и я надеюсь получить его во время выполнения, при изменении размера приложения окна.

PS: Это можно сделать, используя OnIdiom. Phone, OnIdiom.Tablet и OnIdiom.Desktop, но это последнее, я не смог получить желаемый вид при изменении размера приложения окна UWP.

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете определить свои визуальные состояния для обычного экрана, большого экрана и т. Д. c, они будут отображаться или нет в зависимости от текущего состояния:

Используйте Visual State Manager для внесения изменений в элементы XAML на основе визуальных состояний, установленных из кода.

Диспетчер визуальных состояний (VSM) является новым в Xamarin.Forms 3.0. VSM предоставляет структурированный способ визуального изменения пользовательского интерфейса из кода. В большинстве случаев пользовательский интерфейс приложения определяется в XAML, и этот XAML включает в себя разметку, описывающую, как Visual State Manager влияет на визуальные элементы пользовательского интерфейса.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/visual-state-manager

0 голосов
/ 10 января 2020

Вы можете использовать шаблоны управления для изменения внешнего вида представления / страницы во время выполнения. Это полезно, если вы хотите изменить тему страниц или переключаться между представлениями в зависимости от контекста. Свойство, позволяющее установить шаблон элемента управления, называется ControlTemplate, которое доступно в классах ContentPage и ContentView.

Ref: https://www.xamboy.com/2019/01/18/using-control-templates-in-xamarin-forms/

...