快压

当前位置:首页 > 电脑技巧 > 正文

Windows Phone 7应用程序生命周期的4个事件

浏览次数:|更新日期:2015年04月20日

4项事件——Launching,Closing,Deactivated,Activated
  Windows Phone 7应用程序的运行中有4项事件需要开发者处理,以保证应用应用程序在整个生命周期中一致的用户体验。这四个事件是Launching(启动),Closing(结束),Deactivated(暂停),Activated(激活)。他们都是PhoneApplicationService类的成员。
  Launching(启动)
  当用户单击手机应用列表里的应用图标,或者单击开始页面里的应用程序方砖图标,一个应用程序就被启动了。或者当用户单击屏幕上方的弹出式通知条时,发出该通知的应用程序也会被启动。无论用户使用上述何种方式启动应用程序,操作系统在创建应用程序实例的同时都会触发Launching事件。
  处理Launching事件时,开发者不应该从独立外存读取所有永久数据,否则会让用户不满,因为系统在处理完这个事件之后才在屏幕上显示应用程序首页,而且装载永久数据耗费时间较长。合理的方法是在应用程序启动时只读取显示首页用到的永久数据,待应用程序启动后以异步方式装载其他永久数据。
  处理Launching事件时,开发者不应该恢复应用程序过去实例的瞬时状态。每应用程序一旦被启动,用户的体验应该是一个从头开始的实例。
  当Launching事件被处理后,应用程序进入运行状态。开发者应该在应用程序的执行中抓住恰当时机,以增量方式进行存取永久数据,以便改善用户体验。即使永久数据量很小,应用程序也应该尽量避免在其系统状态改变时一次性集中存取永久数据。
  Closing(结束)
  运行中的应用程序可能触发什么事件完全由用户的操作决定。一旦用户单击退回键若干次,并翻过了应用程序的首页,Closing事件就被触发,此时应用程序将被终止。
  处理Closing事件时,开发者应该把所有的永久数据保存到独立外存。
  处理Closing事件时,开发者没有必要保存当前实例的瞬间状态,也就是那些只和本次运行相关的信息。因为当用户再次启动应用程序并打开首页时,他体验到的应该是一个从新运行的实例。
  Deactivated(暂停)
  运行中的应用程序一旦被另一个应用程序替代并退出系统前台,Deactivated事件就被触发,此时应用程序被暂停。多种操作能够引起应用程序暂停。当用户单击开始键,或当用户使用启动器和选择器和系统帮助,或当用户长时间没有操作,手机超时自动锁屏都会使当前应用程序被暂停。不同于Closing事件所对应的应用程序被完全终止,Deactivated事件所对应的应用程序被系统雪藏。这意味着虽然应用程序不再运行,但是其运行状态被操作系统完全保存。这样就使用户可以返回一个被雪藏的应用程序,而且返回时的状态跟雪藏前完全一样,就像应用程序根本没有暂停过一样。
  处理Deactivated事件时,开发者应该将应用程序的当前瞬间状态完全保存到PhoneApplicationService类的State属性里。在必要时恢复这些瞬间状态,应用程序就能从雪藏状态复苏。
  处理Deactivated事件时,开发者应该将应用程序的永久用户数据保存到独立外存。否则当被暂停的应用程序不再被激活而被重新启动时,永久数据会被丢失。
  处理Deactivated事件的所有操作必须在10秒钟内完成,否则操作系统会终止应用程序。由于这个缘故,对于存取大量永久数据的应用程序,开发者必须在运行过程中随时对其进行增量保存。计算机基础知识
  处理Deactivated事件时,开发者不应该对应用程序做任何破坏性操作,因为一个被暂停的应用程序随时可能在雪藏过程中就复苏了,比如用户快速地连续单击开始和退回键。
  Activated(激活)
  当一个应用程序被暂停和雪藏后,这个应用程序可能再也不被激活。这可能是因为用户从首页启动一个应用程序的新实例,也可能因为用户又启动和雪藏了过多的其他应用程序,以至最早被雪藏的应用程序超过了应用程序堆栈的容量极限而被丢失。
  通常情况下,一个应用程序被暂停和雪藏后需要被再次激活。用户可多次单击退回键回到雪藏的应用程序。当造成应用程序暂停的启动器和选择器运行完毕,或者被用户取消,用户也会回到雪藏的应用程序。当用户返回雪藏的应用程序,这个应用程序就被激活了,Activated事件将会被触发。
  处理Activated事件时,开发者应该从PhoneApplicationService类的State属性中读取程序雪藏前的瞬间状态信息,从而完全恢复到雪藏前的状态。
  处理Activated事件时,开发者不应该从独立外存读取所有永久数据。这和处理Launching事件时不应该存取永久数据是一个道理,目的是避免让用户长时间等待应用程序启动。