昨天微軟對外公布了Windows
Phone的下一個代號為Mango的重要更新的更多細節,並在同時也發布了Mango的開發工具,Windows Phone Developer
Tools 7.1(Beta)。本文將從開發人員角度簡單談談Mango帶來哪些改變。
What’s New
首先讓我們從上面這張圖片來簡單的看看Mango中都有啥讓你心動不已的新玩意兒呢?
1。Sensor API:
增強了的各種感應器API。首先,在Mango中終於增加了指南針感應器的API,其次是Mango中新加入的可選的陀螺儀傳
感器及其API。在MIX11中曾經提及過一個被稱之為Motion
Sensor的東東,不過這名字太容易引起誤解。因為說起Sensor的話大家就會想起什麼具體的硬體感應器。但是這裡的Motion
Sensor/Motion
API只是將加速度感應器、指南針感應器以及陀螺儀的未經處理資料進行高層次的封裝,以便讓你更好的利用這些感應器的資料。所以,現在這組高度封裝的API稱
之為Motion API。
其次,在Mango中終於允許你直接來訪問網路攝影機的原始的幀資料。初此之外還包括閃光燈、自動對焦、快門按鈕等。這樣使得你來開發出自己類似於Camera360之類的特效拍照軟體或者說某些實景增強軟體成為可能性。
2。Multi Tasking:
也就是大家議論最多的多任務功能了。首先是Fast App Switching,應用程式快速切換。其實使用者才不在乎你到底是不是什麼多任務呢。他們關心的是我開啟程式A,然後切出去使用程式B,當我回到程式A的時候這個程式A是不是能夠接著剛才中斷的地方接著往下進行,當然這個程式A得要能夠快速的切換過來才行。
為瞭解決這個需求,在Windows Phone
7的時代微軟提出了一個Tombstoned(墓碑機制)的概念。也就是在你的程式正在啟動並執行時候,如果按下Home鍵切出去或者受到某些幹擾(例如你在
程式裡面開啟了連絡人選取器等)被Deactive的時候,你的程式將會進入一個墓碑化的狀態。在這個墓碑化的狀態時你需要來自己把當前的所有狀態都儲存
下來,而你的程式實際上已經退出運行狀態。然後你的程式被再次啟用(例如選取器被關閉)(Active)的時候,系統會自動進入你剛才進入墓碑機制的那個
頁面,你需要在代碼中手工再恢複剛才儲存的那些資料。這樣形成一個任務切換到後台,然後再次恢複的體驗。
但是這種操作的致命缺點就是所有的程式在切換出去後都需要墓碑化這導致切換的效率極低。所以,在Mango中引入了一個新的狀態,被稱之為
Dormant(休眠)。在一個程式被停用的時候,它首先嘗試著進入Dormant狀態。Dormant狀態中程式並沒退出,而是該程式中所有的線程活動
都將被掛起保留在記憶體中。當你的程式被再次啟用的時候,它就可以簡單的把程式從休眠狀態中恢複過來。這樣程式的切換和恢複就很快了。但是,並不是所有的程
序被切換後都會進入Dormant狀態,這取決於當前的系統資源。如果記憶體不足了,它會將你的程式自動的切換到墓杯化狀態。而從墓碑化狀態再恢複過來的話
就需要你做一些和以前一樣的狀態恢複工作了。通過Dormant,Mango使得快速的應用程式切換和恢複成為可能性。
那麼系統中有多少程式可以被同時休眠?文檔中似乎並沒有提及,據WPMind判斷,這應該取決於系統的記憶體。而進入墓碑化狀態的程式則有上限,那就是同時只有5個墓碑化的程式。
但是你會說Dormant不是真正的多任務啊。是的,這並不是真正的多任務。因為你的程式休眠後系統中並發啟動並執行第三方應用始終還只是一個。好吧,這就依賴於Mango中其他兩個最重要的概念了:Notification Service和Background Agents。
Notification Service,在文檔中也被稱之為Scheduled
Notification。它可以讓你的程式指定在某個時間間隔後向使用者發出一個Alerm或者Reminder對話方塊。當然,這時候你的程式可能並沒有
運行(甚至是手機已經重啟了)。而你可以指定使用者在遇到Reminder對話方塊的時候來開啟你自己程式並進入一個特定頁面。
除了Notification Service之外,Mango還提供了Background Agents,也被稱為Scheduled
Tasks。它允許你的程式在後台執行某些任務,當然這時候你的程式可以沒有在前台運行。這裡有兩種Background
Agents可以使用,PeriodicTask和ResourceIntensiveTask。
Periodic Agents通常每30分鐘運行15秒。使用這種Agent,你可以讓系統周期的去做一些小的任務,例如擷取你的位置、和伺服器同步資料等等。
ResourceIntensiveTask即Resource-intensive
Agent,它可以在你的手機空閑(CPU空閑,沒有撥打到電話等)並且電量充足(插著電源或者90%以上的電量)的時候自動的持續運行10分鐘。不過還有
一個更變態的需求,就是手機這時候沒有資料網路的串連。也就意味著你的手機必須是通過Wi-Fi或者USB線串連到電腦上來上網的。這種情境
下,WPMind認為比較適合於某些行業使用者,例如出去集採信息,回到辦公室後將手機串連到電源上然後進行大量資料的同步。
除此之外,其實Mango還有兩個後台服務可以用於一些後台應用情境:Background File Transfer Service和Background Audio Service。Background
File Transfer Service可以讓你的程式在後台與其他Web伺服器進行通訊(Get 或者
POST)來上傳或者下載檔案。不過通過Post上傳的資料不得超過3M,而下載的資料如果超過20M只能是手機處於WiFi或者USB線串連的時候才可
以。使用該服務之需要指定目標、本機存放區路徑和傳輸方式(GET還是POST)就可以,再也不需要你自己去處理複雜的什麼HttpWebRequest對
象了。
至於Background Audio服務則可以允許你的程式在後台運行時播放、控制音樂。想要製作自己的音樂播放器的兄弟終於可以放輕鬆了,畢竟在Windows Phone 7中由於不支援這功能很多人都打消了做自己的音樂播放器的念頭。
通過Fast App Switching和Background Agents、Notification
Service以及剛才介紹的Background File Transfer Service和Background Audio
Service,Mango終於為開發人員開啟了一些通道從而使得你可以開發出更有意思的一些應用來。
好的,今天就先寫到這裡,明天繼續給大家介紹這張圖片中剩下的部分。
注意:本文內容來源自 MIX11部分課程內容以及Windows Phone Developer Tools 7.1 (Beta)的文檔,本文提及的Mango相關知識在Mango的正式版本上市之後或許會有所改變。
延伸閱讀:【MIX11】多圖揭秘Mango
原文首發於WPMind.com。