android.view.windowleaked

2014. 1. 10. 19:29Programing/Debugging

 
// Progress Dialog를 사용해서 화면에 dialog 를 노출하고, 시간이 걸리는 처리로직은 thread 안에서 처리하는 방법.
void createThreadAndDialog() {
    /* ProgressDialog */
	     
    load_thread = new Thread(new Runnable() {
        public void run() {
            // 시간걸리는 처리
        	Process(path);
            handler.sendEmptyMessage(0);
        }
    });
    load_thread.start();
}

private Handler handler = new Handler() {
	public void handleMessage(Message msg) {
    	loading_dialog.cancel(); // 다이얼로그 삭제
    	setListAdapter(f_list); // View갱신
    	load_thread.stop(); // Thread 중지
    }
};

다이얼 로그를 사용하는 경우 이러한 에러를 가끔 경험하게 됩니다.

이상한건, 어떤 폰에서는 나오고, 어떤 폰에서는 안나온다는 겁니다.

어쨌든.... 해결 방법은.....


onResume나 onStop나 onDestory중
한곳에 dialog.dismiss()를 걸어주면 발생하지 않는다.


이렇게 해서도 해결이 안된다면, 토스트 메시지나, 다른 다이얼로그를 잘 못 사용한 경우입니다.


if(proDial != null){

    if(proDial.isShowing()){

        proDial.dismiss();

    }

}