我有一个Windows Phone 8应用程序,我希望看到为什么我的主页加载速度非常慢。
我的主页具有以下结构:
<PivotControl>
<PivotItem>
<LongListSelector/>
</PivotItem> Times 5
</PivotControl>
我总共有5个PivotItem,每个这些项目都有自己的api调用来获取项目,以便它可以显示它们。每个Pivot项目首先加载12个元素,并在用户开始滚动时加载更多。
我的问题是,有没有人遇到过这个有大量元素的繁重主页的问题?你做了哪些改进,以便页面可以加载更快。我已经减少了我显示的元素数量(在每个PivotItem中加载40个元素之前)。
编辑: 我的ListItemTemplate非常干净(我已经清理它以使它在XAMLcode中变得更轻)它有一个网格,它有em-globes和InvokeCommandAction,一个图像,一个边框和3个TextBlocks
EDIT2: 当用户不在我的PivotItem上时,我通过折叠我的不同LongListSelector获得了大约30%的加载时间,因此我隐藏了2个LongListSelector。我正在显示中间(当然)和左侧右侧的PivotItem,当用户向左或向右滑动时,我重新加载并隐藏必要的元素。 它不漂亮,但它有帮助。
EDIT3: 几乎(90%)我的所有样式都已放置在我的StylePage中,并调用我的元素样式。 我发现当用户进入和离开页面时添加一点动画,可以让我在页面之间有更好的过渡。这是我的经典转换代码:
<toolkit:TransitionService.NavigationInTransition>
<toolkit:NavigationInTransition>
<toolkit:NavigationInTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardIn" />
</toolkit:NavigationInTransition.Backward>
<toolkit:NavigationInTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardIn" />
</toolkit:NavigationInTransition.Forward>
</toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
<toolkit:NavigationOutTransition>
<toolkit:NavigationOutTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardOut" />
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardOut" />
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>
答案 0 :(得分:2)
我在你的问题中没有看到的两件事,但我想我会补充一下这对你有用。
这些应该可以让您的用户界面快速恢复。
答案 1 :(得分:0)
我猜你在MainPage构造函数中有太多密集的代码。无论哪种方式,您都可以使用Task.Run
在不同的线程中加载数据和/或使用MainPage.Loaded
事件并在此处执行操作。
还尝试限制App.xaml.cs
中的代码(构造函数,启动方法)
使用Dispatcher.BeginAction
时,不要忘记使用Task.Run
来操纵UI。
还有Scheduler.Dispatcher.Schedule()
来调用延迟方法。