안드로이드 개발 질문/답변
(글 수 45,052)
아래 코드에서처럼 프로그래스바를 만들어보고 있는데
sendEmptyMessage는 정상적으로 동작합니다.
그런데 sendMessage를 사용하면 동작을 하지 않습니다. (주석처리한 부분)
컴파일과 실행이 되는 것처럼 보이는데 프로그래스바가 움직이지 않고
뒤로가기 버튼도 동작하지 않습니다.
무슨 문제인지 잘 모르겠네요.
public class ThreadTest extends Activity implements OnClickListener {
ProgressBar m_pBar;
int m_progress;
Handler m_handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 99) m_pBar.setProgress(m_progress);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.btnStart);
btn.setOnClickListener(this);
m_pBar = (ProgressBar)findViewById(R.id.progressBar);
}
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
//Message msg = m_handler.obtainMessage();
//msg.what = 99;
for(m_progress = 0; m_progress <= 100; m_progress += 10) {
//msg.what = 99;
//m_handler.sendMessage(msg);
m_handler.sendEmptyMessage(99);
SystemClock.sleep(500);
}
}
}).start();
}
}
sendEmptyMessage는 정상적으로 동작합니다.
그런데 sendMessage를 사용하면 동작을 하지 않습니다. (주석처리한 부분)
컴파일과 실행이 되는 것처럼 보이는데 프로그래스바가 움직이지 않고
뒤로가기 버튼도 동작하지 않습니다.
무슨 문제인지 잘 모르겠네요.
public class ThreadTest extends Activity implements OnClickListener {
ProgressBar m_pBar;
int m_progress;
Handler m_handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 99) m_pBar.setProgress(m_progress);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.btnStart);
btn.setOnClickListener(this);
m_pBar = (ProgressBar)findViewById(R.id.progressBar);
}
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
//Message msg = m_handler.obtainMessage();
//msg.what = 99;
for(m_progress = 0; m_progress <= 100; m_progress += 10) {
//msg.what = 99;
//m_handler.sendMessage(msg);
m_handler.sendEmptyMessage(99);
SystemClock.sleep(500);
}
}
}).start();
}
}




msg.what = 99;
m_handler.sendMessage(msg);
SystemClock.sleep(500);
}