為記憶體為256MB的Windows Phone設備開發應用
全球最大移動通信展Mobile World Congress 2012上,微軟和OEM合作夥伴宣佈支持更多的硬體設定。手機記憶體在主流512MB的基礎上,拓展到256MB,從而使更廣泛的用戶群體驗Windows Phone。
開發者要想更廣泛的分發自己的應用程式,首先需要確定應用程式佔用記憶體大小,並進而優化應用程式以便在256MB或更小記憶體的設備中正常運行。要為小記憶體設備開發應用程式,需要安裝Windows Phone SDK 7.1.1 Update,該SDK版本包含針對256MB手機開發的一些特性。使用Windows Phone SDK 7.1.1 Update,開發者可以在代碼層面檢測你的應用程式是否能運行在256MB設備上,如果必要的話會禁用應用程式中的部分功能,以便應用程式能供所有手機使用。另外,使用這個版本的SDK提供了256MB版本的Windows Phone模擬器測試應用程式。最後,如果你的應用程式在256MB設備上無法正常運行,可以修改應用程式清單檔在Marketplace中聲明不支援這類小記憶體設備本文描述Windows Phone SDK 7.1.1Update中的新特性,以及Windows Phone OS 7.1在256MB真機上不支援或有限支援的功能。
本文包含以下部分。
l 安裝Windows Phone SDK 7.1.1 Update
l 檢查特定設備的應用程式記憶體限制
l 256MB設備的專有特性注意事項
l 支援多種設備類型的應用程式和遊戲的測試和調試
l 使用應用程式配置清單選擇不支援256MB設備類型
u安裝Windows Phone SDK 7.1.1 Update
為了調試在256MB設備上運行的應用程式和遊戲,開發者應該安裝Windows Phone SDK 7.1.1 Update。安裝Windows Phone SDK 7.1.1 Update的必要條件是必須先安裝Windows Phone SDK 7.1。如果你需要安裝Windows Phone SDK 7.1,請參閱安裝Windows Phone SDK。然後從下載中心安裝Windows Phone SDK 7.1.1 Update。
u檢查設備的應用程式記憶體限制
使用Windows Phone SDK 7.1.1 Update,開發者可以在運行你的應用程式的設備中即時檢測記憶體工作集限制。如果你知道你的應用程式的某些功能不支援或者記憶體消耗較大,,就可以禁用應用程式的這部分功能。你可以調用GetValue(String)方法,傳遞ApplicationWorkingSetLimit給propertyName參數。以下代碼演示了如何完成該操作。
// Place call in a try block in case the user is not running the most recent version of the Windows Phone OS and this method call is not supported.
try
{
long result =
(long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
}
catch (ArgumentOutOfRangeException) {// The device has not received the OS update, which means the device is a 512-MB device.}
如果是一個256MB記憶體的設備,GetValue(String)方法返回一個小於90MB(94371840 Byte)的long型的值。如果設備的記憶體是256MB,那麼你的應用程式使用的記憶體不能超過90MB。為了適應這個記憶體的限制,開發者需要在應用程式中避免使用某些功能,例如頁面跳轉的動畫。如果你使用這些特定的功能,請確保在提交到Marketplace之前測試你的應用程式的記憶體使用情況,尤其是那些使用大量多媒體資源的應用程式和遊戲。
注意:
某些對GetValue()的調用需要設備身份能力:ID_CAP_IDENTITY_DEVICE。如果你在應用程式中使用C:Microsoft.Phone.Info.DeviceExtendedProperties類,該能力會預設被添加到程式中。然而如果你使用ApplicationWorkingSetLimit參數調用GetValue()方法,你可以在應用程式整合從應用程式配置清單中刪除設備身份能力,這樣它就不會在後臺整合到應用程式中了。更多資訊,請參見如何檢測應用程式的能力。
u256MB設備的專有特性注意事項
你可以在256MB設備上使用Windows Phone OS 7.1提供的大多數功能而不必擔心性能問題。然而,256MB的設備不支援通用後臺代理,還有一些附加的功能也需要謹慎使用,以免超過應用程式的記憶體限制。
避免通用後臺代理
256MB的設備上唯一不支援的功能就是通用後臺代理。下列代理是不支援的:
l 資源密集型任務
l 週期性任務
當你在應用程式中使用Add(ScheduledAction)方法並傳遞一個PeriodicTask或ResourceIntensiveTask添加到後臺代理中時,無論在256MB的設備或者256MB的模擬器上,觸發一個InvalidOperationException異常,這表明已經達到了設備後臺代理的最大值。
如果你在應用程式中使用一個背景代理,而且希望您的應用程式能夠運行在所有類型的設備上,那麼你應該檢查設備的工作記憶體,並在256MB的設備上不使用後臺代理。例如,如果你使用一個PeriodicTask控制項來為應用程式來更新活動磁貼,那麼在256MB的設備上你應該禁用活動磁貼更新,而只提供靜態磁貼。有一個例子演示了如何檢查該值和如何禁用應用程式中的某些功能,請參閱如何:在256MB的設備上禁用應用程式的某些功能。
減少圖形和音訊的記憶體使用
在開發針對256MB記憶體手機上運行的應用程式和遊戲的時侯,開發者應該在遊戲或應用程式中謹慎使用圖形。圖形和音訊記憶體往往是不分頁的。過多的音訊或圖像資源、紋理和動畫可能會超過256MB設備的記憶體限制。使用 XNA®Framework構建的遊戲,非常典型地使用大量圖形和音訊,這需要特別注意。如果您的應用程式或遊戲超過了運行它們的設備的記憶體上限,OutofMemoryException異常就會觸發並且應用程式也將意外退出。
如果圖形記憶體使用接近於設備的工作集上限,您應該試圖優化應用程式的性能以便它能在256MB的設備上運行。關於在你的遊戲或應用程式中減少記憶體使用的詳細技術的更多資訊,請參閱改善XNA遊戲的記憶體使用。
降低記憶體使用的其他注意事項
以下是開發一個在256MB設備上運行的應用程式的其他注意事項清單。
l 如果可能的話使用啟動器和選擇器。如果你在應用程式中使用WebBrowser控制項,Windows Phone版本的Bing MapsSilverlight控制項,或者照相機,請務必測試您的應用程式使用多少記憶體,記憶應用程式在256MB的Windows Phone模擬器上是否能流暢運行。為了減少應用程式佔用的記憶體,您應該使用這些控制項對應的啟動器和選擇器。關於在Windows Phone上使用啟動器的更多資訊,請參閱Windows Phone 的啟動器和Windows Phone的選擇器。
l 避免長清單的資料,如果使用它們,請確保它們是分頁的。每次載入需要的資料。
l 避免帶圖像的複雜的Item範本
l 在頁面跳轉上避免複雜的動畫效果。包括在Windows Phone Silverlight Toolkit中包含了的跳轉效果。如果你使用跳轉效果,確保你的應用程式保持回應,並測試你的應用程式在頁面跳轉期間的記憶體使用情況。
l 注意如果在運行一個應用程式時使用者改變了手機的方向,應用程式使用的記憶體可能達到峰值。你也應該在方向改變的情況下測試應用程式,如果您的應用程式經常超過90MB記憶體的上限,那就選擇不支援256MB記憶體的設備。
u支援多種所有記憶體大小的手機設備類型的應用程式和遊戲的測試和調試
使用Windows Phone SDK 7.1.1Update,你可以在256MB的Windows Phone模擬器上運行你的應用程式。在安裝完Windows Phone SDK7.1.1Update之後,你可以在標準工具列上的以下選項中選擇:
l Windows Phone設備
l Windows Phone 模擬器—512MB
l Windows Phone 模擬器—256MB
如果沒有設備,你可以使用256MB的模擬器來幫助確定在256MB的設備上你的應用程式或遊戲的回應速度和性能。
你也可以使用Windows Phone SDK 7.1中就包含的工具來估計記憶體的使用情況以及優化應用程式的性能。你可以使用Windows PhoneMarketplace Test Kit來估計應用程式使用的所有記憶體。關於Windows PhoneMarketplace Test Kit的更多資訊,請參閱MSDN上的Windows Phone Marketplace Test Kit。使用Windows Perfomance Analysis Tool來查看記憶體的使用情況以及優化應用程式的性能。更多資訊,請參閱Windows Phone Performance Analysis。
u使用應用程式配置清單選擇不支援256MB設備類型
如果你測試應用程式,確定它不滿足256MB設備的記憶體要求,你必須在應用程式配置清單裡標明。如果你不這樣做的話,使用256MB設備的使用者會下載並安裝你的應用程式。即使它能在較高記憶體的設備上運行良好,這也可能會導致應用程式的差評。如果選擇開發的應用程式不支援256MB的設備,請在配置清單上添加一部分說明你的應用程式需要90MB的記憶體。在市場接收的過程中,配置清單的這部分不會被去掉。若要在配置清單上添加90MB記憶體的需求,請按以下步驟操作:
1. 在WMAppManifest.xml檔中Capabilities之後添加Requirements 部分。
2. 在Requirements 部分添加一個Requirement 元素。為Requirement元素添加一指定的Name屬性,設置其值為ID_REQ_MEMORY_90。
以下代碼演示了如何完成該操作:
</Capabilities>
<Requirements>
<Requirement Name="ID_REQ_MEMORY_90" />
</Requirements>
注意:
Visual Studio不會根據該需求阻止你將應用程式部署到256MB的模擬器或256MB的設備上。該需求僅防止Marketplace將您的應用程式展示給使用256MB設備的使用者。
沒有留言:
張貼留言