• Win8 导航及数据状态保持


    当Win8程序挂起时,就需要对状态进行保持,当激活进入程序后给用户一种程序始终在运行的良好体验~~

    导航状态保持

    当程序进入挂起状态或暂停时就需要保存当前访问的页面,使程序激活时返回之前的页面。导航状态很简单,在App.xaml.cs中修改,共三个步骤:
    1. 在中找到OnLaunched方法,进行注册:

    MyApp.Common.SuspensionManager.RegisterFrame(rootFrame, "appFrame");

    2. 在程序进入暂停时会触发OnSuspending方法,在它内部进行保存,采用内部编程,需要在方法声明添加async异步编程关键字:

            private async void OnSuspending(object sender, SuspendingEventArgs e)
            {
                var deferral = e.SuspendingOperation.GetDeferral();
                //TODO: Save application state and stop any background activity
                await MyApp.Common.SuspensionManager.SaveAsync();
                deferral.Complete();
            }

    3. 在重新激活时,加载导航状态,需要先判断应用程序之前的状态是否是挂起后进入OnLaunched的,在OnLaunched添加代码:

    if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: Load state from previously suspended application
                    await HelloWorld.Common.SuspensionManager.RestoreAsync();
                }

    数据状态保持

    应用程序的数据分为用户数据、会话数据。凡是用户可以直接操作,修改的数据都是用户数据,例如输入框的内容。而会话数据则是通过交互产生的数据。如点击按钮,计算后得到的结果。
    有时候我们希望用户数据可以永久保存、供多页面访问,可以使用
    ApplicationDataContainer对象进行保存在应用数据容器中。只在当前页面用的数据,可以保持在pageState 中。
    在BasePage模版的后台代码,提供了LoadState和SaveState方法,可以在它们里面进行数据的恢复与保存。

    //State保存:
    pageState["msg"] = "Message";   
    //or Windows.Storage.ApplicationDataContainer appDataContainer = Windows.Storage.ApplicationData.Current.LocalSetting; appDataContainer.Values["msg"] = "Message"; //State恢复: if(pageState != null && pageState.ContainsKey("msg")) { txtMsg.Text = pageState["msg"].ToString(); } //or Windows.Storage.ApplicationDataContainer appDataContainer = Windows.Storage.ApplicationData.Current.LocalSetting; if(appDataContainer.Values.ContainsKey("msg")) { tbInput.Text = appDataContainer.Values["msg"].ToString(); }


     

  • 相关阅读:
    Memcached下载、安装及使用演示。
    Redis和Memcache对比及选择
    Log4Net.Config配置信息《转》
    常用正则表达式!收藏
    关于ViewData,ViewBag,TempData三者学习记录!
    C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)<转>
    C# AutoResetEvent
    C#英文面试常见问题[转]
    Highsoft.Highcharts 5.0.6439.38401 key
    vs2017安装后自动应用许可证
  • 原文地址:https://www.cnblogs.com/rentianlong/p/2716379.html
Copyright © 2020-2023  润新知