AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

小米李政谈如何构建高质量的 WP7 应用程序

  • 2012-06-29
  • 本文字数:2520 字

    阅读完需:约 8 分钟

在 6 月 28 日,由天翼空间·开发者工厂主办,InfoQ 协助策划的第十期专家讲坛活动上,来自小米科技米聊团队研发负责人李政( @- 李政 - )就如何开发高质量的 Windows Phone 应用的问题与大家进行了分享,内容涉及应用程序架构、用户界面、性能以及错误报告等。

Windows Phone 7 开发实例——构建高质量的 WP7 应用程序讲稿下载

本次分享主要分为产品设计、应用程序架构、用户界面、性能以及错误报告几个部分。

在应用程序架构部分,李政提到在 WP7 版米聊中,使用到了 MVVM(Model-View-ViewModel)模式:

  1. 将 Mode 和 View 分离,方便建立简洁、易维护、易扩展的应用程序。
  2. 可测试性强(View 和 Model 分离可以针对 Model 进行单元测试)、UI 的易用性强。
  3. UI 易用性主要体现在可以在 Expression Blend 中快速设计界面,而且 Toolkit 可以提供设计时数据以供 UI 设计师在设计 UI 更方便的看到很多数据控件的显示。
  4. 当 UI 全部改变时,代码可以不改变。

MVVM 使得 UI 与逻辑分离,更加方便进行单元测试,在米聊 WP7 版中,所有的 UI 代码都会写单元测试,此外,李政推荐了一些关于 MVVM 的资源:原出处微软官方开源类库Prism MVVM 在 WP7 中的应用实例,推荐使用微软内部开发 Windows Phone 7 在使用的 Framework 以及使用介绍

在用户界面选择上,WP7 上存在两种界面控件,Panorama 和 Pivot:

  • Panorama 强调多种数据源的聚合,具有一副大于屏幕大小的底图,用户可以通过轻击和平移来选择不同的信息,呈现当前 item 的时候,同时也显示旁边 item 的一部分信息,Windows Phone 中内置的 People 和 Music+Videos 界面就是典型的案例。
  • Pivot 控件用来过滤大量的数据集,与 Tab 控件很像,在 Windows Phone 内置的功能中,E-Mail、Message 和 Calendar 功能就是 Pivot 的一个应用。

鉴于以上特点,米聊最终选择的界面方案为 Panorama。在性能方面,李政给出了自己的建议:

  • 不要在模拟器上测试性能,模拟器通常比真机快 2-3 倍。
  • 永远不要在 UI thread 做耗时很长的事情,会让应用程序没有响应。
  • 阅读 User Experience Design Guidelines ,按照这里的原则设计应用程序会解决很多性能上的问题。
  • 永远不要猜测性能的瓶颈,测量一下。

另外,启动性能可以做到的优化有:使用启动页面,拆成一个个小的 dll,在启动时可以减少加载的 dll 的数量,图片,XML 等文件设为 Content,可以减小 dll 文件的大小;通过在表中增加版本号,共享 DataContext 等方法还可提升本地数据库的性能;还要注意内存泄露以及 UI 性能,关于提升 UI 性能的建议有:

  • 使用 Performance Progressbar 而不是 WP7 SDK 自带的 Progressbar。
  • 如果需要一个列表并且里面有很多图片时,选择使用 DeferredLoadListBox。
  • Data Binding 的性能问题
    • Converter 会显著影响性能,避免使用。
    • 使用代码创建 UI 比 DataTemplate 要高效

在最后,李政还建议开发者使用错误报告,建议关注每天都在运行的程序,可参考文章: Error Reporting on Windows Phone 7

在问答环节,李政回答了网友的提问,详细信息如下:

问:老师好,关于近期最热门的:“现有 WP7 设备都不能升级到 WP8”,这个问题怎么看?另外,WP8 和 WP7.8 把开始屏幕中的 metro 界面改的更加复杂,对于这个问题,您怎么看?
答:1. 现在的 WP7 设备主要是因为硬件达不到 WP8 的要求,现在 WP7 的设备都是单核的。微软选择在 WP8 上和 windows 8 采用相同的架构,以及可以使用 native code 共享代码,让开发者可以不抛弃以前的代码,到这一步 Windows Phone 才真正有了跟 iPhone 和 Android 抗衡的实力。2. Metro 的问题,我个人是更喜欢这种灵巧的布局了,可以摆放更多的东西在主页上,现在的 metro 快太大,摆不了几个。

问:随着微软发布 WP8,并且现有 WP7 不能升级到 WP8,由基于 WP7 应用开发转向 WP8 应用开发有哪些问题呢?
答:现有的 WP7 的应用程序都可以直接在 WP8 上运行。在一个适当的时候把现有的应用的底层代码用 native code 重写,以支持 WP8 和 Windows 8 也是个不错的选择。

问:Windows Phone 的 Socket Api 没有 bind 和 linsten? 那怎么监听一个数据送达的事件?网上的例子貌似都是开一个线程去死循环接受。 而且那个还真是无限执行的死循环。不是阻塞等待的。 电脑的 CPU 立马飙上去了。更不要说手机了。 求问怎么能监听一个端口的信息到达呢?
答:不需要死循环来等待,可以起一个线程,来异步等待,用 SocketAsyncEventArgs,可以参考这里的内容:点击查看

问:WP7 里有没像 WPF 中 timer 控件一样的定时控件或者其它能实现定时功能的东西啊?
答:WP7 里没有定时器控件,但是有相应的定时器类,DispatcherTimer 和 Timer 可以使用。这里也有 Timers 的介绍: http://msdn.microsoft.com/en-us/library/zdzx8wx8

问:定义了一个 listbox 里面 <ListBox.ItemTemplate>里面有个 textblock 我想在 cs 里面获取到 textblock 里面的 text 值,请问是怎么获取的?还有选中某一项的时候那一项会一直处于选中状态,直到选其他项的时候才会改变,想要选中后改为不选中状态,就是跟我们的按钮是一样 点击后会变回非点击状态?
答:你可以参考这篇文章,它详细写了怎么找到 itemtemplate 里的控件: http://www.windowsphonegeek.com/tips/how-to-access-a-control-placed-inside-listbox-itemtemplate-in-wp7

关于本期讲师

李政,微博账号 @- 李政 - ,小米科技米聊 Windows Phone 团队研发负责人,曾就职于微软负责 Lync Android 平台的研发工作。对 Windows Phone 和 Windows 8 相关技术有着浓厚的兴趣,致力于 Windows Phone 和 Windows 8 平台开发技术的研究。

关于专家讲坛

天翼空间开发者社区专家讲坛是天翼空间开发者社区( www.189works.com )2012 年针对开发者推出的一项提升专业能力的系列讲座,每周四晚,邀请移动互联网开发领域的权威专家,通过语音频道专题讲座,线上论坛访谈,以及微博、QQ 群线上同步直播的形式,为社区的开发者用户提供系统的技术讲座,答疑,以及运营知识方面的培训。

往期内容回顾

关于专家讲坛更多详情,请浏览官方网站。InfoQ 也会对后续的活动进行跟踪报道。

关于社区活动的更多详情,欢迎查看InfoQ 维护的社区活动日历,也欢迎关注InfoQ 官网微博( @InfoQ ),获取实时的活动信息!

2012-06-29 21:362081
用户头像

发布了 156 篇内容, 共 53.9 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

数据分析慢?火山引擎ByteHouse发布六大场景性能提升方案

字节跳动数据平台

数据库 云原生 OLAP 数仓

高价值数据源于结构化和非结构化融合分析

AI数据云Relyt

数据仓库 数据湖 数据分析 非结构化数据 AI-ready Data Cloud

全国高校软件测试开发教学师资培训会圆满落幕

霍格沃兹测试开发学社

我叫小舞,跳舞的舞!新斗罗大陆游戏详细图文架设教程

echeverra

斗罗大陆

云图说|一图告诉你主机安全的运维效率如何提升超出预期

华为云开发者联盟

运维 主机安全 新版本 企业号 8 月 PK 榜 2024企业号8月pk

macOS Ventura 13.6.9 (22G830) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ISO ventura

数据分析的关键点有哪些?如何做好数据分析?

Aloudata

数据分析 指标平台 noetl

如何保护您的 Angular 应用程序:API 调用的端到端加密

哦豁完蛋了

聚焦OLAP性能提升,火山引擎ByteHouse发布六大场景方案

字节跳动数据平台

数据库 云原生 Clickhouse 数仓

危化品安全生产风险监测预警系统的构建与实施

天津汇柏科技有限公司

安全生产 安全生产平台

AI安全新纪元:智能体驱动的网络安全新范式

云起无垠

AI 智能体

【AIGC】 0成本学习:AI工作流生成Joy(ComfyUI)

京东零售技术

AIGC 企业号 8 月 PK 榜

macOS Sonoma 14.6.1 (23G93) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos ISO Sonoma

和鲸科技CEO范向伟出席江苏省信息技术应用学会软件技术专委会学术年会,解读“AI+教育”创新实践

ModelWhale

人工智能 软件 信息技术 产学研

MES系统是什么?MES软件有什么用?

万界星空科技

制造业 生产管理系统 mes 万界星空科技 生产管理

使用观测云构建业务的可观测性

观测云

可观测性 业务监控

技术同学如何应对降薪裁员

老张

职场 裁员 认知 互联网裁员

京东企业业务前端监控实践

京东零售技术

前端 监控 企业号 8 月 PK 榜

全国高校软件测试开发教学师资培训会圆满落幕

测试人

软件测试

不可重复读和幻读有什么区别

江南一点雨

Java MySQL 面试题

海外成品语聊交友软件APP(英语+阿拉伯语版本)相比定制研发,优势有哪些?

山东布谷科技胡月

源码搭建 语音直播源码 语音聊天APP源码 海外直播App开发 海外语聊APP

聚焦OLAP性能提升,火山引擎ByteHouse发布六大场景方案

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

观测云产品更新 | 异常追踪、用户访问监测、链路、监控等

观测云

异常追踪

和鲸科技助力 Datathon 会前培训成功举行,“理-工-医-信”跨学科合作,以数据驱动医疗实践

ModelWhale

医疗AI R 语言 datathon 医疗大数据

24年内蒙古等级保护测评机构看这里!

行云管家

网络安全 等保 等级保护 内蒙古

大咖公开课 | AI自动化应用开发,让创意与效率并驾齐驱!

测试人

软件测试

LED显示屏行业可突破的六大领域

Dylan

云计算 虚拟现实 LED显示屏 全彩LED显示屏 led显示屏厂家

AI自动化应用开发,让创意与效率并驾齐驱!

霍格沃兹测试开发学社

小米李政谈如何构建高质量的WP7应用程序_后端_贾国清_InfoQ精选文章