셸 전환 도입으로 시스템 내에서 애니메이션을 실행하는 방법이 통합되고 성문화되어 실행될 애니메이션에 관한 중앙 집중식 정보를 검색할 수 있습니다.
전환 추적에는 시스템 서버와 셸 모두에서 WindowManager(WM) 셸 내의 모든 전환에 관한 데이터가 포함됩니다. Droidfood는 이 트레이스를 영구적으로 사용 설정하고 버그 신고에 자동으로 삽입합니다.
트레이스 수집에 관한 자세한 내용은 셸 전환을 참고하세요.
Winscope의 전환 뷰어는 서버와 클라이언트 측 정보가 모두 포함된 전환 트레이스에 이 정보를 표시합니다. 뷰어에는 왼쪽의 표 로그 뷰(개요 전환 정보 표시)와 오른쪽의 각 전환에 대한 세부정보 뷰가 포함됩니다.
그림 1. 셸 전환 트레이스 분석
표 보기
표 보기에는 다음이 포함됩니다.
- Id: 디버깅용으로만 생성된 전환 ID입니다.
- Type:
Transitions.java
에 정의된 전환 유형입니다. - 전송 시간: 전환이 처리되도록 서버에서 셸로 전송된 타임스탬프입니다.
- 디스패치 시간: 전환이 핸들러에 디스패치되어 재생이 시작되는 시점의 타임스탬프입니다.
- 기간: 전환이 시작되어 완료될 때까지 걸린 시간입니다.
- 상태: 전환이 다음과 같은 경우:
- PLAYED:: 재생됨
- ABORTED: 재생 전에 중단되었습니다. 전환은 셸 또는 WM 측에서 중단될 수 있습니다.
- 병합됨: 전환 핸들러에 의해 이미 재생 중인 다른 전환으로 병합됩니다 (핸들러가 이를 처리하는 방법을 결정함).
상세 보기
표 보기의 세부정보 외에도 선택한 전환 섹션의 전환 세부정보 보기에는 다음이 포함됩니다.
handler
: 이 애니메이션을 처리한 전환 핸들러입니다.createTimeNs
: WM 서버 측에서 전환이 생성된 타임스탬프입니다.finishTimeNs
: 전환이 셸 측에서 실행을 완료했음을 WM 서버 측에 알리는 타임스탬프입니다.endTransactionId
: 이 전환에 포함된 최종 SurfaceFlinger 트랜잭션입니다.startTransactionId
: 이 전환에 포함된 초기 SurfaceFlinger 트랜잭션입니다.targets
: 전환 참여자 목록입니다.type
: 전환 유형입니다(Transitions.java
에 정의됨).
목표
타겟은 전환에 관련된 요소로, 일반적으로 활동이나 작업입니다. 각 타겟에 대해 다음 정보가 기록됩니다.
layerId
: 애니메이션이 적용되는 레이어 (SurfaceFlinger 계층 구조에서).mode
: 이 레이어에서 실행된 애니메이션의 유형입니다.windowId
: 애니메이션이 적용되는 창 (WindowManager 계층 구조에서)flags
: 레이어에 적용되는 새로운 플래그 집합입니다.