액티비티의 윈도우 생성/삭제 시점 확인하기

어플리케이션 개발 수준에서 윈도우(Window)에 신경 쓰는 경우는 별로 없다. 특별한 처리 없이도 액티비티가 기본적으로 윈도우를 생성한 후, setContentView() 메소드 등을 통해 전달된 레이아웃을 그 위에 그려주기 때문이다.

하지만, 간혹 윈도우가 잘 생성/삭제 되는지 궁금하다면 아래와 같은 로그로 참조할 수 있다.

12-14 19:09:29.844 system_process V/WindowManager: Relayout Window{2492035d0 u0 me.sunphiz.android.test.window/me.sunphiz.android.test.window.activity.MainActivity}: viewVisibility=0 req=1080x2004 WM.LayoutParams{(0,0)(fillxfill) sim=#120 ty=1 fl=#81810100 pfl=0x20000 wanim=0x1030465 vsysui=0x2700 needsMenuKey=2 naviIconColor=0}

12-14 19:10:45.779 system_process V/WindowManager: Relayout Window{2492035d0 u0 me.sunphiz.android.test.window/me.sunphiz.android.test.window.activity.MainActivity}: viewVisibility=8 req=1080x2220 WM.LayoutParams{(0,0)(fillxfill) sim=#10 ty=1 fl=#81810100 pfl=0x20000 wanim=0x1030465 vsysui=0x700 needsMenuKey=2 naviIconColor=0}

로그에서 2492035d0는 윈도우 인스턴스의 고유번호이고, viewVisibility는 보여지는 상태를 가리키는데, 0이 표시(attach), 8이 숨긴(detach)를 가리킨다. 위 로그를 보면, MainActivity에서 사용한 윈도우는 화면에 표시되었다가 사라진 셈이다.

윈도우는 ViewRootImpl 태그로 확인 시 setView()가 호출된 직후 화면에 그려지며, Activity.onStop() 메소드가 호출된 직후 사라진다. 그리고 위 로그는 각각 화면에 그리자마자, 제거된 직 후 찍힌다.

참고로 윈도우는 재활용될 수 있으므로, 같은 인스턴스가 사용될 수 있다.

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.