0

파노라마 페이지가있는 Windows Phone 7.1 응용 프로그램을 개발하고 있습니다.파노라마 페이지로 처음 이동하면로드하는 데 너무 오래 걸림

이 파노라마 페이지에는 두 개의 파노라마 블록 항목이 있으며 여기에는 두 개의 텍스트 블록이 있고 다른 한 페이지에는 빙지도 컨트롤이 있습니다. 또한 파노라마 컨트롤 배경으로 1,5MB 이미지를 설정했습니다. 내가 파노라마 페이지 내가 보여 너무 오래 도착, 나는 다시 버튼을 누르고 내가 다시 온다면, 더 빨리로드로 이동

<phone:PhoneApplicationPage 
    x:Class="XxXClass.DemoDetail" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="False" Foreground="{x:Null}" xmlns:my="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"> 
    <toolkit:TransitionService.NavigationInTransition> 
     <toolkit:NavigationInTransition> 
      <toolkit:NavigationInTransition.Backward> 
       <toolkit:TurnstileTransition Mode="BackwardIn"/> 
      </toolkit:NavigationInTransition.Backward> 
      <toolkit:NavigationInTransition.Forward> 
       <toolkit:TurnstileTransition Mode="ForwardIn"/> 
      </toolkit:NavigationInTransition.Forward> 
     </toolkit:NavigationInTransition> 
    </toolkit:TransitionService.NavigationInTransition> 
    <toolkit:TransitionService.NavigationOutTransition> 
     <toolkit:NavigationOutTransition> 
      <toolkit:NavigationOutTransition.Backward> 
       <toolkit:TurnstileTransition Mode="BackwardOut"/> 
      </toolkit:NavigationOutTransition.Backward> 
      <toolkit:NavigationOutTransition.Forward> 
       <toolkit:TurnstileTransition Mode="ForwardOut"/> 
      </toolkit:NavigationOutTransition.Forward> 
     </toolkit:NavigationOutTransition> 
    </toolkit:TransitionService.NavigationOutTransition> 
    <!--LayoutRoot contains the root grid where all other page content is placed--> 
    <Grid x:Name="LayoutRoot"> 
     <controls:Panorama Title="Demonstation Tracker"> 
      <controls:Panorama.Background> 
       <ImageBrush Stretch="Fill" ImageSource="/Images/demonstrationPanorama.png"/> 
      </controls:Panorama.Background> 

      <!--Panorama item one--> 
      <controls:PanoramaItem Header="Details"> 
       <Grid Background="#73000000" Margin="0,0,0,26"> 
        <TextBlock Height="42" Margin="8,8,174,0" TextWrapping="Wrap" Text="XXXX" VerticalAlignment="Top" FontSize="{StaticResource PhoneFontSizeLarge}"/> 
        <TextBlock Margin="8,54,8,8" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Height="413" Width="381" FontSize="{StaticResource PhoneFontSizeMedium}"><Run Text="xxx."/><Run Text=".."/></TextBlock> 
       </Grid> 
      </controls:PanoramaItem> 

      <!--Panorama item two--> 
      <controls:PanoramaItem Header="Map"> 
       <Grid> 
        <my:Map Name="map1" Margin="0,0,0,26" Height="420" Width="420" /> 
       </Grid> 
      </controls:PanoramaItem> 
     </controls:Panorama> 
    </Grid> 

    <!--Panorama-based applications should not show an ApplicationBar--> 

</phone:PhoneApplicationPage> 

처음 :

파노라마의 XAML입니다.

파노라마의 페이지로드 속도를 높이려면 어떻게해야합니까?

답변

0

지도 제어. 그지도 컨트롤에 문제가 있다고 확신합니다. 저는 항상 백그라운드 스레드에서 데이터를 초기화합니다. 그런 다음 데이터 준비가되면 BeginInvoke 및 다시 그리기 UI를 만듭니다. 그리고 1.5 MB는 너무 크고, 줄여야합니다.

+0

답변 해 주셔서 감사합니다. 363Kb이고 파노라마 페이지를로드하는 데 2 ​​~ 3 초가 걸립니다. 그리고지도 컨트롤에 댓글을 달면로드 속도가 빨라집니다. – VansFannel

+0

기본적으로지도에 visibility.collapse를 설정 한 다음 put visibility = visible 후에 백그라운드 스레드에서 데이터를 가져옵니다. 잊지 마세요. Ogg U는 Pageloaded 이벤트에 대한 맵을 초기화 할 수 있습니다. – Vovich

+0

Windows Phone에서 Pageloaded 이벤트가 종료되지 않습니다. – VansFannel

3

1.5Mb가 너무 큽니다. 런타임에 이미지는 압축 해제되어 메모리에 저장됩니다. 이미 메모리에 있기 때문에 두 번째로 빠릅니다. 256Mb 램을 사용하는 기기를 타겟팅하는 경우 메모리 사용량을 줄여야합니다.

다음을 시도해보십시오

  • 을 사용하여 압축 된 JPEG를. 파일 크기를 최소화하십시오.
  • 배경 이미지는 좋은 성능, 최소로드 시간 및 조정이 없도록 480x800 픽셀과 1024x800 픽셀 (너비 x 높이) 사이 여야합니다.
  • 배경 이미지는 리소스 여야합니다.
  • 안 툴킷 애니메이션
  • 제한을 나는 또한이 아닌 슬라이드 실행 페이지에 빙지도를 이동이라고 생각하기 때문에 유용성의 4

에 PanoramaItems.

+0

배경 이미지 리소스를 만드는 것이 더 좋은 이유는 무엇입니까? –

+0

파노라마를 사용하는 경우 리소스 배경이 콘텐츠와 비교하여 즉시로드됩니다. 이는 응용 프로그램이 시작될 때 이미지가 메모리에로드되기 때문입니다. 분명히 시작 시간에 영향을 줄 것입니다. –

+0

이제 이미지는 363Kb이고로드하는 데 너무 길어집니다. 지도 컨트롤을 제거하면 제대로로드됩니다. 'Panorama_SelectionChanged' 이벤트에지도를로드하면 (두 번째 파노라마 항목으로 이동하면 여전히 두 번째 또는 두 번째 UI가 정지됩니다.)이 문제를 피하기 위해 Android의 'AsyncTask'와 비슷한 것이 있습니까? – VansFannel