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

主持正义

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  27 随笔 :: 0 文章 :: 90 评论 :: 56257 阅读

当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   jayce80  阅读(2091)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示