내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 단말기 상태

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

DeviceStatus 클래스를 사용하여 장치의 총 메모리, 장치의 하드웨어 버전 및 실제 키보드를 배치했는지 여부 등의 장치 상태 정보를 확인할 수 있습니다. 또한 특정 속성이 변경되었을 때 앱에 알려주는 몇 가지 이벤트를 등록할 수 있습니다.

Windows Phone OS 7.0 에서는 단말기별 속성을 쿼리하는 데 DeviceExtendedProperties 클래스를 사용했습니다. 모든 최신 버전에서는 DeviceExtendedProperties 클래스가 더 이상 사용되지 않으므로 대신 새로운 DeviceStatus 클래스를 사용해야 합니다. 그러나 필요한 경우 아직 사라지지 않은 DeviceExtendedProperties의 속성을 사용할 수 있습니다.

중요중요:

장치 상태 샘플을 참조하거나 Windows Phone 8의 DeviceStatus 클래스를 사용하는 방법에서 이 클래스 사용 방법에 대한 코드 샘플을 참조하세요.

이 항목에는 다음 단원이 포함되어 있습니다.

 

  • 일반 단말기 정보

    DeviceStatus 속성을 쿼리하여 총 메모리, 하드웨어 버전 및 장치 제조업체 이름 등의 장치 정보를 받을 수 있습니다.

  • 잠금 화면 외부에서 실행되는 앱

    여행자가 날짜와 시간을 표시하는 데 사용하는 단순한 알람 시계 앱과 같은 특정 유형의 앱은 잠금 화면 밖에서 실행되어 편리합니다. 사용자에게 권한을 요청해 PowerSource API 및 PowerSourceChanged 이벤트를 사용하여 휴대폰이 외부 전원에 꽂혀 있는지 알 수 있습니다.

  • 키보드 가용성

    하드웨어 키보드를 사용할 수 있는지에 따라 앱이 가로 또는 세로 모드를 지원하도록 선택할 수 있습니다. 이러한 앱 및 다른 앱에 대해 IsKeyboardPresent 속성, IsKeyboardDeployed 속성 및 KeyboardDeployedChanged 이벤트를 사용할 수 있습니다.

  • 메모리 사용량 모니터링

    앱을 개발할 때 ApplicationCurrentMemoryUsageApplicationPeakMemoryUsage 속성을 사용하여 메모리 사용량을 모니터링하고, DeviceTotalMemoryApplicationMemoryUsageLimit 속성을 사용하여 장치 및 앱 메모리 제한을 확인할 수 있습니다. 앱의 메모리 사용량을 아주 자주 확인할 필요는 없습니다. 최대 메모리 사용량도 경우에 따라 확인하면 됩니다. Windows Phone을 위한 기술 인증 요구 사항의 섹션 5.2에 설명된 것처럼 최대 메모리 사용량이 허용되는 임계값을 초과할 경우, 메모리 사용량을 보다 면밀하게 모니터링하도록 선택해 문제를 진단할 수 있습니다.

    앱이 메모리를 많이 소비하는 경우에는 페이지 및 사용자 컨트롤 같은 앱의 주요 개체 인스턴스의 수를 추적하세요. 종료되지 않은 인스턴스가 예상보다 많이 있으면 이러한 인스턴스가 해제되지 않는 이유를 조사해야 합니다.

  • 앱은 사용자에게 원시 장치 상태 정보를 제공하거나, 장치에 대한 장치 상태 정보를 동적으로 구문 분석하거나 처리하려고 하지 않아야 합니다. 권장되는 DeviceStatus API 사용 방법은 원시 장치 상태 정보를 웹 서비스에 전송하여 통계 또는 사용량 데이터를 생성하는 것입니다. 또한 DeviceName 속성을 사용해 장치를 식별하여 이 장치에 관련된 알려진 버그를 줄일 수도 있습니다.

다음 예제에서는 앱의 메모리 사용량을 모니터링하는 한 가지 방법을 보여 줍니다. 여기서는 앱의 메모리 사용량을 10초 간격으로 표시하도록 타이머를 설정합니다.

public partial class MainPage : PhoneApplicationPage
    {
        DispatcherTimer timer;

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0,0,10);
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }

        void timer_Tick(object sender, EventArgs e)
        {
            try
            {
                // These are TextBlock controls that are created in the page’s XAML file.      
                MemoryTextBlock.Text = Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage.ToString();
                PeakMemoryTextBlock.Text = Microsoft.Phone.Info.DeviceStatus.ApplicationPeakMemoryUsage.ToString();
            }
            catch (Exception ex)
            {
                MemoryTextBlock.Text = ex.Message;
            }
        }
    }

표시:
© 2014 Microsoft