WP之快速恢复应用

     

      在新的WP8开发程序模板里,已经存在“快速恢复”的相关代码,在无需添加任何代码的情况下都可以实现“快速恢复效果”.但问题还是存在:无法恢复到最后浏览的页面:

解决:

http://blog.csdn.net/tianmuxia/article/details/8618100






     当前WPSDK有个BUG,就是你打开一个程序然后按WIN键缩小后,再从程序列表点击程序图标进入程序的时候。是新建一个实例,并不是恢复之前休 眠的程序实例。

        那如何实现在WindowsPhone8 应用程序中 点击了 Windows logo 后 重新在应用程序列表中单击该程序图标 快速启动应用程序示例代码 下载


1. 在App.cs 文件中修改添加一下代码

#region 电话应用程序初始化

        // 避免双重初始化
        private bool phoneApplicationInitialized = false;

        // 请勿向此方法中添加任何其他代码
        private void InitializePhoneApplication()
        {
            if (phoneApplicationInitialized)
                return;

            // 创建框架但先不将它设置为 RootVisual;这允许初始
            // 屏幕保持活动状态,直到准备呈现应用程序时。
            RootFrame = new PhoneApplicationFrame();
            RootFrame.NavigationFailed += RootFrame_NavigationFailed;

            RootFrame.NavigationFailed += RootFrame_NavigationFailed;

            RootFrame.Navigated += CompleteInitializePhoneApplication;
            RootFrame.Navigated += CheckForResetNavigation;

            RootFrame.Navigating += RootFrame_Navigating;

            // 确保我们未再次初始化
            phoneApplicationInitialized = true;
        }

        bool isReset = false;
        void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            //Resest验证判断 (此处会执行两次)
            if (e.NavigationMode == NavigationMode.Reset)
            {
                isReset = true;
            }
            else if (e.NavigationMode == NavigationMode.New && isReset)
            {
                isReset = false;
                e.Cancel = true; // 取消导航到新页面s
                RootFrame.Navigated -= ClearBackStackAfterReset; // 取消导航完成事件(否则会直接退出程序)
            }
        }

        void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
        {
            if (RootVisual != RootFrame)
                RootVisual = RootFrame;
            RootFrame.Navigated -= CompleteInitializePhoneApplication;
        }

        void CheckForResetNavigation(object sender, NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Reset)
                RootFrame.Navigated += ClearBackStackAfterReset;
        }
        private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
        {
            RootFrame.Navigated -= ClearBackStackAfterReset;

            if (e.NavigationMode != NavigationMode.New)
                return;

            while (RootFrame.RemoveBackEntry() != null)
            {
                ;
            }
        }

        #endregion

2.在WMAppManifest.xml 中添加 ActivationPolicy="Resume"

<Tasks>
      <DefaultTask Name="_default" NavigationPage="MainPage.xaml" ActivationPolicy="Resume"/>
    </Tasks>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值