설.현.아빠
Thread 예제 1] 이해할때까지 사용해보기.ㅋㅋㅋㅋ 본문
<?xml version="1.0" encoding="utf-8"?> <!-- main.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // HandlerDemo.java package lee.android.HandlerDemo; import android.app.Activity; public class HandlerDemo extends Activity { boolean isRunning = false; // 여기서 받는다. // 여기서 Message를 던져서
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ProgressBar;
private ProgressBar bar;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// 어떤 메시지가 수신되건 간에 ProgressBar의 진행 상황을 5만큼 증가시킨다.
bar.incrementProgressBy(5);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bar = (ProgressBar)findViewById(R.id.progress);
}
// Background Thread 는 onStart() Method 에서 생성함.
public static int i;
public void onStart() {
super.onStart();
bar.setProgress(0);
Thread background = new Thread(new Runnable() {
public void run() {
try {
for(i=0; i<20 && isRunning; i++) {
// 1초간 대기하고 있다가 Handler 에 Message 하나를 던져준다.
Thread.sleep(1000);
handler.sendMessage(handler.obtainMessage());
}
} catch (Exception e) {
// 오류가 발생하면 백그라운드 스레드를 그대로 종료한다.
}
}
});
isRunning = true;
background.start();
}
public void onStop() {
super.onStop();
isRunning = false;
}
}
'안드로이드 > Thread' 카테고리의 다른 글
Thread간의 데이터 교환 (0) | 2011.07.22 |
---|---|
Looper 의 사용 (Thread, Handler, Looper) (0) | 2011.05.01 |
안드로이드의 비동기화 참고 예제 (0) | 2011.04.23 |
Thread 가 응답이 오래걸릴때 timeout시킬려면 (0) | 2011.02.11 |
[허니몬님자바강좌] 제 13장 쓰레드 (Thread) (0) | 2011.02.11 |