如何稳定 Xamarin.Forms 应用程序的性能并发布 Xamarin.Forms 应用程序。 这包括优化性能,以及使用 Xamarin.UITest 和 App Center 自动执行测试。

提供应用程序性能

例如,确保操作执行不会妨碍用户执行其他活动,这有助于改进用户的体验。

这些方法共同可以极大地降低由 CPU 执行的工作量和应用程序占用的内存量。

跨平台性能,讨论了非平台特定方法,可用于改善使用 Xamarin 平台生成的应用程序的内存使用情况和性能。

1、启用 XAML 编译器

参考:https://www.cnblogs.com/peterYong/p/11576802.html#_label2

2、使用已编译的绑定

已编译的绑定。

3、减少不必要的绑定

不要将绑定用于可以轻松静态设置的内容。 绑定不需要绑定的数据没有任何优势,因为绑定的成本效率不高。 例如,设置Button.Text =“ Accept”的开销要小于将Button.Text绑定到值为“ Accept”的ViewModel字符串属性的开销。

4、使用快速呈现器

快速渲染器通过展平原生控件层次结构,降低了Xamarin.Forms控件在Android上的膨胀和渲染成本。 通过创建更少的对象,这进一步提高了性能,从而减少了视觉树的复杂性和内存使用量。

快速呈现器。

5、在 Android 上启用启动跟踪

一种替代方法是使用启动跟踪,与传统的 AOT 编译相比,启动跟踪在 Android APK 大小和启动时间之间可实现权衡。

与传统的 AOT 编译相比,这种方法可以减少 APK 的大小,同时仍然提供类似的启动改进。

6、启用布局压缩

布局压缩。

在 XAML 中,可以通过设置启用布局压缩CompressedLayout.IsHeadless附加属性设置为true布局类上:

<StackLayout CompressedLayout.IsHeadless="true">
  ...
</StackLayout>

注:由于布局压缩会从视觉树中删除布局,因此它不适用于具有视觉外观或获得触摸输入的布局。 因此,设置VisualElement属性(例如BackgroundColor,IsVisible,Rotation,Scale,TranslationX和TranslationY或接受手势)的布局不适合布局压缩,但是,可以在设置视觉外观属性或接受外观的布局上启用布局压缩 手势不会导致构建或运行时错误,而是将应用布局压缩,并且视觉外观属性和手势识别将自动失败。

7、选择正确布局

能够显示多个子项但只有一个子项的布局非常浪费。 例如,以下代码示例显示带有单个子代的StackLayout:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="DisplayImage.HomePage">
    <StackLayout>
        <Image Source="waterfront.jpg" />
    </StackLayout>
</ContentPage>

这比较浪费,应删除 StackLayout 元素,

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="DisplayImage.HomePage">
    <Image Source="waterfront.jpg" />
</ContentPage>

例如,不要尝试使用 StackLayout 实例的组合来重现 Grid 布局。

8、优化布局性能

若要获取最佳可能布局性能,请遵循以下准则:

  • 边距和填充。
  • GridUnitType.Star 枚举值将行和列设置为占据成比例的空间量,前提是父树遵循这些布局准则。
  • 更改这些属性会产生成本并消耗内存,即使是将它们设置为默认值。
  • 它会导致 CPU 不得不执行显著更多的工作。
  • AbsoluteLayout.AutoSize 属性。
  • 此属性可确保指定子级会占用 StackLayout 可以向它提供的最大空间,而多次执行这些计算比较浪费。
  • Layout<View> 类设为子类以实现所需布局行为。
  • NoWrap

9、仔细选择依赖关系注入容器

此外,类型注册(通常在应用程序启动期间发生)可能会对启动时间产生明显影响,具体取决于所使用的容器。

可以通过使用工厂手动实现依赖注入来提高性能

10、创建 Shell 应用程序

Xamarin.Forms Shell。

11、使用 CollectionView 而不是 ListView

Xamarin.Forms CollectionView。

12、优化 ListView 性能

使用 ListView时,应对许多用户体验进行优化:

  • 初始化 – 从创建控件时开始,到在屏幕上显示项时结束的时间间隔。
  • 滚动 – 能够滚动列表,并确保 UI 不滞后于触控笔势。
  • 交互,用于添加、删除和选择项。

ListView 性能。

13、优化图像资源

Page.Disappearing 事件触发时释放流,来实现此目标。

使用图像。

优化图像资源。

14、减小可视化树大小

可通过两种主要方法来实现此目标。 

因此,如果某个元素因为隐藏在其他元素后面而不可见,则删除该元素,或将其 IsVisible 属性设置为 false

第二种方法是删除不需要的元素。

减小应用程序资源字典大小

下面的代码示例演示 HeadingLabelStyle 资源,它在应用程序范围内使用,因此在应用程序的资源字典中进行定义:

<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Resources.App">
     <Application.Resources>
         <ResourceDictionary>
            <Style x:Key="HeadingLabelStyle" TargetType="Label">
                <Setter Property="HorizontalOptions" Value="Center" />
                <Setter Property="FontSize" Value="Large" />
                <Setter Property="TextColor" Value="Red" />
            </Style>
         </ResourceDictionary>
     </Application.Resources>
</Application>
View Code

相关文章:

  • 2021-08-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-10-08
  • 2021-04-30
  • 2022-01-21
猜你喜欢
  • 2022-01-06
  • 2021-04-04
  • 2022-12-23
  • 2021-04-01
  • 2021-08-08
相关资源
相似解决方案