new Thread(new Runnable() {
public void run(){
// 작업할 부분 코딩
}
}).start(); // 반드시 start() 해줘야 작동한다
UI 쓰레드 : 화면의 위젯을 변경할 때 사용, 일반적 쓰레드는 위젯 변경 불가 계산만 가능(TextView 로 진행률 확인가능)
runOnUiThread(new Runnable() {
public void run(){
// 작업할 부분 코딩
}
}).start();
public class MainActivity extends AppCompatActivity {
SeekBar sb1, sb2;
ProgressBar pb1;
TextView tv1, tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sb1 = (SeekBar)findViewById(R.id.sb1);
sb2 = (SeekBar)findViewById(R.id.sb2);
pb1 = (ProgressBar)findViewById(R.id.pb1);
tv1 = (TextView)findViewById(R.id.tv1);
tv2 = (TextView)findViewById(R.id.tv2);
}
// 버튼을 클릭했을 때
public void buttonClicked(View v) {
new Thread(new Runnable(){ // 프로그래스바
public void run(){
for(int i=pb1.getProgress(); i<10; i++){
pb1.setProgress(pb1.getProgress() + 10);
}
}
}).start();
new Thread(new Runnable() { // 시크바 + UiThread
@Override
public void run() {
for (int i = sb1.getProgress(); i < 100; i = i++) {
runOnUiThread(new Runnable() {
@Override
public void run() {
sb1.setProgress(sb1.getProgress() + 3);
tv1.setText("1번 진행률 : " + sb1.getProgress() + "%");
}
});
SystemClock.sleep(100);
}
}
}).start();
new Thread(new Runnable() { // 시크바 + UiThread
@Override
public void run() {
for (int i = sb2.getProgress(); i < 100; i = i++) {
runOnUiThread(new Runnable() {
@Override
public void run() {
sb2.setProgress(sb2.getProgress() + 4);
tv2.setText("2번 진행률 : " + sb2.getProgress() + "%");
}
});
SystemClock.sleep(100);
}
}
}).start();
}
}