Windows Phone 8.1SDK新特性預覽

  • 前言

   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

  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的項目還將是主流。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方法來推遲掛起事件,直到你的任務完成後再調用SuspendingDeferralComplete方法來告知系統你的異步任務已經完成,能夠進入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,上面也給出了連接能夠看所有的更新。

相關文章
相關標籤/搜索