시계 화면의 메모리 사용량 최적화

Wear OS는 메모리 사용량을 추적하여 배터리 수명을 개선합니다. 워치 페이스 형식을 사용하는 시계 화면에는 Wear OS 앱 품질 가이드라인에 따라 메모리 제한이 있습니다.

  • 대기 모드: 최대 메모리 사용량 10MB
  • 대화형 모드: 최대 메모리 사용량은 100MB입니다.

메모리 사용량 계산

워치 페이스 형식을 사용하여 워치 페이스의 이미지 또는 비트맵 글꼴의 메모리 사용량을 계산하기 위해 시스템은 다음을 실행합니다.

  1. 이미지 또는 글꼴을 압축 해제합니다.
  2. 다음 최적화가 적용되는지 확인합니다.
    • 화면에 더 잘 맞게 크기 조절
    • 투명 픽셀 자르기
    • 품질 손실 없이 RGB565로 다운샘플링

결과 경계 상자를 기반으로 크기는 다음과 같이 계산됩니다.

  • RGBA8888을 사용하는 이미지 및 글꼴: 4 x 너비 x 높이
  • RGB565를 사용하는 이미지 및 글꼴: 2 x 너비 x 높이
  • ALPHA_8 비트맵 구성을 사용하는 이미지 및 글꼴: 너비 x 높이

대화형 모드

대화형 모드의 메모리 사용량을 계산하기 위해 시스템은 다음 값을 합산합니다.

  1. 처리되지 않은 벡터 글꼴의 크기
  2. 시스템의 기본 글꼴의 예상 사용량
  3. 자르기, 크기 조절, 다시 포맷팅이 적용된 후의 이미지와 비트맵 글꼴의 총 크기입니다.

구성

구성이 있는 시계 화면의 경우 시스템은 다양한 구성에서 시계 화면 리소스의 총 크기를 계산하려고 시도합니다. 조합 수가 매우 많은 경우 시스템에서 동시에 사용되는 리소스 수를 과대평가할 수 있습니다.

대기 모드 및 레이어

시스템은 주변 모드가 최대 3개의 전체 화면 레이어를 사용한다고 가정하며 그중 2개는 정적입니다. 레이어에는 다음이 포함됩니다.

  1. 시계 화면 배경입니다. 시스템은 배경이 몇 개의 이미지로 구성되어 있는지와 관계없이 이를 하나의 이미지로 취급합니다.
  2. 손, 디지털 디스플레이, 동적 요소와 같은 움직이는 부분
  3. 소스 XML 파일의 나머지 요소입니다.

대형 비트맵 글꼴은 대기 모드에서 가장 많은 메모리를 사용하는 경우가 많습니다.

메모리 사용량을 줄이는 방법

다음 최적화를 사용하여 메모리 사용량을 줄이세요.

비트맵 글꼴 자르기 및 크기 조절

디스플레이 크기에 맞게 이미지와 BitmapFont 객체를 자릅니다.

Wear OS는 모든 이미지가 압축 해제된 상태로 시계 화면을 그립니다. 거의 비어 있는 전체 화면 이미지는 디스크에서 3KB를 사용할 수 있지만 450픽셀 x 450픽셀 화면에서는 750KB 이상을 사용할 수 있습니다.

일관된 비트맵 글꼴 높이 사용

BitmapFont를 사용할 때는 캐릭터의 모든 이미지의 높이가 동일해야 합니다. 마찬가지로 단어의 모든 이미지도 높이가 동일해야 합니다.

애니메이션에서 일관된 프레임 크기 사용

시계 화면에서 이미지를 이동하는 대신 이미지의 요소를 업데이트하고 경계 상자 위치를 고정하세요. 예를 들어 워치 페이스에서 원에 애니메이션을 적용하려면 원을 굴리는 대신 색상을 변경합니다.

이 기법은 애니메이션의 계산된 경계 상자 크기를 줄입니다.

이미지 중복 삭제

이미지를 여러 번 표시하려면 이미지 리소스 하나만 포함하고 여러 번 참조하세요.

원호를 사용하여 진행 상황 표시

1분 또는 1시간 후에 완료되는 진행률 표시줄을 시뮬레이션하려면 이미지 60개를 사용하지 마세요. 다음과 같이 길이를 제어하는 표현식이 포함된 Arc 객체를 사용합니다.

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
    pivotX="0.5" pivotY="0.5" x="25" y="25">
    <Arc centerX="200" centerY="200" width="400" height="400"
        startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
            value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#654456" thickness="10" />
    </Arc>
</PartDraw>

예를 들어 레트로 디지털 시계 스타일의 모양을 얻기 위해 비연속 선을 표시하려면 Stroke 객체의 대시 속성이나 반투명 마스크 이미지 오버레이를 사용하세요.

소스 파일 끝에 시계 바늘과 정보 표시 배치

XML 노드는 소스 XML에 나열된 순서대로 그려집니다. 시계 바늘과 컴플리케이션을 끝에 배치하면 시스템이 절전 모드 메모리 계산에서 전체 레이어를 삭제할 수 있습니다.

워치 페이스의 메모리 사용량 평가

시계 화면의 메모리 사용량을 측정하려면 GitHub의 watchface 저장소에 있는 메모리 사용량 평가 도구를 사용하세요.

  • 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
  • Arc
  • 직사각형