本篇主要讨论影响Windows Phone 7应用程序性能的另外几个要素。包括用户输入、进度条、网络请求等。
Windows Phone 7的用户输入包括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。PerformanceProgressBar将动画从UI线程移到了构图线程。
WebClient是一个HttpWebRequest的包装类,用以处理Web服务请求。WebClient可能更容易使用,因为它在程序的UI线程中返回数据,你在自己的应用中不需要管理数据在线程间的调度。然而,如果你的应用在UI线程中处理Web服务,UI将会暂停响应直到处理完毕,这会带来很糟糕的用户体验,尤其是要处理的数据集比较大时。
使用HttpWebRequest 代替WebClient进行Web服务请求。在异步请求线程中处理返回数据,然后使用BeginInvoke方法将数据传送到UI。
为节省电量,操作系统在预置的一段超时时间后会关闭设备的无线通信功能。如果应用程序要发送大量的小数据量请求,建议将这些请求并行执行而不是一个一个的串行执行。这将保证设备的无线通信不会进入休眠状态,以避免无线通信频繁的为每个请求打开、关闭。
来源:http://www.cnblogs.com/magicboy110/archive/2010/12/25/1916864.html