• 前言

   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事件,这个事件在每次启动应用的时候被执行。

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
}
if (Window.Current.Content == null)
{
Window.Current.Content = new MainPage();
}
Window.Current.Activate();
}

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状态。如果你的应用在第一页并不能再向后导航,那么你不应该处理这个事件,系统将直接挂起你的应用。在默认的项目模板中默认处理了这个逻辑。

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
Frame frame = Window.Current.Content as Frame;
if (frame == null)
{
return;
}
if (frame.CanGoBack)
{
frame.GoBack();
e.Handled = true;
}
}

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. 学习练习 java编写西游记人物类

    package com.hanqi; public class XiYouJiRenWu { double height; String weapon; String name; void prine ...

  2. java服务器

    WebLogic BEA公司开发的(被Oracle收购了)收费的 支持JavaEE所有的规范(ejb servlet/jsp规范) java  mysql(oracle)      2.WebSphe ...

  3. jQuery右键菜单ContextMenu使用笔记

    插件下载地址:http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.packed.js 和http://ww ...

  4. 学习STL-介绍一下STL

    从大学时就开始学习C++,到现在近5年的时间了却很少用到STL.现在想想真得是对不起这门语言,也对不起宝贵的五年光阴.我钟爱C++,所以一定要完全搞懂它,理解它.爱一个人的前提是要懂他(她),爱一门语 ...

  5. JavaScript中的Get和Set访问器

    今天要和大家分享的是JavaScript中的Get和Set访问器,和C#中的访问器非常相似. 标准的Get和Set访问器的实现   function Field(val){       this.va ...

  6. windows phone主题切换(换肤)

    之前项目做了个主题切换的功能,最后客户没来得及出第二套界面给放弃了,默哀中... 为了不让它就这样流产了,就放博客共享吧. 首先说明下原理:这个切换是通过重写资源字典里指定的样式,在运行的过程中加载指 ...

  7. 如何使用CSS3画出一个叮当猫

    刚学习了这个案例,然后觉得比较好玩,就练习了一下.然后发现其实也不难,如果你经常使用PS或者Flash的话,应该就会知道画个叮当猫是很容易 的事,至少我是这么觉得.但是,用CSS3画出来确实是第一次接 ...

  8. 编程作业—C++初探 简单的学生信息处理程序实现

    简单的学生信息处理程序实现 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...

  9. IOS基础——IOS学习路线图(一)

    一.一个月 1.OC语法基础. 2.KVC和KVO 3.IOS UI基础 4.UI表视图与集合视图 5.UIStoryboard和autoLayout 6.Ipad API 二.10天 7.静态页面考 ...

  10. Custom Sort Order

    When trying to sort based on values that do not fit the standard ascending and descending sort logic ...