안드로이드 개발 질문/답변
(글 수 45,052)
private Runnable mTickRunnable = new Runnable() { @Override public void run() { // do work mHandler.postDelayed(this, mInterval); } };
위 처럼 특정 작업을 하고 mInterval 설정된 시간만큼 지연 뒤 다시 특정 작업을 하는 것인데요.
mInterval이 50으로 설정하고 작동시키면, 50이 아닌 180~250사이의 지연 후 실행이 됩니다.
그런데 화면에 표시하는 것도 많지 않고.. 특별히 퍼포먼스가 적용되는 것도 없으니.. 지연될 일이 없는 것 같은데 이러네요.
// do work 앞 뒤로 log찍어 실행 시간 체크해보면 0~1ms입니다.
위의 쓰래드를 돌리고 있는 상태에서 Handler나 UI Thread가 아닌 일반 쓰래드 돌리면 지연없이 잘 동작하구요.
어디선가 UI 쓰래드를 쓰는건지.. 확인해보려는데 방법을 찾지를 못하고 있네요 ㅠㅠ
요약하면
위 소스의 mHandler.postDelayed(this, mInterval); 실행하면 mInterval(ms) 뒤에 다시 mTickRunnable이 동작해야 하는데
mInterval과 관계없이 200ms가량 지연된 후 동작이 되네요.
원인이 예상되시거나 UI Thread에서 하는 모든 일을 디버깅 할 수 있는 방법을 아시면 알려주시면 감사하겠습니다.
읽어주셔서 감사합니다!
StrictMode 에 대해서 검색해보세요.