[Windows Phone 7] Application Life Cycle 이해를 위한 예제(2)를 구현하여 실행합니다
잠김
-
2012년 4월 5일 목요일 오후 12:49중재자
Application Life Cycle 이해를 위한 예제(2)를 구현하여 실행합니다
모든 응답
-
2012년 4월 5일 목요일 오후 12:58중재자
Application Life Cycle 을 이해를 위한 예제(2)입니다
글과 이미지로 Application LifeCycle에 대해서 설명글이 많이 올라와 있으나 예제를 실행해보시면 가장 쉽게 이해가 됩니다.
앞서 애플리케이션 라이프 사이클의 각 상태에 대한 이벤트 발생 시점을 확인해 보았다면 이번 예제에서는 애플리케이션이 비활성화 되었다가 다시 활성화 되는 과정에서 상태 값을 저장했다가 다시 복원하는 방법을 보여드리겠습니다.
그러기 위해선 어플리케이션을 실행 후 TextBox에 입력 후 어플리케이션을 비활성화 시키기 위해 서치 버튼을 눌렀다가 다시 돌아오는 과정입니다.
Step1> TextBox에 Windows Phone 7 에 대해서 적고 싶은 내용을 적습니다.
- “Windows Phone 7 (MSDN&TechNet)” 라고 적겠습니다.
- [구현단]
- 도구 툴로부터 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이용편
- 답변으로 표시됨 Jina LeeModerator 2012년 4월 18일 수요일 오전 1:48

