제목에 재사용이라고 썼지만 사실 재사용을 안하는 이야기를 하려고 합니다-_-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]
이제 평소에 비해 좀 더 좋아보이시나요?
[Android] ProgressDialog 재사용시에 멈추는 현상 해결하기
Leave a reply