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中的新特性們。

  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,上面也給出了鏈接可以看全部的更新。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM