应用程序生命周期(墓碑机制(程序和页面))

     由于Windows Phone 目前不支持第三方应用程序在后台运行,也就是说只有唯一一个第三方应用程序在前台运行,当用户离开应用程序页面时,应用程序会被操作系统终止(推送通知服务将在后面讲)。微软提供了另一种方法称之为tombstone,虽然在Mango更新中支持了所谓的“多任务”,但是我们还是需要处理墓碑化,在CodePlex就有这么一个开源项目,TombStoneHelper,可以帮助我们简化墓碑操作,但是我们首先来系统学习下墓碑机制以及应用程序生命周期。

      首先我们需要认识清什么是墓碑机制以及楚一般的应用程序生命周期和TombStone生命周期有什么区别。

应用程序生命周期(墓碑机制(程序和页面))_第1张图片

tombstone是一个很形象的描述,Imaging this:操作系统对应用程序说,你要死了,你有什么东西赶紧记下来写在你的墓碑上吧~(10秒钟原则

应用程序生命周期(墓碑机制(程序和页面))_第2张图片

    在WP7中用户在应用程序主界面点击Back按钮,和通常我们在WinForm程序中点击“关闭”按钮是一样的,结果都是退出应用程序。

应用程序生命周期(墓碑机制(程序和页面))_第3张图片

生命周期处理事件,在App.xaml.cs中的英文描述是这样子的:

        // Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
}

// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
}

// Code to execute when the application is deactivated (sent to background)
// This code will not execute when the application is closing
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
}

// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{
}
复制代码

翻译过来总结下就是:

应用程序生命周期(墓碑机制(程序和页面))_第4张图片

分别介绍下,Launching事件:当应用程序启动时候调用,重新激活时不调用;通常用来加载应用程序的一些永久配置数据。

应用程序生命周期(墓碑机制(程序和页面))_第5张图片

Closing事件:当应用程序关闭的时候调用,失去激活的时候不调用;通常用来保存一些应用程序永久配置数据到独立存储空间中。

应用程序生命周期(墓碑机制(程序和页面))_第6张图片

 Activated事件:当程序重新激活的时候调用,启动的时候不调用;从PhoneApplicationService.State["key"]中读取一些应用程序临时数据。

应用程序生命周期(墓碑机制(程序和页面))_第7张图片

Deactived事件:当程序失去激活的时候调用,关闭的时候不调用;通常用来使用PhoneApplicationService.State保存一些应用程序临时数据。

应用程序生命周期(墓碑机制(程序和页面))_第8张图片

 我们不应该在以上几个事件中处理大量的数据,因为MS有一个称之为10秒钟原则的限制(为了更好的用户体验,超过10秒,用户会想可能程序出问题了~)。

应用程序生命周期(墓碑机制(程序和页面))_第9张图片

前面的一直说的是程序的相关信息,而当程序被重新激活的时候,我们需要回复页面原来的显示状态。通过PhoneApplicationPage.State(注意啊,前面的是PhoneApplicationService.State)在离开页面和进入页面的时候保存和回复页面的显示状态信息。

应用程序生命周期(墓碑机制(程序和页面))_第10张图片

离开页面的时候,PhoneApplicationPage.State["key"]保存界面的显示状态。

应用程序生命周期(墓碑机制(程序和页面))_第11张图片

当进入页面的时候,PhoneApplicationPage.State["key"]恢复页面的额显示状态。

应用程序生命周期(墓碑机制(程序和页面))_第12张图片

结束语:本文讲述了应用程序生命周期,Tombstone墓碑机制,以及10秒钟原则,如何保存和恢复应用程序的永久数据(独立存储IsolatedStorage),如何保存和恢复应用程序的临时数据(PhoneApplicationService.State["key"]),如何保存和恢复页面的显示状态(PhoneApplicationPage.State["key"])。希望对你有帮助,祝各位博友开心进步~

 

 具体请参见MSDN:Windows Phone 执行模型http://msdn.microsoft.com/zh-cn/library/ff769557(v=vs.92).aspx

Windows Phone 执行模型

此主题尚未评级 评价此主题
 
Windows Phone
 

 

2012/2/9

在 Windows Phone 执行模型下,当用户导航离开应用程序时,该应用程序通常会置于休眠状态。但是,当应用程序处于此睡眠状态时,操作系统可能会将其终止。本节介绍如何构建在此模型下提供无缝用户体验的应用程序。

本节内容
  • Windows Phone 执行模型概述

  • 使用 Windows Phone 执行模型的最佳做法

  • 如何保留和还原 Windows Phone 页面状态

  • 如何保留和还原 Windows Phone 应用程序状态

  • Windows Phone 空闲检测

书评
  • PhoneApplicationService

相关章节

Windows Phone 启动器和选择器

你可能感兴趣的:(应用程序生命周期(墓碑机制(程序和页面)))