微軟近日在Windows Phone 7 Series的官方論壇上列出了一些Windows Phone 7 Series開發的常見問題的解答,其中我們以前一直不明確的一些問題(例如多任務,沙箱,網路等等)都有瞭解答。為了方便大家我將其一一翻譯出來,希望能夠對您帶來一些協助。當然,如果您願意的話,去查看原文會獲得更加準確的理解。
前後台中的應用程式進程
我的程式能運行在後台嗎?
不可以,Windows Phone 7 Series的應用程式模型只支援在前台執行。如果另外一個程式(第三方或者內建的)在你的程式正在啟動並執行時候啟動,你將會得到一個你的程式將要被終止的事件通知。
我的程式從前台離開時會發生什嗎?
你的應用將會收到一個它將被關閉的通知。你的應用從前台離開的時刻並沒有被馬上終止,如果你需要保留狀態,你需要自己編寫一些邏輯來處理這些事情。
當我的程式從前台離開後重新啟動並執行時候會發生什嗎?
你的應用程式將會從最初始的狀態開始運行。如果需要保留狀態,你應該自己編寫邏輯來判斷狀態是否被保留並恢複它。
這是否意味著沒有辦法來編寫應用進行有效後台更新?
不是!我們提供了可以讓你的應用所利用的Push Notification服務。例如聊天程式,輪流操作的遊戲以及其他類型的依賴外來事件的程式都可以完美的利用Push Notification。你可以從MSDN的這篇文章上瞭解更多關於Push Notification的資訊: http://msdn.microsoft.com/en-us/library/ff402558%28VS.92%29.aspx
如果我的程式沒有運行,我可以利用Push Notification來啟動我的程式嗎?
不能直接運行。當接收到一個對你的程式的Push Notification的時候,你的程式的令牌可以被更新至這新的資訊,這時候使用者將會被提示啟動你的程式。程式並不會直接自動啟動。
我可以設定一個定時器來啟動我的程式嗎?
不行,是否啟動你的程式取決於使用者。
我的程式可以被系統事件啟動起來嗎?
不太可能,但是它仍然是一個問題。絕大部分情況下,不可能由一個系統事件來啟動起你的程式。但是當你的程式啟動的時候或許你可以獲得一個通知緩衝。對於這個情況,當我們瞭解更多的時候我們會公布出來。
如果我不需要使用者介面,我能編寫一個服務的DLL駐留在系統中嗎?
不行,你將不能編寫系統服務DLL。所有的程式集都將運行在它們自己的獨立的沙箱中,和作業系統以及其他應用程式隔離開。
應用程式的安裝
我可以怎樣向裝置中安裝應用程式?
應用程式將會在從MarketPlace中下載後自動安裝。
我可以不使用MarketPlace而手工安裝應用程式嗎?
不行, 自行安裝應用程式將是不允許的。唯一獲得應用程式的途徑是通過MarketPlace。
如果我不能按狀態,我怎麼測試我的應用程式?
作為一個註冊了的開發人員,你將會被允許註冊一些裝置用來直接部署你的應用程式用來測試。如果只是為了測試用不著把它部署到MarketPlace上面去。
我的應用程式只是為了我們的公司或者某些特殊的團體使用,我怎麼通過MarketPlace將這些應用僅僅分發給他們?
目前MarketPlace並沒有辦法為私人應用程式鎖定地區。當然也有針對行動電信業者的例外情況。目前沒有辦法將你的程式針對特殊的團體或者裝置做限制。.
裝置連通性
我們仍然使用ActiveSyncIs來將裝置串連到電腦嗎?
不,同步時自動的就像將Zune HD串連到電腦上那樣。
我應該如何通過Internet來傳輸資料?
HTTPGET或者WebServices之類的Web技術將被用來作為在Internet上通訊的方式。當你的程式沒有啟動並執行時候你還可以使用Push Notification來通訊。
我可以使用Socket來做點對點的通訊嗎?
Windows Phone 7 Series目前並不直接支援Socket類。儘管手機上的Silverlight盡量靠近案頭版的Silverlight 3的特性列表,但是它只提供這些特性的一個子集所以並不包含所有的類(當然它也針對Silverlight 3做了一些擴充)。
我如何能夠和其他的用戶端即時的串連?
目前Windows Phone 7 Series的最初版本並不支援點對點的通訊。我們始終會評估開發人員和使用者的需求,或許以後我們會決定將這個特性加上。
Hub/Pivot/Tab以及其他Silverlight中缺少的控制項
我在那麼多示範中所看到的”Hub”控制項在哪裡?
在MIX上的示範中你所看到的“Hub” 和 “Pivot” 控制項我們還在持續完善,並不在當前的工具中所包含。
什麼時候它們將會可用?
目前並沒有針對這些控制項的確切的時間表,,但是產品組將會密切關注開發人員社區去瞭解開發人員需要什麼樣的有用的控制項。如果你想要某個當前並沒有的控制項,請在論壇中留言。
我可以自己做一個嗎?
當然你可以做自己的控制項。但是你需要瞭解到Pivot / Hub控制項是個非常重要的需求,機會是好的但是在以後這些或許會作為官方的工具的一部分發布。
裝置儲存
什麼是”Isolated Storage”
“Isolated Storage” 涉及的是在裝置的檔案系統中,你的程式所佔據的空間。你將無法訪問這個空間以外的內容 (包括其他應用程式的空間或者作業系統的空間。) 這樣做將會給你的程式提供一個自管理的安全的沙箱,並且預防其他程式不小心(或者惡意的)侵入你的應用程式空間。
在Windows Phone 7 Series的裝置上有沒有本機資料庫可以利用?
沒有,在最初的Windows Phone 7 Series上沒有本機資料庫API可以利用。
我應該如何為我的應用程式儲存資訊?
你可以將資訊儲存在自己的儲存空間裡。如果你需要大型的資料庫這裡有一些選擇:Windows Phone 7 Seires 已經支援WebServices,它可以讓你容易的訪問儲存在Internet上的資訊。使用一個可以被WebServices訪問的資料庫,你的應用程式就可以在串連Internet的情況下即時的擷取資料。
如何處理非串連的情景呢?
沒有串連到Internet的話,你將無法訪問雲端服務的資料。這種情況下,建議你的程式通過多種方式來處理(在裝置上緩衝自訂格式的資料,提醒使用者缺少串連)。
我的應用程式更加趨向於在非串連的情境下使用,如果我不能訪問雲端服務該怎麼做?
針對這種情境有兩種方案:
•制定你自己的資料格式,將資料存放區在裝置的儲存空間裡。
•繼續開發針對Windows Phone 6.5或者之前版本的應用,那些版本可以支援本機資料庫。
以後會支援本機資料庫嗎?
當前我們沒有宣告這樣的計劃來增加這一功能;但是我們會密切關注開發人員和使用者的需求並識別哪些特性會給每個人帶來好處。
Native Code 的支援
我可以用c++來編寫我的應用程式嗎?
不行,當前C#是Windows Phone 7 Series平台上唯一支援的開發語言。
我可以用VB編寫我的應用程式嗎?
現在還不行,但是在以後的開發工具中我們會強烈考慮這一點的。
我可以用P/Invoke來調用系統API嗎?
不行,作為ISV來說無法使用P/Invoke來訪問系統API。任何試圖使用P/Invoke的程式將會被從MarketPlace中退回。
我可以用P/Invoke來掉用我自己的native dll嗎?
不行,native code不能作為你的應用程式的一部分來運行。P/Invoke是不允許的。
工具安裝的問題
我的安裝失敗了
在將你的失敗貼到論壇之前,請檢查系統的事件記錄或許能夠提供一些線索。
我的安裝結束了,但是我不能運行期Visual Studio 2010 Express for Windows Mobile. 我應該做什嗎?
這自然取決於你所遇到的錯誤。這裡有一些基本的指導:
• 首先,檢查版本資訊. 確保你的系統符合要求並且不是這裡已經列出來的問題。 (http://download.microsoft.com/download/D/9/2/D926FB38-BB43-4D87-AE5A-1A3391279FAC/ReleaseNotes.htm)
• 如果你遇到一個註冊表或者檔案的許可權問題,試著以管理員權限運行應用程式。
• 如果你還沒有重啟,試著重啟一下。對於某些人來說它將會清除掉很多問題。
我得到一個”The application cannot start” 的錯誤
請看這篇Blog的說明:http://blogs.msdn.com/visualstudio/archive/2009/10/29/how-to-fix-the-application-cannot-start-error.aspx
Silverlight, XNA, 和Compact Framework
手機上使用的什麼版本的Silverlight?
手機上的Silverlight版本是一個很接近案頭上的Silverlight 3的子集。這裡也有一些Silverlight 3上並沒有的針對手機的特殊功能。但是許多在案頭版的Silverlight 3上正常啟動並執行程式也能夠在手機上正常運行。
我可以在Silverlight裡面調用XNA的庫嗎?
Silverlight和XNA使用同一個Compact Framework上的基礎代碼。如果這個調用沒有圖形化使用者介面互動,多數情況下他們可以在Silverlight和XNA之間共用。