【问题标题】:Fast App Resume issues in windows phone 8windows phone 8 中的快速应用恢复问题
【发布时间】:2013-01-16 05:55:15
【问题描述】:

当我在 WMAppManifest.xml 页面磁贴导航(导航 URL)中设置 ActivationPolicy="Resume" 时,在 Tombstone 状态下不起作用,它会重新加载最后一个返回堆栈页面(URL)。它适用于休眠状态而无需重新加载页面。如果不设置此属性 (ActivationPolicy="Resume"),它会在两种状态 [休眠状态和墓碑状态] 中重新加载页面。

但是,当我们设置该属性时,我们如何实现对辅助 url 的导航。

请帮帮我。

【问题讨论】:

  • 我不听你解释你所看到的问题。您能详细说明一下最小且有效的代码复制吗?

标签: windows-phone-8 windows-phone


【解决方案1】:

添加 ActivationPolicy="Resume" 并不是让您的应用支持快速应用恢复所需的唯一步骤。我相信当您只设置一个属性时,您所描述的行为是正常的。我认为有几种方法可以实现“快速应用恢复”,但我发现这是最简单的方法。

像您刚才描述的那样设置激活策略,然后执行以下操作:

进入“App”类中的 App.xaml.cs 添加:

   private bool reset

然后您应该有一个用于初始化 RootFrame 的 InitializePhoneApplication 方法。添加这个:

RootFrame.Navigating += RootFrame_Navigating;
RootFrame.Navigated += RootFrame_Navigated;

然后你可以去添加那些方法:

void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
    if (reset && e.IsCancelable && e.Uri.OriginalString == "/MainPage.xaml")
    {
        e.Cancel = true;
        reset = false;
    }
}

void RootFrame_Navigated(object sender, NavigationEventArgs e)
{
    reset = e.NavigationMode == NavigationMode.Reset;
}

如果您正确实施此操作,您的应用应该会从您所在的最后一页恢复。

【讨论】:

  • 好东西。这对我很有用。我要补充一点,如果您的后台堆栈比主页面和一个子页面更深,那么我认为您将不得不取消一个以上的导航(第一个,您所在的页面有 isCancelable==true,但是对于其他他们是可取消的==假)。只需将它们全部取消,然后当您返回尝试导航到 MainPage.xaml 的位置时将 rest 设置为 false
【解决方案2】:

同样的问题。我得到了启用了快速应用恢复的 WP8 应用程序。我可以在我的应用程序中固定指向特定页面的磁贴。当应用程序只是暂停时它工作正常,但是当应用程序被墓碑时,然后单击辅助磁贴与单击主磁贴具有相同的效果。

我只收到一个带有 NavigationMode == BackUri == /MainPage.xaml 的 RootFrameNavigating 事件。然后,该应用程序会显示在我暂停该应用程序之前存在的上一页。

我猜这是针对特定场景的平台中的实际错误 - 快速应用恢复 + 墓碑应用 + 从固定磁贴导航,我们作为开发人员无法解决。

【讨论】:

  • 将 Silverlight 应用重定向到 Silverlight 8.1 解决了深层链接和墓碑应用的问题 :-)
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多