wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows-phone-7 – 出于性能原因正确处理Tombstoning和Back键?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

是否有正确处理墓碑和后退键的最佳做法? 正如MSDN文档中所述,您应该在OnNavigatedFrom方法中保存瞬态数据.好的,所以在墓碑清除时保存状态的代码. 但是现在如果你按下后退键,也会调用OnNavigatedFrom方法,如果你不添加额外的检查,你将首先将状态保存到字典中,之后不久就会销毁页面. PhoneApplicationPage.State字典也是如此.因此保存代码完全浪费了CP
@H_301_2@
是否有正确处理墓碑和后退键的最佳做法?

正如MSDN文档中所述,您应该在OnNavigatedFrom方法中保存瞬态数据.好的,所以在墓碑清除时保存状态的代码.

但是现在如果你按下后退键,也会调用OnNavigatedFrom方法,如果你不添加额外的检查,你将首先将状态保存到字典中,之后不久就会销毁页面. PhoneApplicationPage.State字典也是如此.因此保存代码完全浪费了cpu,磁盘和电池时间.

这就是我为防止它而采取的措施:

protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        // when navigating back
        if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
        {
            backKeyPressed = true;
        }
    }

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (backKeyPressed)
        {
            // Don't save states on back key!
            backKeyPressed = false;     // set it anyway
            return;
        }

        // Tombstoning
        // save objects
        this.SaveState("text",someText);
        ...
    }

提醒一下:OnNavigatingFrom仅在从页面导航/返回时调用,而不是在应用程序被逻辑删除调用.

附注:显示代码仅涵盖只能导航回来的页面.这就是为什么我将backKeypressed添加到OnNavigatingFrom.如果页面可以导航到另一个页面,则需要额外检查.

>对于您创建的每个页面,有更好的方法吗?
>现在我真的必须添加backKeyPressed变量并检查我创建的每个页面吗?
>框架不应该为我们的开发人员提供一些东西,所以我们不必担心这个吗?

你对此有何看法?

编辑:

更新的问题使其更清晰.

解决方法

你在OnNavigatingFrom中检查导航方向的方法确实是推荐的做法,以避免在页面从backstack中删除之前保存状态的不必要的性能损失.

我想在示例代码添加一个说明:您应该检查’NavigationCancelEventArgs’中的’NavigationMode’属性,以确定它是向前还是向后导航.

然后,如果它是正向导航,则仅在OnNavigatedFrom中保存状态,如示例所示.当用户向后导航时,这将有助于提高您的表现.

@H_301_2@

大佬总结

以上是大佬教程为你收集整理的windows-phone-7 – 出于性能原因正确处理Tombstoning和Back键?全部内容,希望文章能够帮你解决windows-phone-7 – 出于性能原因正确处理Tombstoning和Back键?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: