안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
웹서버에서 로그인 체크를 진행하고 그 동안에는 다이얼로그를 보여주려고 하는데요.
handler.post(new Runnable() {
public void run() {
loginDialog = ProgressDialog.show(wagleLogin.this,"로그인 체크", "로그인 중입니다...");
loginCheck(userid.getText().toString());
}
});
이런 식으로 구현하면 로그인 체크와 다이얼로그가 뜨긴 뜨는데;;
잠깐 떳다가 사라집니다.
실제 로그인 버튼을 눌렀을때 다이얼로그를 저런식으로 show하고 바로 체크를 하면 되는줄 알앗는데요.
음;; 조언 좀 부탁드립니다.
2010.04.05 17:31:51
ProgressDialog.show 호출 시, 실재로 ProgressDialog 가 화면에 보이는 것이 아니고, ProgressDialog 를 화면에 보여주기 위한 메세지만 메세지 큐에 추가되게 됩니다. 따라서 loginCheck 일이 전부 수행된 이 후 해당 메세지가 처리됨으로, ProgressDailog 가 잠깐 보였다 사라지는게 아닌가 싶네요. 원하는대로 하시려면, loginCheck 일은 메인 스레드가 아닌 별개의 스레드에서 진행 하셔야 될 듯 합니다.
2010.04.10 15:45:05
휴우 님 답변 감사드립니다. 제가 너무 늦게 본건 아닌가 싶네요. 말슴해주신 대로 수정을 해보았는데 되긴 되나
부드럽지 못한 모습을 보입니다.
new Thread(){
public void run(){
try{
handler.post(new Runnable() {
public void run() {
logincheck();
}
});
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
new Thread(){
public void run(){
try{
handler.post(new Runnable() {
public void run() {
loginDialog = ProgressDialog.show(wagleMainList.this,"정보 체크", "정보 확인 중입니다...");
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
loginDialog.hide();
}
});
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
이런식으로 구성하면 버튼을 눌렀을 시에 안으로 로그인을 하고 다이얼로그가 돌아가긴 하는데 중간에 좀 멈추는?
듯한 동작을 보여서 아예 별개로 화면위에서는 총 시간동안 다이얼로그가 돌고 내부적으로 일처리를해서 다음으로 넘어가게하고 싶은데 그 부분을 어떻게 해야하는지 궁금합니다.



