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에서 하는 모든 일을 디버깅 할 수 있는 방법을 아시면 알려주시면 감사하겠습니다.


읽어주셔서 감사합니다!