【问题标题】:How to improve performance on mobile devices using xamarin forms如何使用 xamarin 表单提高移动设备的性能
【发布时间】:2017-10-18 12:14:44
【问题描述】:
我们正在使用带有 prism 的 xamarin 表单。我们有简单的页面,每个页面上显示的数据量很少,并且包括简单的计算。我们正在使用 prism 导航服务在页面之间导航。从单击按钮到导航到下一页,我们遇到了一些延迟。由于导航参数更改了数据,因此在 OnNavigatedTo 内部获取数据。有人可以解释一下为什么会有延迟,它接近 1 秒以上,有时是 2 秒。
此外,似乎每个页面都被渲染了两次……一次在 OnNaviagatedTo 之前,然后数据发生了变化。 OnProperty 或 OnCollection 更改是从 OnNavigatedTo 内触发的,它似乎再次导致渲染。
【问题讨论】:
标签:
mvvm
xamarin.forms
prism
portable-class-library
【解决方案1】:
6.3.0 版本引入了OnNavigatingTo 的概念,而OnNavigatedTo 已经存在了一段时间。两者有明显区别。了解事情发生的顺序应该可以帮助您创建更好的用户体验。
- 新页面已创建
- OnNavigatedFrom 被调用
- OnNavigatingTo 被调用
- 新页面被推送到导航堆栈并变得可见
- OnNavigatedTo 被调用
必须联系并获取数据的应用程序经常会遇到延迟问题,因为联系远程服务并获取我们想要的数据然后将这些数据解析为可用对象需要时间。这个特殊的问题是许多开发人员希望减少对 UI 的需求,因为绑定更新时必须刷新,这导致了 OnNavigatingTo 的引入。
虽然两者都不会减少网络延迟,但它使您能够使调用页面进入 IsBusy 状态,该状态可能会显示某种加载图标,然后当 NavigateAsync 完成并且您的新页面完成时,该图标将更新为 false显示已加载。