제 소스좀 봐주세요
bt을 선택하면 스레드를 이용하여 sleep을 실행하게 되는데
bt가 실행중 bt1버튼을 선택할수 없습니다. bt의 for문이 다 끝나야 bt1버튼을 선택할수 있는데
이러면 스레드를 사용하나마나 인것같은데...제가 잘못 사용하는건지...
제가 원하는것은 bt1선택시 bt의 for문이 동작하는중에 bt1의 "스레드 사용중" 이란 글씨를 줄력하고 싶은니다...
스레드 정말 어렵네요..ㅜ.ㅜ
package cim.threadTest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ThreadTest extends Activity {
TextView tv1;
Handler handler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bt = (Button)findViewById(R.id.bt);
Button bt1 = (Button)findViewById(R.id.bt1);
tv1 = (TextView)findViewById(R.id.text1);
handler = new Handler();
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
handler.post(new Runnable() {
public void run() {
for(int a= 0;a<100;a++){
SystemClock.sleep(20);
}
}
});
}
}).start();
}
});
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv1.setText("스레드중 작동");
}
});
}
}
그러므로 handler 부분을 빼고 하시면 정상적으로 동작합니다.
bt 의 OnClickListener 설정 부분을 아래와 같이 하시면 됩니다.
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv1.setText("init");
new Thread(new Runnable() {
public void run() {
for(int a= 0;a<100;a++)
SystemClock.sleep(20);
}
}).start();
}
});



