locked
[Windows Phone 7] Application Life Cycle 이해를 위한 예제(2)를 구현하여 실행합니다 RRS feed

  • 질문

  • Application Life Cycle 이해를 위한 예제(2)를 구현하여 실행합니다

    2012년 4월 5일 목요일 오후 12:49
    중재자

답변

  •  

    Application Life Cycle 이해를 위한 예제(2)입니다

    글과 이미지로 Application LifeCycle 대해서 설명글이 많이 올라와 있으나 예제를 실행해보시면 가장 쉽게 이해가 됩니다.

    앞서 애플리케이션 라이프 사이클의 상태에 대한 이벤트 발생 시점을 확인해 보았다면 이번 예제에서는 애플리케이션이 비활성화 되었다가 다시 활성화 되는 과정에서 상태 값을 저장했다가 다시 복원하는 방법을 보여드리겠습니다.

    그러기 위해선 어플리케이션을 실행 TextBox 입력 어플리케이션을 비활성화 시키기 위해 서치 버튼을 눌렀다가 다시 돌아오는 과정입니다.

    Step1>  TextBox Windows Phone 7 대해서 적고 싶은 내용을 적습니다.

    • “Windows Phone 7 (MSDN&TechNet)” 라고 적겠습니다.
    • [구현단]  
      1. 도구 툴로부터 TextBox 드래그해서 애뮬레이터에 놓습니다.

                  <TextBox Height="245"

                           HorizontalAlignment="Left"

                           Margin="45,101,0,0"

                           x:Name="ContentTextBox"

                           Text=""

                           VerticalAlignment="Top"

                           Width="360" />

                2. MainPage.xaml.cs 에 아래와 같이 구현

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Net;

    using System.Windows;

    using System.Windows.Controls;

    using System.Windows.Documents;

    using System.Windows.Input;

    using System.Windows.Media;

    using System.Windows.Media.Animation;

    using System.Windows.Shapes;

    using Microsoft.Phone.Controls;

    using Microsoft.Phone.Shell;

    namespace WindowsPhone7App

    {

        public partial class MainPage : PhoneApplicationPage

        {

            #region Constants

            private const string ContentKey = "Content";

            #endregion Constants

            #region Constructors

            // Constructor

            public MainPage()

            {

                InitializeComponent();

                LinkEvents();

            }

            #endregion Constructors;

            #region Methods

            private void LinkEvents()

            {

                PhoneApplicationService.Current.Activated += new

                System.EventHandler<ActivatedEventArgs>(Current_Activated);

                PhoneApplicationService.Current.Deactivated += new

                System.EventHandler<DeactivatedEventArgs>(Current_Deactivated);

            }

            #endregion Methods

            #region EventHandlers

            void Current_Activated(object sender, ActivatedEventArgs e)

            {

                // Tomstoned 상태에서 왔다면 State에서 값을 가져와서 복원시켜줘야 합니다.

                if (e.IsApplicationInstancePreserved == false)

                {

                    // ContentKey 저장된 값이 없다면 돌아갑니다.

                    if (PhoneApplicationService.Current.State.ContainsKey(ContentKey) == false)

                        return;

                    // State 저장되어 있던 값을 이요해서 복원합니다.

                    ContentTextBox.Text = (string)PhoneApplicationService.Current.State[ContentKey];

                }

            }

            void Current_Deactivated(object sender, DeactivatedEventArgs e)

            {

                // 기존에 ContentKey값을 키로 이용하는 값이 State Dictionary 저장되어 있지 않다면 새로 하나 만들어 줍니다.

                if (PhoneApplicationService.Current.State.ContainsKey(ContentKey) == false)

                {

                    PhoneApplicationService.Current.State.Add(ContentKey,ContentTextBox.Text);

                }

                else

                {

                    PhoneApplicationService.Current.State[ContentKey] = ContentTextBox;

                }

            }

            #endregion EventHandlers

        }       

    }

       

    Step2>  이때 어플리케이션이 아닌 검색버튼을 누르고 어플리케이션이 잠기면서 비활성화된  Bing (조회)페이지가 보여집니다.

    Step3>  다시 돌아가기 버튼을 클릭합니다.

    • TextBox “Windows Phone 7(MSDN&TechNet)” 적혀있는것을 확인 하실수 있습니다.

    코드 작성 어려운 부분이 있으시거나 질문있으시면 포럼에 문의 드려주시기 바랍니다.

    해당 소스가 필요하신분은 답변에 이메일 주소를 남겨주시면 소스를 보내드리도록 하겠습니다.

    [참조자료]

    [Windows Phone 7] Application Life Cycle 이해를 위한 예제(1) 구현하여 실행합니다.

    [Windows Phone 7] Page 이동하는 구현예제- NavigationService이용편

    [Windows Phone 7] Page 이동하는 구현예제- HyperLinkButton이용편

    2012년 4월 5일 목요일 오후 12:58
    중재자