안드로이드 지연처리

버튼 크기나 이미지뷰를 구해서 저장해놓아야 할 때가 있는데 이걸 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 단계가 아닌 메세지큐 단계라 이미지뷰라던지 버튼이 전부 실체화 된 상태이기 때문에 값을 구할수 있는것.

참고 : https://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable)

크리에이티브 커먼즈 라이선스 Linsoo 의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다.

댓글 남기기

이메일 주소를 발행하지 않을 것입니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.