• 前言

   Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装。本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的安装包。这就意味着我们要先把Windows从8升级到8.1,再把VS从2012升级到2013。又是折腾了一个够。可能有人说这个Update2还是RC版,要等到Release放出。我觉得这个安装包就是Release了,要等WP8.1出来后再改名儿,要不WP8.1还没出,SDK的Release先放出来了容易让人诟病。这篇文章就来讨论一下那些在WP8.1SDK中的新特性们。

  1. 创建应用界面

Universal Apps是一个统一的项目,可以将Windows Store和Windows Phone 8.1创建在一个项目中,直接用一套Core,两个UI。这绝对是一个非常有用的功能。上面的项目模板中你感觉到陌生的可能是Hub App,其实就是之前的Panorama项目,名字被改成了Hub。这次我们就来创建一个Windows Phone8.1的项目。而且只能创建WP8.1的项目,不像VS2012一样可以选择创建7.1还是8.0的项目。我想微软可能是出于目前所有8.0的手机都可以免费升级到8.1的考虑,不过我想今后的一段时间8.0的项目还将是主流。

上面这张图就是创建好的项目了。首先你感觉到的也是最大的变化就是所有的命名空间怎么都是Windows Store里的,这就是前面提到的存在Universal App的原因。在WP8.1的SDK中所有的命名空间简直大换血,完全和Windows Store统一,不再是单独的一套API命名。不光是命名空间,这次变更做的非常之彻底,彻底到连Windows Store中的控件都直接可以再WP中使用,比如,FlipView, GridView, ListView, RichEditBox, PasswordBox, SemanticZoom。

2、应用生命周期

      为了尽可能的重用WP中的代码,应用可以在多任务列表里关闭。所以WP的生命周期有了非常大的变化,总共有三种状态Running、Suspended、NotRunning。

你的应用可能从多种途径启动,可能是用户直接启动或者是从tile启动。在进入到Running状态之前应用会进入Activated状态,在这个状态我们可以判断应用的上一个状态,从而判断是否有上次退出之前保存的数据。重写OnLaunched事件,这个事件在每次启动应用的时候被执行。

  1. async protected override void OnLaunched(LaunchActivatedEventArgs args)
  2. {
  3. if (args.PreviousExecutionState == ApplicationExecutionState.Terminated ||
  4. args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
  5. {
  6. // TODO: Populate the UI with the previously saved application data
  7. }
  8. else
  9. {
  10. // TODO: Populate the UI with defaults
  11. }
  12. if (Window.Current.Content == null)
  13. {
  14. Window.Current.Content = new MainPage();
  15. }
  16. Window.Current.Activate();
  17. }

PreviousExcutionState代表应用打开之前的状态,ApplicationExcutionState有三种状态,如果是Terminated,代表程序是被系统后台关闭的,那么可能有我们之前保存的数据。ClosedByUser和NotRunning代表应用是被用户关闭或者为启动的状态,要进行一次完整的启动应用。如果用户让应用进入到后台,那么操作系统会给一点时间来相应用户的重新开启应用,如果用户没有立即启动后台的应用那么系统会将应用置成Suspend挂起状态。大部分应用进入后台状态时都会停止运行。

系统会保持尽量多的后台应用挂起,用户一旦启动后台应用,可以得到一个更快的启动速度。然而如果后台挂起的应用过多,那么系统会自动关闭一些应用,而且应用不会收到任何的通知,所以如果后台应用有需要保存的数据,就需要在Suspended状态的时候保存。通过订阅Application.Current.Suspending事件来保存重要数据。在应用进入Suspending状态后的1到10秒钟没有在重新打开应用,系统会认为应用已经停止响应并将其挂起进入Suspened状态。

如果你在在应用挂起时使用异步的方法来保存数据,那么你可以通过GetDeferral方法来推迟挂起事件,直到你的任务完成后再调用SuspendingDeferralComplete方法来告知系统你的异步任务已经完成,可以进入Suspended状态了。如果一个被挂起的应用被重新唤起,将先触发Resuming事件再触发Activated事件。

3、程序内导航

     在WP8.1中用户可以通过back键来进入Suspended状态而不是直接退出应用。这个功能和以往的WP应用不同,通过注册BackPressed事件。当用户点击back键的时候将触发,通过设置BackPressedEventArgs.Handled为true告知系统将应用放到后台设为Suspended状态。如果你的应用在第一页并不能再向后导航,那么你不应该处理这个事件,系统将直接挂起你的应用。在默认的项目模板中默认处理了这个逻辑。

  1. private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
  2. {
  3. Frame frame = Window.Current.Content as Frame;
  4. if (frame == null)
  5. {
  6. return;
  7. }
  8. if (frame.CanGoBack)
  9. {
  10. frame.GoBack();
  11. e.Handled = true;
  12. }
  13. }

4、SD卡读写的支持

    在WP8中开发者只能读SD卡上的内容,在WP8.1中如果应用注册了文件类型处理那么就可以对SD卡进行写的操作。具体可以点击这里查看。

5、数据漫游

    在WP8.1中提供数据漫游的功能,漫游的数据大小限制在100KB。只有在设备处于锁屏状态和系统不繁忙的情况下才会漫游数据。漫游的数据可以在不同版本的应用之间使用,适合在Windows Store和Windows Phone Store之间分享数据。具体的如何实现可以点击这里

6、后台传输

     在WP8.1中你可以通过Windows.Networking.BackgroundTransfer实现后台上传或者下载传输,这个过程完全是由系统完成的,即使你的应用在没有打开的情况下。

7、在通知中心管理toast

     在WP8.1中引入了新版的通知中心,开发者可以管理通知中心中的toast。通过Windows.UI.NotificationsAPI开发者可以对通知中心中的通知进行添加、删除、替换和过期等设置。详细的设置可以点击这里查看。

  • 总结

    随着昨晚WP8.1开发者预览版的推送,正式版估计也不远了。看了What's new in WP8.1 SDK我倒是觉得对用户来讲新的功能其实不多,但对开发者来说更新的内容很多。将升级到8.1确实要费一番功夫,不过也方便了以后的Windows8的开发。上面只列出了我觉得有意思的一些features,上面也给出了链接可以看全部的更新。

Windows Phone 8.1SDK新特性预览的更多相关文章

  1. C# 9.0 新特性预览 - 类型推导的 new

    C# 9.0 新特性预览 - 类型推导的 new 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大 ...

  2. C# 9.0 新特性预览 - 空参数校验

    C# 9.0 新特性预览 - 空参数校验 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它 ...

  3. C# 9.0 新特性预览 - 顶级语句

    C# 9.0 新特性预览 - 顶级语句 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们 ...

  4. C# 9.0 新特性预览 - init-only 属性

    C# 9.0 新特性预览 - init-only 属性 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章 ...

  5. avalon1.3的新特性预览

    avalon1.2的性能优化风暴很快就告一段落,入职也快一个月了,许多乱七八糟的事也少了下来,估计未来一个月会有许多好东呈现给大家. 首先是一个性能检测工具.由于MVVM是将原本由人脑干的事,转到各种 ...

  6. Office 2016 正式发布——新特性预览

    今天微软又发生了一件大事!Windows Office 2016正式发布,这标志着Windows Office 又达到了一个新的里程碑! 全新的Office 发布为Office 365 用户带来了新的 ...

  7. CSS3_新特性预览

    一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信.  它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...

  8. Vue.js 3.0 新特性预览

    总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团 ...

  9. Windows Phone 8.1新特性 - 应用商店启动协议

    Windows Phone 8.1 Preview SDK 发布也有几个月了,之前断断续续也写过几篇 Windows Phone 8.1 新特性的文章,今天给大家介绍一下应用商店启动协议相关的知识. ...

随机推荐

  1. BZOJ1070 修车-费用网络流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1070 Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技 ...

  2. 学习资料 50个常用的sql语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  3. Java基础——序列化

    Java的“对象序列化”能将一个实现了Serialiable接口(标记接口,没有任何方法)的对象转化为一组byte,这样日后要用到这个对象的时候,就能把这些byte数据恢复出来,并据此重新构建那个对象 ...

  4. Vim与GCC和gdb完美组合

    一.vim vim修改一下配置文件后,如果你稍微会点vim的命令使用,那可比一般的编辑器好用啊,如果一点不会vim的命令使用,就跟一般编辑器一样使用. 打开etc/vim/vimrc文件 这里的引号是 ...

  5. SSIS Error Code DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR

    将一批Job从一台agent服务器搬到另外一台agent, 没有做任何的修改,但是job执行的时候报错. Error: 2014-07-03 14:42:57.14 Code: 0xC0209303 ...

  6. Windbg 线程状态笔记

    1.ntdll!ZwWaitForSingleObject 线程被挂起,如果下面跟着是这样子: RetAddr : Args to Child : Call Site `7766e518 : `fff ...

  7. Use BEC to do mobile phone forensics

    Belkasoft Evidence Center makes me very impressed that it supports lots of evidence type. I have to ...

  8. Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式

    本文主要介绍多人视频会议服务端架构方式,文章来自博客园RTC.Blacker,转载必须说明出处,欢迎关注个人微信公众号blacker,更多详见www.rtc.help 随着移动互联网的迅速发展,很多公 ...

  9. Android WebRTC 音视频开发总结(二)-- webrtcdemo介绍

    这节主要介绍WebRTCDemo的结构,以此来简单了解WebRTC的调用流程,转载请说明出处(博客园RTC.Blacker) 1.先看WebRTCDemo的代码结构,如下图: 2.WebRTCDemo ...

  10. CICS的database中R D中参数的含义

    见链接 http://blog.163.com/ajj_star/blog/static/1626772542010328113513429/ Region Definitions (RD) 定义了所 ...