Windows Phone 性能优化(一)
Windows Phone 性能优化(一)
在实际的项目开发过程中,应用的性能优化是一个永恒的话题,也是开发者群里最常讨论的话题之一,我在之
前的公司做 wp项目时,也遇到过性能的瓶颈。当页面中加载的内容越来越多时,内存涨幅非常明显(特别是
一些壁纸类的应用,当用户向下滑动列表加载更多),当内存超过 120MB 有些机型的发热明显,如果内存继
续上涨,发热事小,内存泄露后,系统会直接关闭应用。
在 wp 系统中自带的 ListBox 等控件也提供内存虚拟化,但是如果用得不好,可能会破坏虚拟化。
微软 MSDN :Windows Phone 的应用性能注意事项
MSDN 部分摘抄:
SilverlightUI
UIXMLOne TimeOne WayTwo Way
VSP
user interface (UI) StackPanel StackPanel VirtualizingStackPanel
VirtualizingStackPanel ListBox IsVirtualizing true IsVirtualizing false VirtualizingStackPanel StackPanel
VSPVSPVSPListBoxVSPStandardRecycling
ListBoxVSP
DataTemplate Grid
Converter
ListBoxListBox
加入动画验证 ListBox 项的动态创建和删除
为了验证 ListBox 在列表部分内容滑入、滑出屏幕可视区域时,内容是动态创建和删除的,我在 ListBox 的
ItemTemplate 模版中给每个项加入动画,并且通过 <EventTrigger RoutedEvent="StackPanel.Loaded">
进行触发,当滑动列表时,运行效果:
1)首先自定义一个 News 类,包含两个字段,一个 Title ,一个 Picture:
(value !== (value !== NotifyPropertyChanged( (PropertyChanged != , View Code
2)在工程的根目录下创建一个 Image 文件夹,里面放 10张示例新闻配图。
3)MainPage 中只需要关注两个控件,一个是 页面顶部显示内存的:
第二个是显示新闻列表的:
它的默认 ItemsPanelTemplate 是 VirtulizingStackPanel。在有些交换中,需要去掉 ListBox
的虚拟化功能,就可以把这个 换成 。
在 ListBox 的 ItemTemplate 中放一个触发器,当 StackPanel 触发 Loaded 事件的时候,播放预定义动画(在 Blend 中设计的动画)。
从而可以判断每次当 ListBox 的 Item 创建完成后,就会触发一次这个动画。StackPanel 中放一个 TextBlock 和一个 Image,用来
显示 News 的 Title 和 Picture 字段。
ListBox 的完整 xaml: