代码改变世界

WP7 App性能优化(7):其他性能要点

  MagicKing110  阅读(2581)  评论(0编辑  收藏  举报

本篇主要讨论影响Windows Phone 7应用程序性能的另外几个要素。包括用户输入、进度条、网络请求等。

用户输入

Windows Phone 7的用户输入包括Manipulation 事件、Mouse事件和Touch 事件。

使用Manipulation 事件代替Mouse和Touch事件

Manipulation 事件是推荐的用户输入处理方式。从性能和硬件兼容性方面考虑,如果没有特殊的需求,应当避免在WP7上的Silverlight应用程序中使用Mouse事件。相反,应当用Manipulation 事件来替代。

T:System.Windows.Input.Touch类提供了E:System.Windows.Input.Touch.FrameReported事件用以获得每个单独的触摸点。尽管该事件在Windows Phone 7中仍然支持,但是不推荐用他来处理手势,如缩放之类。如果不需要获得每个单独触摸点,则应使用Manipulation 事件。

关于如何使用Manipulation 事件的更多信息,请参考How to: Handle Manipulation Events

 

ProgressBar

在处理一个很消耗时间的操作时,应该通过一个ProgressBar向用户指示应用程序还在工作。然而,当前的ProgressBar的实现会降低应用程序的性能。

使用PerformanceProgressBar 代替ProgressBar

为了解决ProgressBar的性能问题,微软创建了一个替代的PerformanceProgressBar。PerformanceProgressBar将动画从UI线程移到了构图线程。

 

Web服务请求

WebClient是一个HttpWebRequest的包装类,用以处理Web服务请求。WebClient可能更容易使用,因为它在程序的UI线程中返回数据,你在自己的应用中不需要管理数据在线程间的调度。然而,如果你的应用在UI线程中处理Web服务,UI将会暂停响应直到处理完毕,这会带来很糟糕的用户体验,尤其是要处理的数据集比较大时。

使用HttpWebRequest 代替WebClient

使用HttpWebRequest 代替WebClient进行Web服务请求。在异步请求线程中处理返回数据,然后使用BeginInvoke方法将数据传送到UI。

 

处理大量的小数据量请求

为节省电量,操作系统在预置的一段超时时间后会关闭设备的无线通信功能。如果应用程序要发送大量的小数据量请求,建议将这些请求并行执行而不是一个一个的串行执行。这将保证设备的无线通信不会进入休眠状态,以避免无线通信频繁的为每个请求打开、关闭。

转到:WP7 App性能优化(0):索引页

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示