아래는 스레드를 사용하여 네트웍상에서 데이타를 조회 후 화면UI를 업데이트하느 소스입니다.
아래와 같이 스레드를 사용하는게 정상인가요?
문제는 다음과 같습니다.
1.데이타를 모두 로드한 다음에 다이얼로그가 잠깐 나왔다가 사라집니다.
2.setProgressBarIndeterminateVisibility 로 타이틀바의 프로그래스바가 안 나옵니다.
3.UI의 응답지연이 여전히 발생합니다.
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
//네트웍상에서 데이타 조회하여 UI 업데이트
setProgressBarIndeterminateVisibility(false);
dialog.dismiss();
}
};
private Runnable mMonitoringRunnable = new Runnable() {
public void run() {
setProgressBarIndeterminateVisibility(true);
mHandler.sendEmptyMessage(0);
mHandler.postDelayed(this, DELAYED_TIME_SEC);
}
};
protected void onResume() {
super.onResume();
dialog = ProgressDialog.show(this, "", "Loading. Please wait....", true);
new Thread(){
public void run(){
if (mMonitoringRunnable != null)
mMonitoringRunnable.run();
}
}.start();
}
고수님들의 조언을 바랍니다.
mHandler.postDelayed(this, DELAYED_TIME_SEC);
예를 들어 10초 마다 네트웍의 데이타를 조회해서 화면UI 에 업데이트 하는것인데...
sendEmptyMessageDelayed 를 쓰면 1회만 실행되고 주기적으로 실행할 수가 없으며, 지연의 목적이 아닌 반복의 목적입니다.