如何稳定 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>