하드웨어 가속으로 시계 화면 성능 개선

표준 뷰를 사용하는 Wear OS 앱에는 자동 하드웨어 가속 그래픽 렌더링의 이점이 있습니다. 하지만 시계 화면은 일반적으로 캔버스를 사용하여 구현되므로 하드웨어 가속이 자동으로 적용되지 않습니다.

시계 화면에 하드웨어 가속 캔버스를 사용하는 이유

대부분의 경우 시계 화면은 하드웨어 가속 캔버스를 사용할 때 더 높은 프레임 속도로 렌더링됩니다. 프레임 속도가 높을수록 애니메이션과 전환이 더 매끄럽게 표시되어 사용자 환경이 개선됩니다.

또한 하드웨어 가속 캔버스를 사용하면 시계 화면에 관한 더 많은 UI 성능 데이터에 액세스할 수 있습니다. 예를 들어 UI 성능 측정에서 설명된 세부 프레임 정보에 액세스하는 것은 하드웨어 가속 캔버스를 사용할 때만 가능합니다.

시계 화면에서 하드웨어 가속을 사용하나요?

시계 화면에서 하드웨어 가속을 사용하고 있는지는 개발자 옵션이나 adb를 사용하여 확인할 수 있습니다.

개발자 옵션을 사용하여 확인

시계 화면에서 하드웨어 가속을 사용하고 있는지 개발자 옵션을 사용하여 확인하려면 다음 단계를 따르세요.

  1. Wear OS 기기에서 설정 > 개발자 옵션으로 이동합니다.
  2. GPU 프로파일링 디버그를 사용 설정합니다.

    이 옵션은 표시되는 노출 영역 위에 오버레이를 그려서(노출 영역당 하나씩) 해당 노출 영역의 각 GPU 렌더링 단계에서 소요된 시간을 표시합니다.

  3. 기기에서 시계 화면으로 다시 이동합니다.

  4. 시계 화면에서 하드웨어 가속 캔버스를 사용하는 경우 시계 화면의 렌더링된 각 프레임에 관해 오른쪽에서 왼쪽으로 이동하는 새 막대가 표시됩니다.

adb를 사용하여 확인

시계 화면에서 하드웨어 가속을 사용하고 있는지 adb를 사용하여 확인하려면 다음 단계를 따르세요.

  1. Wear OS 기기에서 시계 화면을 테스트하려는 시계 화면으로 변경합니다.
  2. 대화형 모드에서 시계 화면을 몇 초 동안 실행합니다.
  3. 다음 adb 명령어를 실행하여 시계 화면에서 하드웨어 가속을 사용 중인지 확인합니다.

    adb shell dumpsys gfxinfo [package-name]

명령어를 실행하면 다음 예와 비슷한 출력이 표시됩니다.

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

이 샘플 출력에서 Total frames rendered라는 줄을 확인합니다. 일반적으로 렌더링된 총 프레임 수가 0보다 큰 것으로 출력에 표시되면 시계 화면에서 가속 캔버스를 사용하는 것입니다. 그 외의 경우 보고서의 렌더링된 총 프레임 수와 기타 프레임 데이터는 일반적으로 0입니다.

그러나 gfxinfo는 앱의 전체 패키지에 관한 출력이므로 앱에서 구성 화면에 사용하는 Activity와 같이 하드웨어 가속 캔버스가 아닌 다른 것에서 일부 프레임 시간 정보가 표시될 수도 있습니다. 차이를 확인하려면 표시되는 유일한 노출 영역이 시계 화면인지 확인한 후 adb shell dumpsys gfxinfo 명령어를 다시 실행하여 Total frames rendered 값이 증가하는지 확인합니다.

권장사항

다음 권장사항을 따라 사용자에게 최상의 환경을 제공하세요.

배터리 수명 극대화

시계 화면에 장기 실행 애니메이션이 있는 경우 하드웨어 가속을 사용하면 기기의 배터리 수명이 크게 줄어들 수 있습니다. 이 문제는 시계 화면이 모든 프레임에서 그리려고 하면 더 심해질 수 있습니다. 사용자에게 부정적인 영향을 주지 않으려면 시계 화면에서 장기 실행 애니메이션을 사용하지 마세요. 이 가이드라인은 하드웨어 가속 사용에만 국한되지 않습니다. 그러나 하드웨어 가속을 사용하면 그릴 수 있는 프레임 수가 늘어나므로 이를 따르는 것이 훨씬 더 중요해집니다. 자세한 내용은 애니메이션 권장사항을 참고하세요.

지원되는 그리기 작업 사용

일부 그리기 작업은 하드웨어 가속을 사용할 때 지원되지 않습니다. 지원되는 항목에 관한 자세한 내용은 하드웨어 가속을 참고하세요. 지원되지 않는 작업을 사용하는 작은 코드 경로가 있는 경우 비트맵 지원 캔버스를 만들고 canvas.drawBitmap()을 사용하여 이 비트맵을 시계 화면의 캔버스에 그릴 수 있습니다.

하드웨어 가속 사용 시 호환성 유지

하드웨어 가속은 Android 9(API 수준 28) 이상을 실행하는 Wear OS 기기에서 사용할 수 있습니다. 하드웨어 가속을 사용할 수 없는 이전 기기에서 특정 그리기 작업을 하지 않거나 하드웨어 가속 캔버스에서 지원되지 않는 그리기 작업을 하지 않으려면 Canvas.isHardwareAccelerated()를 확인하고 대체 기능을 제공합니다.