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

Windows Phone 8 저메모리 휴대폰용 앱 개발

2014-06-18

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

 

가장 광범위한 앱 배포를 위해 앱에서 사용하는 메모리 양을 확인한 다음 메모리 양이 더 적은 장치에서도 성능이 뛰어나도록 앱을 조정합니다.

  • Windows Phone 8 의 경우 메모리 양이 512MB인 휴대폰을 의미합니다.

  • Windows Phone OS 7.1 의 경우 메모리 양이 256MB인 휴대폰을 의미합니다.

Windows Phone SDK 8.0 을 사용하여 Windows Phone 에뮬레이터 256MB 또는 512MB 버전에서 앱을 테스트할 수 있습니다. Windows Phone SDK 7.1.1 업데이트 이상 버전의 도구를 사용하면 앱이 저메모리 단말기 에서 실행 중인지 여부를 코드에서 검색한 다음 필요한 경우 앱의 일부 기능을 사용하지 않도록 설정하여 앱의 가능한 목표 시장을 최대화할 수 있습니다. 마지막으로, 앱이 저메모리 단말기 에서 제대로 작동하지 않는 경우 앱 매니페스트 파일을 적절하게 변경하여 Windows Phone 스토어 에서 이 휴대폰 카테고리를 옵트아웃할 수 있습니다.

이 항목에서는 휴대폰의 메모리를 검사하는 방법에 대해 설명합니다. Windows Phone OS 7.1 에서 지원되지 않거나 지원이 제한된 저메모리 단말기 의 기능에 대해서도 설명합니다.

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

 

Windows Phone SDK 8.0 또는 Windows Phone SDK 7.1.1 업데이트 을 사용하면 앱을 호스트하는 장치의 메모리 작업 집합 제한을 확인한 다음 지원되지 않거나 메모리를 많이 사용하는 앱의 일부 기능을 사용하지 않도록 설정할 수 있습니다. 메모리 작업 집합 제한을 확인하려면 GetValue(String) 메서드를 호출하고 propertyName 매개 변수에 대해 ApplicationWorkingSetLimit을 전달합니다. 다음 코드에서는 이 작업을 수행하는 방법을 보여 줍니다.

// Place call in a try block in case the user
// is not running a version of the Windows Phone OS
// that supports this method call.

try
    {
      long result =  
        (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
    }

catch (ArgumentOutOfRangeException)
    {
      // The device does not support querying for this value. This occurs
      // on Windows Phone OS 7.1 and older phones without OS updates.
    }

다음 표에서는 OS 버전에 따라 휴대폰이 저메모리 단말기 인 경우 GetValue(String) 메서드에서 반환되는 값을 보여 줍니다.

OS 버전

앱 작업 세트 제한

Windows Phone 8 기본 제한

150 MB(157286400)

Windows Phone 8 상한

180 MB(188743680)

Windows Phone OS 7.1 

90MB(94371840)

Windows Phone 8 의 메모리 제한에 대한 자세한 내용은 Windows Phone 8의 앱 메모리 제한을 참조하세요.

이러한 메모리 제한 내에서 실행하려면 앱에서 조정 작업을 수행해야 할 수 있습니다. 특히 많은 미디어 리소스를 사용하는 앱과 게임에 대해 스토어 로 제출하기 전에 앱의 메모리 사용을 테스트하는 것이 좋습니다.

주의주의:

일부 GetValue(String) 호출의 경우 장치 식별 기능인 ID_CAP_IDENTITY_DEVICE를 필요로 합니다. 그러나 GetValue(String) 메서드를 사용하여 ApplicationWorkingSetLimit 매개 변수를 가져오는 경우 앱 매니페스트에서 제거하여 장치 ID 기능을 옵트아웃할 수 있습니다. 자세한 내용은 앱 기능을 확인하는 방법을 참조하세요.

Windows Phone 8 및 Windows Phone OS 7.1 에 제공된 대부분의 기능을 저메모리 단말기 에서 성능 저하 없이 사용할 수 있습니다. 그러나 제네릭 백그라운드 에이전트는 Windows Phone OS 7.1 저메모리 단말기 에서 지원되지 않으며, 몇 가지 추가 기능은 앱의 메모리 제한을 초과하지 않도록 주의해서 사용해야 합니다.

그래픽 및 오디오 메모리 사용 감소

저메모리 단말기 에서 실행할 앱과 게임을 개발하는 경우 게임이나 앱에서 그래픽을 사용하는 방법에 대해 주의하도록 합니다. 그래픽 및 오디오 메모리는 페이징할 수 없는 경우가 많습니다. 오디오 또는 이미지 리소스, 질감 및 애니메이션이 너무 많으면 저메모리 단말기 의 메모리 제한을 초과할 수 있습니다. 일반적으로 많은 그래픽과 오디오를 사용하는, XNA Framework로 빌드된 게임의 경우 이 점이 특히 중요합니다. 앱이나 게임이 실행되는 장치의 메모리 수준을 초과하면 OutofMemoryException이 발생하며 앱이 예기치 않게 종료됩니다.

그래픽 메모리 사용이 장치의 작업 집합 제한에 가까운 경우에는 저메모리 단말기 에서 작동하도록 앱의 성능을 조정해 보세요. 앱 프로파일링은 이 작업을 수행하는 데 도움이 될 수 있습니다. 자세한 내용은 Windows Phone용 앱 프로파일링을 참조하세요.

메모리 사용 감소를 위한 추가 고려 사항

다음은 저메모리 단말기 에서 실행할 앱을 개발하기 위한 추가 고려 사항 목록입니다.

  • 가능한 경우 실행기와 선택기를 사용합니다. 앱에서 WebBrowser 컨트롤, Map 컨트롤 또는 카메라를 사용하는 경우 앱에서 사용하는 메모리 양과 앱이 256MB Windows Phone 에뮬레이터 에서 매끄럽게 실행되는지 여부를 테스트해야 합니다. 앱에서 메모리 로드를 줄이려면 이러한 컨트롤을 해당 시작 관리자 및 선택기와 함께 사용합니다. Windows Phone 과 함께 실행기를 사용하는 방법에 대한 자세한 내용은 Windows Phone의 시작 관리자Windows Phone의 선택자를 참조하세요.

  • 긴 데이터 목록을 사용하지 않거나, 사용하는 경우 페이징되도록 합니다. 요청 시 데이터를 로드하거나 동시에 모두 로드합니다.

  • 이미지가 포함된 복잡한 항목 템플릿을 사용하지 않습니다. 사용하는 경우 앱의 메모리 사용을 모니터링합니다.

  • 페이지 전환에 복잡한 애니메이션을 사용하지 않습니다. Windows Phone Toolkit의 전환도 여기에 포함됩니다. 전환을 사용하는 경우 앱이 응답하는지 확인하고 페이지 전환 중에 앱의 메모리 사용을 테스트합니다.

  • 사용자가 앱을 실행하는 동안 장치 방향을 변경하면 앱에서 사용하는 메모리가 급증할 수도 있습니다. 앱이 주기적으로 90MB 메모리 제한을 초과하는 경우 방향을 변경하여 앱을 테스트하고 저메모리 단말기 를 옵트아웃해야 합니다.

시작 시간 절감 및 사용자에게 진행 상황 보고와 같은 일반적인 성능은 Windows Phone 8의 앱 성능 고려 사항을 참조하세요.

적용 대상: Windows Phone OS 7.1

 

Windows Phone OS 7.1 을 대상으로 하는 저메모리 단말기 에서 지원되지 않는 유일한 기능은 제네릭 백그라운드 에이전트입니다. 이 에이전트는 휴대폰이 저메모리 단말기 일 때에도 Windows Phone 8 에서 지원됩니다. 휴대폰이 저메모리 단말기 인 경우 다음 에이전트는 Windows Phone OS 7.1 에서 지원되지 않습니다.

  • 리소스를 많이 사용하는 작업

  • 정기 작업

Add(ScheduledAction) 메서드를 사용하고 PeriodicTask 또는 ResourceIntensiveTask를 전달하여 앱에서 이러한 백그라운드 에이전트의 사용을 추가하려고 하면 저메모리 단말기 또는 256MB 에뮬레이터에서 InvalidOperationException 예외가 발생합니다.

앱에 백그라운드 에이전트를 사용하며 모든 유형의 장치에서 앱을 실행하려는 경우 장치의 작업 메모리를 확인하고 저메모리 단말기 에서 백그라운드 에이전트를 사용하지 않도록 합니다. 예를 들어 PeriodicTask 컨트롤을 사용하여 앱의 라이브 타일을 업데이트하는 경우 저메모리 단말기 에 대해 라이브 타일 업데이트를 사용하지 않도록 설정하고 정적 타일만 제공합니다. 이 값을 확인하는 방법 및 앱의 일부 기능을 사용하지 않도록 설정하는 방법을 보여 주는 예제는 Windows Phone 8 저메모리 휴대폰용 앱에서 기능을 사용하지 않도록 설정하는 방법을 참조하세요.

Windows Phone SDK 8.0 을 사용하여, 256MB Windows Phone 에뮬레이터나 512MB 에뮬레이터에서 앱을 실행할 수 있습니다. Windows Phone SDK 8.0 을 설치한 후에는 표준 도구 모음의 다음 옵션 중에서 선택할 수 있습니다.

Target on Standard Toolbar selecting emulator

장치에 대한 액세스 권한이 없는 경우 저메모리 에뮬레이터를 사용하여 저메모리 단말기 에서 앱 또는 게임의 응답성과 성능을 확인할 수 있습니다.

Windows Phone SDK 에 포함된 도구를 사용하여 앱의 메모리 사용을 평가하고 앱의 성능을 조정할 수도 있습니다.

  • Windows 성능 분석 도구를 사용하여 메모리 사용을 보고 앱의 성능을 조정할 수 있습니다. 자세한 내용은 Windows Phone 응용프로그램 분석을 참조하세요.

  • Windows Phone 스토어 테스트 키트 을(를) 사용하여 앱에서 사용하는 총 메모리 양을 평가할 수 있습니다. Windows Phone 스토어 테스트 키트 에 대한 자세한 내용은 Windows Phone 스토어 테스트 키트를 참조하세요.

앱을 테스트하고 앱이 저메모리 단말기 의 메모리 제한 내에서 실행할 수 없음을 확인하는 경우 앱의 매니페스트 파일에 이를 나타내야 합니다. 그렇지 않으면 저메모리 단말기 를 가진 사용자가 앱을 다운로드하고 설치할 수 있습니다. 이렇게 되면 저메모리 단말기 사용자로부터 앱에 대해 낮은 등급을 받을 수 있습니다.

저메모리 단말기 용 앱을 개발하지 않게 하려면 앱에 추가 메모리가 필요하다고 지정하는 섹션을 매니페스트에 추가합니다. 이 매니페스트 섹션은 스토어 통합 프로세스 중에 제거되지 않습니다.

앱 매니페스트 파일을 통해 앱을 저메모리 단말기 에 사용할 수 없도록 하려면 다음 절차를 수행합니다.

  1. WMAppManifest.xml 파일에 Requirements 섹션을 추가합니다.

    Windows Phone 8 앱의 경우에는 ScreenResolutions 섹션 바로 다음에 Requirements 섹션을 추가합니다.

    -또는-

    Windows Phone OS 7.1 앱의 경우에는 Capabilities 섹션 바로 다음에 Requirements 섹션을 추가합니다.

  2. Requirements 섹션에 Requirement 요소를 추가합니다.

    Windows Phone 8 앱의 경우 이 Requirement에 대해 ID_REQ_MEMORY_300Name 특성 값을 지정합니다.

    -또는-

    Windows Phone OS 7.1 앱의 경우 이 Requirement에 대해 ID_REQ_MEMORY_90Name 특성 값을 지정합니다.

다음 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.


<Requirements>
      <Requirement Name="ID_REQ_MEMORY_300" />
</Requirements>

Windows Phone OS 7.1 앱이 있고 Windows Phone 8 저메모리 단말기 을 사용하지 않으려면 요구 사항을 ID_REQ_MEMORY_300으로 설정합니다. ID_REQ_MEMORY_300 요구 사항은 Windows Phone OS 7.1 저메모리 단말기 과 Windows Phone 8 저메모리 단말기 를 모두 효과적으로 제외합니다. ID_REQ_MEMORY_90ID_REQ_MEMORY_300을 모두 지정하는 경우, ID_REQ_MEMORY_90 요구 사항은 무시됩니다.

표시:
© 2014 Microsoft