Tag Archives: 다이얼로그

[Android] ProgressDialog 재사용시에 멈추는 현상 해결하기

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

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

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

[code]@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);
}[/code]
이제 다이얼로그를 띄울때는 다음과 같이 showDialog를 사용하여 띄우면 되겠죠.

[code]showDialog(DEFAULT_PROGRESS_BAR);[/code]
이제 다이얼로그를 닫을때 dismiss를 사용하실텐데 다음과 같이 removeDialog도 해주시기 바랍니다.
[code]dlgProgress.dismiss();
removeDialog(DEFAULT_PROGRESS_BAR);[/code]
이제 평소에 비해 좀 더 좋아보이시나요?