안드로이드 지연처리

버튼 크기나 이미지뷰를 구해서 저장해놓아야 할 때가 있는데 이걸 OnCreate에서 한번만 하도록 하고 싶지만 거기에 넣어두면 실제 구현이 되지 않은 상태라 사이즈가 전부 0으로 나온다.

그렇다고 실제 값이 필요할때 마다 구하는것도 좀 아닌거 같고 그럴때 쓰는게 post 함수

@Override
protected void onCreate(Bundle savedInstanceState) {
	m_imgViewGraph = (ImageView) findViewById(R.id.imageViewGraph);
	Log.d("linsoo", "width1=" + m_imgViewGraph.getWidth());
	m_imgViewGraph.post(new Runnable(){
		@Override
		public void run() {
			Log.d("linsoo", "width2=" + m_imgViewGraph.getWidth());
		}
	});
}

결과는 width1 = 0 width2 = 실제 넓이 이렇게 됨.

post함수를 쓰면 메세지큐에 실행할거를 추가해준다고 함 그럼 메세지큐가 돌기 시작하면서 그때 그 부분을 처리함 그래서 create 단계가 아닌 메세지큐 단계라 이미지뷰라던지 버튼이 전부 실체화 된 상태이기 때문에 값을 구할수 있는것.


Comments

답글 남기기

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