WP7 - 性能和内存问题

时间:2011-07-30 11:33:58

标签: c# bing-maps windows-phone

我有一个应用程序并且有内存问题。每当我在页面之间导航时,内存使用量就会增加。

我的申请包括三页:

  • MainPage Panaroma 页面,包含1个菜单+ 3个动态(阅读Feed) panaroma项目
  • 历史页面另一个 Panaroma 页面(3panaroma项目)带静态 文本块和2-3个15kb图像
  • 关于页面静态数据透视(2项)带有文本块和1个15kb的页面 图像。

情况1:

  • 加载应用程序时需要37mb内存。

  • 然后,我导航到历史记录页面并返回主页面内存使用量增加到89mb。

  • 然后我再次导航到历史页面,现在回来它变成了109mb。每次我导航内存使用都会产生影响。

情况2:

  • 加载应用程序时需要37mb内存。

  • 然后,我导航到关于页面并返回主页内存使用量增加到54mb。

  • 然后我导航到历史页面,现在回来它变成94mb。

导致此问题的原因是什么?这些内容是静态文本,我不使用任何隔离存储,墓碑或任何东西。当用户从页面导航时,如何使其删除缓存。

谢谢你的到来。请记住,对不起,我真的很喜欢这样的编码。

MainPage.xaml.cs中的导航按钮

private void Button_Click(object sender, EventArgs e)
{
    NavigationService.Navigate(new Uri("/HistoryPage.xaml", UriKind.Relative));
}

HistoryPage.xaml

        

        <controls:Panorama.Background>
            <ImageBrush Stretch="Fill" ImageSource="backgrounds/PanoramaBackground.jpg"  />
        </controls:Panorama.Background>

        <!--Panorama item one-->
        <controls:PanoramaItem CacheMode="BitmapCache">
            <ScrollViewer x:Name="hede" Margin="12,0,12,0" Grid.Row="1" Width="432" >
                <StackPanel Width="432">
                    <Image Height="220" Name="image1" HorizontalAlignment="Left" Stretch="Fill" Source="images/logo.png" Width="172" Margin="0,30,0,0" />
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
    </StackPanel>
            </ScrollViewer>
        </controls:PanoramaItem>

        <!--Panorama item two-->
        <controls:PanoramaItem Header="history" CacheMode="BitmapCache">
            <ScrollViewer>
                <StackPanel>
                    <Image x:Name="tarih" Source="images/history.jpg" Stretch="Fill" Width="380" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
    </StackPanel>
            </ScrollViewer>
        </controls:PanoramaItem>

        <!--Panorama item three-->
        <controls:PanoramaItem Header="achievements" CacheMode="BitmapCache">
            <ScrollViewer>
                <StackPanel>
                    <TextBlock ....
    </StackPanel>
            </ScrollViewer>
        </controls:PanoramaItem>

        <!--Panorama item three-->
        <controls:PanoramaItem Header="contact" CacheMode="BitmapCache">
            <StackPanel>
                <my:Map x:Name="stad" Grid.Row="1"
                        CredentialsProvider=.....
                        LogoVisibility="Collapsed" ScaleVisibility="Visible"
                        Center=..... ZoomLevel="15"
                        CopyrightVisibility="Collapsed" ZoomBarVisibility="Visible" Width="380" HorizontalAlignment="Center">
                    <my:Pushpin Location="....." Content="....."></my:Pushpin>
                </my:Map>
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
                    <TextBlock ....
    </StackPanel>
        </controls:PanoramaItem>
    </controls:Panorama>
</Grid>

HistoryPage.xaml.cs

public partial class HistoryPage: PhoneApplicationPage
{
    public HistoryPage()
    {
        InitializeComponent();
    }
}

1 个答案:

答案 0 :(得分:1)

疯狂猜测(没有看到你的代码),你每次刷新主页时都会生成(动态)全景项目,从而导致额外的负载。

基本上:

  • 主页的第一个显示:3个动态全景项目。
  • 主页的第二次显示:6个动态全景项目。
  • 主页的第3次显示:9个动态全景项目。
  • ...