Notice
Recent Posts
Recent Comments
Link
관리 메뉴

설.현.아빠

Thread 예제 1] 이해할때까지 사용해보기.ㅋㅋㅋㅋ 본문

안드로이드/Thread

Thread 예제 1] 이해할때까지 사용해보기.ㅋㅋㅋㅋ

설.현.아빠 2011. 2. 11. 11:43



 

<?xml version="1.0" encoding="utf-8"?>

<!-- main.xml -->

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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>

 

 

// HandlerDemo.java

 

package lee.android.HandlerDemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ProgressBar;

public class HandlerDemo extends Activity {
    private ProgressBar bar;

    boolean isRunning = false;
    
    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());

      // 여기서 Message를 던져서
     }
    } catch (Exception e) {
     // 오류가 발생하면 백그라운드 스레드를 그대로 종료한다.
    }
      }
     });
     isRunning = true;
     background.start();
    }
    public void onStop() {
     super.onStop();
     isRunning = false;
    }
}

 


Comments