我有一个Windows Phone 7应用程序如何确保它支持快速任务切换?

时间:2011-08-17 21:39:34

标签: windows-phone-7

作为开发人员,我需要确保我的应用程序支持快速任务切换?

理想情况下,我正在寻找开发人员检查列表中的注意事项。

我做了搜索,但我发现的一切让我觉得我错过了一些东西,往往更多的是营销而不是开发人员的步骤和技术细节。

谢谢!

2 个答案:

答案 0 :(得分:14)

FAS的大部分工作都是自动处理的。要记住的主要事项是Tombstoning对您的应用程序意味着什么。通过FAS恢复时,目的是您不必删除任何逻辑删除,因此通常不需要恢复视图模型状态或类似的东西。有几个地方你需要编写代码 - 这是一个快速清单。

PhoneApplicationPage.OnNavigatingFrom - 试用您正在使用的控件,以确保FAS恢复为您提供的数据。例如 - TextBox控件正确记住您放入的所有内容,但MediaElement不记得视频或播放头的位置。

PhoneApplicationPage.OnNavigatedTo - 您在OnNavigatingFrom中保存的任何内容都需要在OnNavigatedTo中重新应用。例如 - 将视频源重新加载到MediaElement中,重新定位视频并重新启动它。

Application.Activated - 此事件的事件参数现在包含一个名为IsApplicationInstancePreserved的属性。当应用程序通过FAS返回时,此属性返回TRUE;当应用程序从Tombstoning返回时,此属性返回FALSE。所以你有这样的代码:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (!e.IsApplicationInstancePreserved)
    {
        RestoreStateFromTombstone();
    }
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    SaveStateForTombstone();
}

这是必需品。我还没有对FAS基础设施进行任何真正的压力测试,看看它在哪里打破,但这对我迄今为止所进行的实验来说非常有用。

有关更多信息,请参阅由Adina Trufinescu提供的名为Get Ready for Fast Application Switching的MIX11会议的简短视频,其中提供了有关FAS的更多详细信息,这些信息确实帮助我开始。

/克里斯

答案 1 :(得分:0)

如果要从Windows Phone 7.0中的普通逻辑删除应用程序升级,则唯一需要更改的是检查Application_Activated事件中的e.IsApplicationInstancePreserved - 如果此属性设置为true,则表示您不必从IsolatedStorage / State补充水分。如Chris Koenig的优秀答案所述:

//Windows Phone 7.0
private void Application_Activated(object sender, ActivatedEventArgs e)
{
    RestoreStateFromTombstone();
}

//Windows Phone 7.1/7.5/Mango
private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (!e.IsApplicationInstancePreserved)
    {
        RestoreStateFromTombstone();
    }
}

症状是您的数据绑定在通过多任务切换应用程序后不再有效(因为您正在重新创建对象状态,因此数据绑定不再有效)