마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

텍스트뷰의 변화 시점에 대하여 알고싶습니다

0 추천

안녕하세요 계속 같은 문제로 골치 썩이는 학생입니다.

아래와 같은 구조의 어플을 만들고 있습니다.

 

스타트 버튼을 터치하면 그 위의 두 텍스트뷰가 팝업이 됩니다.

이들은 최상위 윈도우에 있어서 홈 버튼을 눌러도 계속 떠있습니다.

'터치하세요' 텍스트뷰를 누르면 OnTouchListener가 등록되어있기 때문에 터치를 감지하여 event.getDownTime()을 이용하여 누른 시점(start time)을 확인합니다.

그리고 '터치하세요'의 내용이 '터치하셨습니다' 로 바뀌고, TextWatcher도 등록하였기 때문에 호출되는 afterTextChanged()에서 종료시점(stop time)을 체크하여 오른쪽 텍스트뷰에 Response Time(stop time - start time)을 표시해줍니다.

 

문제는 어플리케이션 레벨이기 때문에, 실제 텍스트뷰가 업데이트 된 시점을 정확히 잡아내지 못하고 있습니다.

kernelshark라는 프로그램으로 커널을 확인하면, SurfaceFlinger가 나오기 수십 ms 이전 지점을 stop time으로잡고 있습니다.

코드상으로는 TextWatcher로 afterTextChanged()가 호출된 뒤에 종료시점(stop time)을 찍었는데도 그러합니다.

지금보다 더 정확하게 화면에 나오는 시점을 찍으려면  어떤 방법이 있을까요?

아래 갈색선이 start time으로 나오고 초록색선이 stop time으로 나오는 부분입니다.

좀 더 SurfaceFlinger 나오는 시점과 일치시키고 싶습니다. 감사합니다.

ohyeaha (450 포인트) 님이 2014년 8월 8일 질문
화면이 그려지는 시점을 잡을려면 차라리 TextView 에 onDraw 함수에서 캐치 하는게 시간상으로는 맞아 보입니다.
(뭐 그래도 오차는 발생하겠지만 말이죠.)

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...