使用C#开发Metro 风格应用的路线图 -- metro应用生命周期的处理
来源:互联网 发布:第一个人工智能机器人 编辑:程序博客网 时间:2024/06/07 19:14
我们知道,程序可能有活跃,扶起,激活,终止等状态。
这里主要讲的是当用户切出应用又切回来时需要特别地做的一些处理, 与wp7相同,例如:
微软有一些用户体验的指导方针:
- 当用户恢复应用时我们要保证和离开应用时的效果一样,我们需要处理 浏览器session, 购物车,未完成的输入,正在进行中的电影或游戏 等之类的数据。
- 当用户再次启动应用程序时要记录用户已经浏览过的数据,避免重复浏览,比如 新闻的条数,天气的日期。
- 当程序挂起时记录程序数据,因为挂起的终止时不再接受notification
- 当程序从挂起恢复时,最好更新一下UI,因为有些数据可能在后台更新了.
- 当程序从终止重新启动时,从存储里恢复上次的数据
- 让用户选择重新开始或恢复上次的数据
1、当程序激活时我们需要做什么
重写OnLaunched事件
using System;using Windows.ApplicationModel;using Windows.ApplicationModel.Activation;using Windows.UI.Xaml;namespace AppName{ public partial class App { async protected override void OnLaunched(LaunchActivatedEventArgs args) { EnsurePageCreatedAndActivate(); } // Creates the MainPage if it isn't already created. Also activates // the window so it takes foreground and input focus. private MainPage EnsurePageCreatedAndActivate() { if (Window.Current.Content == null) { Window.Current.Content = new MainPage(); } Window.Current.Activate(); return Window.Current.Content as MainPage; } }}
恢复数据
async protected override void OnLaunched(LaunchActivatedEventArgs args){ if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser) { // TODO: Populate the UI with the previously saved application data } else { // TODO: Populate the UI with defaults } EnsurePageCreatedAndActivate();}
如果程序是非法终止的,即是PreviousExecutionState状态是 NotRunning, 那就没有数据可以恢复。
2、当程序挂起时我们需要做什么
首先订阅suspending事件
using System;using Windows.ApplicationModel;using Windows.ApplicationModel.Activation;using Windows.UI.Xaml;partial class MainPage{ public MainPage() { InitializeComponent(); App.Current.Suspending += new SuspendingEventHandler(App_Suspending); }}
然后保存用户数据
CoreDispatcher dispatcher = Window.Current.Dispatcher;private void App_Suspending(object sender, object e){ // This is a good time to save app data in case the process gets terminated. IPropertySet settingsValues = ApplicationData.Current.LocalSettings.Values; // TODO: Save the app data}
当程序挂起时数据会保存在内存,但是当系统资源不够用时系统会终止程序,所以当我们重新启动程序时,系统会触发Activated事件,我们需要在OnLanuched方法中恢复上次挂起时保存的数据。系统并不会通知我们何时终止了程序, 所以我们必须得在挂起时保存数据以保证在重新启动终止的程序时能恢复数据。
3、当程序恢复时我们需要做什么
首先订阅Resuming事件
partial class MainPage{ public MainPage() { InitializeComponent(); App.Current.Resuming += new Windows.UI.Xaml.EventHandler(App_Resuming); }}
更新UI可能产生的新数据
CoreDispatcher dispatcher = Window.Current.Dispatcher;private void App_Resuming(object sender, object e){ // There are no special arguments for the resuming event dispatcher.Invoke(CoreDispatcherPriority.Normal, (object invokedSender, InvokedHandlerArgs invokedArgs) => { // TODO: Refresh network data }, this, null);}
如果没有数据要更新,则不需要订阅此事件。
- 使用C#开发Metro 风格应用的路线图 -- metro应用生命周期的处理
- 使用C#开发Metro 风格应用的路线图 -- 开发环境
- 使用C#开发Metro 风格应用的路线图 -- 移植wp7应用到metro上
- 使用C#开发Metro 风格应用的路线图 -- metro设计原则
- 使用C#开发Metro 风格应用的路线图 -- 获取开发人员许可证
- 使用C#开发Metro 风格应用的路线图 -- 控件分类介绍
- 使用C#开发Metro 风格应用的路线图 -- 在页面间导航、传值
- 使用C#开发Metro 风格应用的路线图 -- 添加启动画面
- 使用C#开发Metro 风格应用的路线图 -- 触屏操作
- 使用C#开发Metro 风格应用的路线图 -- 在页面间导航、传值
- win8开发应用之二:管理应用生命周期和状态(使用 C# 和 XAML 的 Metro 风格应用)
- WIN8 Metro风格应用开发框架的初步了解
- win8应用开发之一:创建一个使用 C#/VB 和 XAML 的 Metro 风格应用
- Metro 风格应用的导航设计
- 使用 HTML 控件创建出色的 Metro 风格应用
- 使用 C++ 创建你的第一个 Metro 风格应用
- 使用 C# 或 Visual Basic 创建你的第一个 Metro 风格应用
- 使用 C# 或 Visual Basic 创建你的第一个 Metro 风格应用
- 使用C#开发Metro 风格应用的路线图 -- metro设计原则
- 使用C#开发Metro 风格应用的路线图 -- 移植wp7应用到metro上
- 使用C#开发Metro 风格应用的路线图 -- 控件分类介绍
- 使用C#开发Metro 风格应用的路线图 -- 在页面间导航、传值
- 使用C#开发Metro 风格应用的路线图 -- 添加启动画面
- 使用C#开发Metro 风格应用的路线图 -- metro应用生命周期的处理
- 使用C#开发Metro 风格应用的路线图 -- 触屏操作
- 关于mvvm模式中消息传递的疑问
- Debian 6配置GNOME桌面环境
- windows 8 metro 开发学习资源链接
- 关于Metro style下可用的.net类库的一些概要说明
- windows 8 metro 关于定位
- windows 8 开发 tips
- windows 8 开发 集成Bing搜索service