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中的新特性们。windows
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的项目还将是主流。app
上面这张图就是建立好的项目了。首先你感受到的也是最大的变化就是全部的命名空间怎么都是Windows Store里的,这就是前面提到的存在Universal App的缘由。在WP8.1的SDK中全部的命名空间简直大换血,彻底和Windows Store统一,再也不是单独的一套API命名。不光是命名空间,此次变动作的很是之完全,完全到连Windows Store中的控件都直接能够再WP中使用,好比,FlipView, GridView, ListView, RichEditBox, PasswordBox, SemanticZoom。异步
二、应用生命周期async
为了尽量的重用WP中的代码,应用能够在多任务列表里关闭。因此WP的生命周期有了很是大的变化,总共有三种状态Running、Suspended、NotRunning。ide
你的应用可能从多种途径启动,多是用户直接启动或者是从tile启动。在进入到Running状态以前应用会进入Activated状态,在这个状态咱们能够判断应用的上一个状态,从而判断是否有上次退出以前保存的数据。重写OnLaunched事件,这个事件在每次启动应用的时候被执行。ui
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挂起状态。大部分应用进入后台状态时都会中止运行。spa
系统会保持尽可能多的后台应用挂起,用户一旦启动后台应用,能够获得一个更快的启动速度。然而若是后台挂起的应用过多,那么系统会自动关闭一些应用,并且应用不会收到任何的通知,因此若是后台应用有须要保存的数据,就须要在Suspended状态的时候保存。经过订阅Application.Current.Suspending事件来保存重要数据。在应用进入Suspending状态后的1到10秒钟没有在从新打开应用,系统会认为应用已经中止响应并将其挂起进入Suspened状态。操作系统
若是你在在应用挂起时使用异步的方法来保存数据,那么你能够经过GetDeferral方法来推迟挂起事件,直到你的任务完成后再调用SuspendingDeferral的Complete方法来告知系统你的异步任务已经完成,能够进入Suspended状态了。若是一个被挂起的应用被从新唤起,将先触发Resuming事件再触发Activated事件。code
三、程序内导航blog
在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; } }
四、SD卡读写的支持
在WP8中开发者只能读SD卡上的内容,在WP8.1中若是应用注册了文件类型处理那么就能够对SD卡进行写的操做。具体能够点击这里查看。
五、数据漫游
在WP8.1中提供数据漫游的功能,漫游的数据大小限制在100KB。只有在设备处于锁屏状态和系统不繁忙的状况下才会漫游数据。漫游的数据能够在不一样版本的应用之间使用,适合在Windows Store和Windows Phone Store之间分享数据。具体的如何实现能够点击这里。
六、后台传输
在WP8.1中你能够经过Windows.Networking.BackgroundTransfer实现后台上传或者下载传输,这个过程彻底是由系统完成的,即便你的应用在没有打开的状况下。
七、在通知中心管理toast
在WP8.1中引入了新版的通知中心,开发者能够管理通知中心中的toast。经过Windows.UI.NotificationsAPI开发者能够对通知中心中的通知进行添加、删除、替换和过时等设置。详细的设置能够点击这里查看。
随着昨晚WP8.1开发者预览版的推送,正式版估计也不远了。看了What's new in WP8.1 SDK我却是以为对用户来说新的功能其实很少,但对开发者来讲更新的内容不少。将升级到8.1确实要费一番功夫,不过也方便了之后的Windows8的开发。上面只列出了我以为有意思的一些features,上面也给出了连接能够看所有的更新。