2

WP7 プラットフォームによる自動画像キャッシュでひどい時間を過ごしています。

私は非常にシンプルなアプリを作成しました (つまり、本当にシンプルです)。pix ディメンション 1280 x 2000 のコンテンツとして、ソリューションに既に 2 つの画像が追加されていますXAML は次のとおりです。

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationCompleted="ImageHolder_ManipulationCompleted">
    <Image x:Name="ImageHolder" />
    <TextBlock x:Name="MemoryUsage" />
</Grid>

私の .cs

   ImageHolder.Source = null;
        if (i % 2 == 0)
            ImageHolder.Source = new BitmapImage(new Uri("image002.jpg", UriKind.Relative));
        else
            ImageHolder.Source = new BitmapImage(new Uri("image001.jpg", UriKind.Relative));
        i++;

   MemoryUsage.Text = "Device Total Memory = " + (long)DeviceExtendedProperties.GetValue("DeviceTotalMemory") / (1024 * 1024)
            + "\nCurrent Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage") / (1024 * 1024)
            + "\nPeak Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage") / (1024 * 1024);

メモリ使用量が非常に高く、未加工のビットマップ サイズで 2 つの画像に相当しますが、そのようなインスタンスは 1 つしか存在しないはずです。助けてください、私は切実に必要です。

4

1 に答える 1

1

まず、画像のサイズを正しいサイズに変更します。画面がサポートしていない場合、そのような高解像度を使用しても意味がありません。また、イメージのビルド アクションが「コンテンツ」であることを確認してください。そうしないと、起動時にすべてのイメージがメモリにロードされます。GC がイメージをすぐに破棄するという保証がないため、メモリ使用量が依然として高い場合がありますが、遅かれ早かれ破棄されます。

于 2012-11-17T11:13:43.267 に答える