제목에 재사용이라고 썼지만 사실 재사용을 안하는 이야기를 하려고 합니다-_-a 대부분의 책들이 ProgressDialog의 경우 재사용 하는 예제를 싣고 있고 물론 작동을 잘 하고 사용에 아무런 문제가 없습니다.

하지만 여기서 겪는 문제가 있습니다. 스타일을 ProgressDialog.STYLE_SPINNER 쓸때 보면 다이얼로그의 재사용시에 스피너가 회전을 하지 않습니다. 이것 참 난감하더군요.

여기에 대해 다양한 방법론이 제시되곤 합니다. 쓰레드등을 사용하여 비동기로 띄운다거나..하지만 잘 생각해 보면 그냥 재사용 안하면 됩니다; 우리 Dalvik VM의 GC를 믿어보는거죠;

@Override
protected Dialog onCreateDialog(int id)
{
 
switch(id)
 
{
 
case DEFAULT_PROGRESS_BAR:
    dlgProgress
= new ProgressDialog(this);
    dlgProgress
.setMessage("Loading...");
    dlgProgress
.setIndeterminate(true);
    dlgProgress
.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dlgProgress
.setCancelable(false);
   
return dlgProgress;
 
}
 
 
return super.onCreateDialog(id);
}

이제 다이얼로그를 띄울때는 다음과 같이 showDialog를 사용하여 띄우면 되겠죠.

showDialog(DEFAULT_PROGRESS_BAR);

이제 다이얼로그를 닫을때 dismiss를 사용하실텐데 다음과 같이 removeDialog도 해주시기 바랍니다.
dlgProgress.dismiss();
removeDialog
(DEFAULT_PROGRESS_BAR);

이제 평소에 비해 좀 더 좋아보이시나요?

+ Recent posts