【Advanced Windows Phone Programming】 MVVM设计模式与WP7通用框架(1)

首先要阐述一点,MVVM并不是一个设计框架,而是一种设计模式,是MVP的一种进化,而MVVM的实现条件之一是UI与数据可以完美的分离,所以说,这种设计模式是为所有采用XAML进行UI制作,并用绑定的方式进行UI与后台数据的交互的软件量身定制的。譬如Silverlight,譬如WPF,而我们通常所说的MVVM框架指的则是galasoft的MVVMlight框架,地址如下所示,该框架支持windows phone 7.0与7.1 。

http://mvvmlight.codeplex.com/

然而,这里并不推荐大家使用该框架,虽然该框架支持Message,Command等诸多特性,并对设计器提供了良好的支持,但是它的几个致命缺陷导致了他可能并不适用于Windows Phone应用程序的开发,Mvvmlight初期是为silverlight和WPF设计的,然而Wpf和silverlight与windows phone程序在执行模型和生命周期上有本质上的不同,这就导致了很多令人抓狂的问题,顺带一提,很多公司想用mvvmlight快速的搭建好一个小型程序,并在后期版本进行整改,但是事实证明这个过程是很痛苦的,而且成本很高昂。

首先我们来看一下一个普通的windows phone应用的生命周期和执行模型:

可用于应用程序状态管理的主事件有四个:LaunchingDeactivatedActivated 和 Closing。这些事件的处理程序包含在Application 对象中,该对象是 Windows Phone 应用程序的 Visual Studio 项目模板的一部分。您将在这些事件处理程序中编写代码来管理应用程序状态。

重要说明重要说明:
所有应用程序事件都限定应用程序在 10 秒钟的时间内完成事件处理程序中的任务。如果某个应用程序超出此限制,则会立即将其终止。因此,应当避免执行资源密集型任务,如在应用程序事件的处理程序内从独立存储中读取数据和向其中写入数据。在应用程序运行时,这些任务应尽可能通过后台线程来执行。在应用程序的整个生存期内随着应用程序数据的更改而保存应用程序数据,可以减少应用程序事件期间需要执行的状态管理工作量。

事件或方法

应用程序操作

Launching 事件

执行非常少量的代码。不要执行资源密集型操作,例如,访问独立存储。

OnNavigatedFrom 方法

如果不是向后导航,则将 UI 状态保存到 State 字典。

Deactivated 事件

当应用程序被逻辑删除时,将应用程序状态保存到 State。同时,在应用程序终止时,将持续状态保存到独立存储。当应用程序进入休眠状态时,不要销毁内存中应用程序的状态。

Activated 事件

检查 IsApplicationInstancePreserved。若为 true,则不执行任何操作。若为 false,则使用 State 中的数据还原应用程序状态。

OnNavigatedTo 方法

检查页面是否为新实例。若不是,则状态自动保持。否则,如果 State 中存在数据,则使用该数据还原 UI。

Closing 事件

将持续应用程序数据保存到独立存储。

 

posted @ 2012-06-24 16:04  SandCu  阅读(327)  评论(2编辑  收藏  举报