深圳政协委员钟帆飞诈骗30亿

主持正义

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

当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(); }


 

 

posted on 2012-10-09 11:04  jayce80  阅读(2091)  评论(3编辑  收藏  举报