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

Wear OS 기기의 배터리 수명을 최대한 늘리기 위해 시스템은 메모리 사용량 계산을 수행합니다 Wear OS 앱 품질의 일환으로 가이드라인에 따라 워치 페이스 형식을 사용하는 시계 화면은 다음과 같습니다.

  • 대기 모드에서 시계 화면은 메모리를 10MB 이상 사용할 수 없습니다.
  • 대화형 모드에서 시계 화면은 메모리를 100MB 이상 사용할 수 없습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

시스템이 시계 화면의 메모리 사용량을 계산합니다.

시계 화면 내에서 이미지 또는 비트맵 글꼴이 차지하는 크기를 계산하기 위해 워치 페이스 형식을 사용하는 경우 시스템에서 다음 단계를 완료합니다.

  1. 이미지 또는 비트맵 글꼴의 압축을 해제합니다.
  2. 이미지 또는 비트맵 글꼴을 검토하여 방법은 다음과 같습니다.
    • 디스플레이 크기에 더 잘 맞게 크기가 조절되었습니다.
    • 완전히 투명한 픽셀을 삭제하기 위해 잘라냈습니다.
    • RGB565로 다운샘플링됩니다(RGB565로 다운샘플링되지 않은 경우). 손실이 발생할 수 있습니다.

결과 경계 상자를 기반으로 시스템은 이미지의 크기를 계산합니다. 또는 비트맵 글꼴(바이트)이어야 합니다.

  • RGBA8888을 사용하는 이미지 및 글꼴: \( 4 \times width \times height \)
  • RGB565를 사용하는 이미지 및 글꼴: \( 2 \times width \times height \)
  • ALPHA_8 비트맵 구성을 사용하는 이미지와 글꼴의 경우: \( width \times height \)
를 통해 개인정보처리방침을 정의할 수 있습니다.

대화형 모드

대화형 모드의 메모리 사용량을 계산할 때 시스템은 다음 총합입니다.

  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="40" y="40">
    <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="#123456" thickness="10" />
    </Arc>
</PartDraw>

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

소스 파일의 끝에 시계 침과 정보 표시를 배치합니다.

XML 노드는 소스 XML 파일에 나열된 순서대로 그려집니다. 작성자: 시스템은 시곗바늘과 정보 표시를 파일 끝에 놓으면 대기 모드 메모리 계산에서 전체 계층을 제거합니다.

시계 화면의 메모리 사용량 평가

시계 화면의 메모리 사용량을 측정하려면 메모리 공간을 사용하세요. 평가자 도구: GitHub의 watchface 저장소에서 사용할 수 있습니다.

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