当前位置: 首页 > news >正文

浅谈ListBox在Windows Phone 7 中的使用(2)

 在前篇《浅谈ListBox在Windows Phone 7 中的使用》  中大致介绍了ListBox在Windows Phone 7的用法,今天将继续深究ListBox。主题是ListBox的性能问题。

我相信,如果大家将自己的Windows Phone 部署到phone 7真机或多或少会遇到性能上的问题,当然这也是模拟器和真实设备区别之一,而这些问题很大程度上是ListBox的渲染以及从web上下载图片造成的。这里有一篇微软WP7团队提供的关于ListBox性能的文章,还是值得大家一看的,里面是微软WP7团队对如何优化windows phone 程序给出的建议。下图是Colin Eberhardt对NoDo做的性能测试,可以发现,ItemsControl可以在更短的时间内提供类似ListBox的功能。

 

 

我们在真实机上测试的时候,可能会遇到的一个问题就是当我从一个页面跳到另一个页面,而在这个页面中有有一个比较复杂的UI(比如说ListBox中有100条数据,而且ListBox应用的模板相对复杂)。这时候我们的程序感觉像死掉了,界面一动不动。小七很无辜的说道,我还没死,我只是在加载数据和渲染界面,等我弄好了我就活过来了,请耐心等我1分钟。用户能够等1分钟么? 这会给用户带来很不好的体验。国外有研究说全景布局控件(Panorama控件)加载会消耗大约1.6秒!

当应用程序启动的时候,有启动画面会告知用户程序正在启动,而我们在切换页面的时候,也可以加上类似的效果,告诉用户,请稍等,我正在加载。国外大牛Colin Eberhardt 就提供了一种不错的想法,叫延长加载(DeferredLoadContentControl),以下是两种加载的用户比对图

 

 

具体的代码可以参考 DeferredLoadContentControl.zip 

如果你的ListBox中的项目比较复杂,建议使用LazyListBox,一种在滑动时使用简单模板,在停止滑动时再换为正常(即复杂UI)的模板,具体的可以参考 http://blogs.msdn.com/b/ptorr/archive/2010/10/12/procrastination-ftw-lazylistbox-should-improve-your-scrolling-performance-and-responsiveness.aspx 

在mango中,windows phone team已经对ListBox做了优化,如果你的ListBox中有图片,它会启用后台线程去处理,如果你已经升到Mango,那么你可以看看ListBox有什么改变,或者你也可以再将LazyListBox替换为ListBox.....

PS:这篇文章在草稿箱存了一月有余,今天抽了点时间整理发布... 









    本文转自xshf12345 51CTO博客,原文链接:http://blog.51cto.com/alexis/586479,如需转载请自行联系原作者





相关文章:

  • 服务器虚拟环境存储性能遭挑战。
  • 判断JS字符串中是否包含某些字符
  • 一位10年Java工作经验的架构师聊Java和工作经验
  • Linux下QT编程之hello qt程序
  • Dao 常用方法记录
  • vss团队开发工具使用(个人学习心得)
  • mybatis打印sql日志配置
  • mount报错
  • PHPINIDir directive honored per configuration tree apache配置错误
  • windows上传文件到linux乱码解决
  • centos apache-tomcat 整合配置(两种办法)之一
  • LAMP架构(apache用户认证,域名重定向,apache访问日志)
  • Windows7 是如何智能判断网络的连通性
  • CentOS下nginx、resin、memcached整合
  • vim使用大全
  • hexo+github搭建个人博客
  • @angular/forms 源码解析之双向绑定
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • ➹使用webpack配置多页面应用(MPA)
  • 230. Kth Smallest Element in a BST
  • 5、React组件事件详解
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • idea + plantuml 画流程图
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • js算法-归并排序(merge_sort)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • SpiderData 2019年2月25日 DApp数据排行榜
  • text-decoration与color属性
  • 安卓应用性能调试和优化经验分享
  • 百度地图API标注+时间轴组件
  • 闭包--闭包作用之保存(一)
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 分布式任务队列Celery
  • 工程优化暨babel升级小记
  • 观察者模式实现非直接耦合
  • 记一次用 NodeJs 实现模拟登录的思路
  • 实战|智能家居行业移动应用性能分析
  • 使用 Docker 部署 Spring Boot项目
  • 探索 JS 中的模块化
  • 为视图添加丝滑的水波纹
  • 新书推荐|Windows黑客编程技术详解
  • 优秀架构师必须掌握的架构思维
  • puppet连载22:define用法
  • ​io --- 处理流的核心工具​
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (1)虚拟机的安装与使用,linux系统安装
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (办公)springboot配置aop处理请求.
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (九)信息融合方式简介
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十) 初识 Docker file
  • (转)IOS中获取各种文件的目录路径的方法