我面臨着Camera API的嚴重問題,即使我知道在99.99%的情況下,框架不是責任,我開始考慮在那裏可能是相機在Windows Phone中處理的方式的問題。WinPhone8 Camera API似乎在處理通話後繼續運行
的問題
我的代碼是微不足道的,只有兩個非常簡單的頁面:第一個是用於導航到第二個,它使用相機API,並呈現在屏幕上預覽緩衝區的按鈕。在第一頁上,我還添加了一個帶有循環動畫的矩形來旋轉它,以強制應用程序更新幀速率。
輪廓會議的結果如下:
只要我留在第一頁上,幀率計數器顯示一個堅如磐石的60fps。一旦我啓動了相機的第二頁,由於使用了系統相機,fps會下降。但是,當我按下後退鍵時,相機正確放置,但幀速率稍低(〜53 fps)。 更令人印象深刻的是,圖表數據顯示,某些東西仍在運行並且損害了perfs!內置分析告訴我,系統應用程序使用47%的CPU,與顯示相機頁面時相同!
此行爲是否有已知的原因?
我的代碼
我的代碼隱藏第二頁:
public partial class MyScannerView : PhoneApplicationPage {
private PhotoCamera camera;
public MyScannerView() {
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e) {
base.OnNavigatedTo(e);
camera = new PhotoCamera(CameraType.Primary);
viewfinderBrush.SetSource(camera);
}
protected override void OnNavigatedFrom(NavigationEventArgs e) {
base.OnNavigatedFrom(e);
if (camera != null) {
camera.Dispose();
camera = null;
}
}
}
我的第二頁XAML:
<Canvas x:Name="viewfinderCanvas">
<Canvas.Background>
<VideoBrush x:Name="viewfinderBrush">
<VideoBrush.RelativeTransform>
<CompositeTransform x:Name="viewfinderTransform" CenterX="0.5" CenterY="0.5" />
</VideoBrush.RelativeTransform>
</VideoBrush>
</Canvas.Background>
</Canvas>
你知道嗎?你可以得到更多關於什麼運行的細節?如果深入瞭解性能分析器,可以看到哪個函數調用佔用了一定比例的CPU時間。也許它會幫助你識別正在運行的東西。 – Haspemulator 2013-02-18 11:29:09
確實。但是,UI線程只佔CPU的4.6%,這並不奇怪,因爲代碼非常基礎。有些框架需要花費大量的時間來繪製,但我只能說「System.Windows.dll:ManagedFunction_0(...)」似乎是罪魁禍首。有些東西正在後臺運行,但這就是我所能說的。 – 2013-02-18 13:28:54
順便說一句,有沒有某種WinPhone官方錯誤跟蹤器 – 2013-02-18 13:32:33