WP7 - проблема производительности и памяти - PullRequest
1 голос
/ 30 июля 2011

У меня есть приложение и проблемы с памятью. Каждый раз, когда я перемещаюсь между страницами, использование памяти увеличивается.

Мое приложение состоит из трех страниц:

  • MainPage Panaroma страница с 1 меню + 3 динамическими (чтение каналов) предметы панарома
  • HistoryPage еще Panaroma Страница (3panaroma предметов) со статическим Текстовые блоки и 2-3 изображения по 15 КБ
  • AboutPage Статический Pivot (2 элемента) Страница с текстовыми блоками и 1 15kb изображение.

Ситуация 1:

  • При загрузке приложения требуется 37 МБ памяти.

  • Затем я перехожу на страницу «История» и возвращаюсь на главную страницу. Использование памяти увеличивается до 89 МБ.

  • Затем я снова перехожу на страницу истории и возвращаюсь, теперь она становится 109mb. Каждый раз, когда я перемещаюсь в использовании памяти все больше.

Ситуация 2:

  • При загрузке приложения требуется 37 МБ памяти.

  • Затем я перехожу на страницу «О программе» и возвращаюсь на главную страницу. Использование памяти увеличивается до 54 МБ.

  • Затем я перехожу на страницу истории и возвращаюсь, теперь она становится 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 Ответ

1 голос
/ 30 июля 2011

Дикая догадка (не видя ваш код), вы генерируете (динамические) элементы панорамы каждый раз, когда обновляете главную страницу, вызывая дополнительную нагрузку.

В основном:

  • 1-е отображение главной страницы: 3 элемента динамической панорамы.
  • 2-е отображение главной страницы: 6 элементов динамической панорамы.
  • 3-е отображение главной страницы: 9 элементов динамической панорамы.
  • ...
...