셸 전환

셸 전환을 도입하여 시스템 내에서 애니메이션을 실행하는 메서드를 통합하고 코딩하여 실행 예정인 애니메이션에 관한 중앙 집중식 정보를 검색할 수 있도록 했습니다.

전환 트레이스에는 WindowManager (WM) 셸 내에서 발생하는 모든 전환에 관한 데이터가 포함되며, 이 데이터는 시스템 서버 측과 셸 측에서 모두 발생합니다. 이 트레이스는 Droidfood에서 영구적으로 사용 설정되며 버그 신고서에 자동으로 삽입됩니다.

트레이스 수집에 관한 자세한 내용은 셸 전환을 참고하세요.

Winscope의 전환 뷰어는 서버 측 정보와 클라이언트 측 정보가 모두 포함된 전환 트레이스의 이 정보를 표시합니다. 뷰어는 왼쪽에 전환에 관한 대략적인 정보가 포함된 표 로그 뷰와 오른쪽에 각 전환에 관한 세부정보 뷰로 구성됩니다.

셸 전환 트레이스 분석

그림 1. 셸 전환 트레이스 분석

표 보기

표 보기에는 다음이 포함됩니다.

  • Id: 디버깅용으로만 생성되는 전환 ID입니다.
  • 유형: Transitions.java에 정의된 전환 유형입니다.
  • Send Time: 전환이 처리되도록 서버에서 셸로 전송된 타임스탬프입니다.
  • 전달 시간: 전환이 재생을 시작하기 위해 핸들러로 전달된 타임스탬프입니다.
  • Duration: 재생 시작부터 완료까지의 전환에 걸린 시간입니다.
  • 상태: 전환이 다음과 같은 경우
    • 재생됨: 재생됨
    • ABORTED: 재생 전에 중단되었습니다. 전환은 셸 또는 WM 측에서 중단될 수 있습니다.
    • MERGED: 전환 핸들러에 의해 이미 재생 중인 다른 전환과 병합되었습니다 (핸들러가 이를 처리하는 방법을 결정함).

상세 보기

표 보기의 세부정보 외에도 SELECTED TRANSITION 섹션의 세부적인 전환 보기에는 다음이 포함됩니다.

  • handler: 이 애니메이션을 처리한 전환 핸들러입니다.
  • createTimeNs: WM 서버 측에서 전환이 생성된 타임스탬프입니다.
  • finishTimeNs: WM 서버 측에 셸 측에서 전환 실행이 완료되었다는 알림이 전송된 타임스탬프입니다.
  • endTransactionId: 이 전환에 포함된 최종 SurfaceFlinger 트랜잭션입니다.
  • startTransactionId: 이 전환에 포함된 초기 SurfaceFlinger 트랜잭션입니다.
  • targets: 전환 참여자 목록입니다.
  • type: Transitions.java에 정의된 전환 유형입니다.

목표

타겟은 전환에 관련된 요소 (일반적으로 활동 또는 작업)입니다. 각 타겟에 대해 다음을 기록합니다.

  • layerId: 애니메이션이 적용되는 레이어 (SurfaceFlinger 계층 구조에서)입니다.
  • mode: 이 레이어에서 실행되는 애니메이션 유형입니다.
  • windowId: 애니메이션이 적용되는 창 (WindowManager 계층 구조에서)입니다.
  • flags: 레이어에 적용되는 새로운 플래그 집합입니다.