MDC Windows Phone 专场:基于地图 API 的开发及经验分享

  • 贾国清

2012 年 9 月 2 日

话题:移动语言 & 开发

8 月 25-26 日,首届 MDC移动开发者大会在京召开,此次大会吸引了来自 iOS、Android 以及 Windows Phone 领域的开发和实践者参与,在 Windows Phone 分会场,信必优 Windows Phone&Windows 8 系统架构师李靖南,高德地图 API 开发工程师朴春植(@贝壳笨),飞信李辉以及 Snack Limited 联合创始人兼 CEO 杨迅分别到场做了主题演讲。本文结合活动实况及嘉宾演讲幻灯片对本次活动进行总结,希望能够让读者对本次活动以及移动开发有更全面的了解。

演讲一:李辉,WP7 开发过程经验分享(点击下载演讲资料

李辉的演讲主要围绕如何优化 App 展开,首先提到了全景视图左右滑动的性能问题:在进行左右滑动操作时,当手指刚刚触碰到按钮或者列表项,就会触发 Tilt 动画(使用 toolkit 的 TiltEffect),这会导致整个大内容区块 BitmapCache 缓存的更新,滑动切换也就会显得不那么流畅了,总会感觉钝了一下,这是由于 GPU 超负荷跳帧导致,解决办法是:

当检测到滑动手势时避免触发 Tilt 动画,通过 beginTouchDownAnimation(按下)和 beginTouchUpAnimation(恢复动画)两个方法实现,详细代码请参考讲稿。

UI 阻塞优化——在一小段时间里,UI 线程执行任务太多会导致 UI 阻塞现象。比如好友列表的好友头像加载时,即使使用了后台线程下载图片,但是返回的情况仍不确定,优化的方法是:

分散 UI 线程工作,控制图片下载后集中通知线程刷新的时机。此时可将下载后的图片放到一个队列里面,当界面停止滑动并且队列中图片达到一定数量时再更新好友头像。

如何加快应用程序的启动速度:

  • 使用程序启动界面
  • 最小化应用程序集的大小
  • 将程序集分解为多个小的程序集
  • 减少构造函数和 Loaded 事件中的代码
  • 独立存储或数据库的使用

其中,减小程序集大小会增加程序第一次加载时的速度,可以通过将 BuildAction 设置为 Content,使用 JPG 图片代替 PNG 图片以及避免将本地化资源包含在主程序中等方法来解决。

由于所有的构造函数和 Loaded 事件中的代码都会在应用显示第一帧之前运行,因此通过限制在以上函数或方法中执行其他耗时操作可以提升应用的启动速度。一种方案是在 LayoutUpdated 的事件处理程序中执行这些耗时的操作(页面和控件的构造函数解析 XAML、实例化 XAML 中定义的对象),LayoutUpdated 事件会在应用程序的第一帧显示之后才执行。

当从独立存储或者数据库中读取数据时,可以在程序中创建一个包含计时器的帮助属性以测量反序列化应用程序设置所消耗的时间。若该时间超过 100ms,则应考虑将该过程移动到一个后台线程中执行。另外在独立存储和数据库的比较中可以发现,处理对简单数据的存储及应用时,独立存储的速度是优于数据库的。 

演讲二:朴春植,基于高德地图 API Windows Phone 地图开发(点击下载演讲资料

主要介绍了如何通过高德的API 资源来进行开发,基础部分讲解了如何显示地图、添加覆盖物以及查询并添加覆盖物的方法。在提高篇中,还介绍了锚点的概念,如何显示任意容器和 Tip 自定义等内容。

本次移动开发者大会北京站活动圆满结束,9 月 1 日至 2 日,上海站活动也已经展开,欢迎了解详细议程@InfoQ还将继续关注并报道相关新闻。

移动语言 & 开发