[Android] Thread
programming/android

[Android] Thread

6. Thread

 

6.1 Thread

6.1.1 멀티 스레드(Multi Thread)

한번에 여러 개의 작업을 동시에 처리할 수 있음

 

6.1.2 안드로이드의 멀티 스레드

리눅스: 멀티 스레드 운영체제
자바: 멀티 스레드 지원

 

6.1.3 스레드를 생성하는 두 가지 방법

  1. Thread() 클래스를 extends 하는 방법
  2. Thread(Runnable runnable)

 

6.1.4 스레드는 고유의 메모리 스택을 가지며 메인 스레드와는 별도로 CPU 시간을 할당 받아 실행

 

6.1.5 스레드에서 할 작업은 run() 안에 작성

 

6.1.6 start()를 호출하면 run()이 실행됨

 

 

6.2 핸들러(Handler)

6.2.1 핸들러를 생성하면 내부적으로 별도의 스레드가 생성됨

 

6.2.2 핸들러에서 내부적으로 생성한 스레드로 들어오는 메세지들을 순차적으로 처리함

 

6.2.3 메세지가 도착하면 handleMessage()가 자동 호출

/**
 * @param {Message} msg - 스레드 간의 통신 내용을 저장하는 객체
 * 단순한 신호나 명령뿐 아니라 복잡한 추가 정보도 전달받아야 하므로 여러 개의 필드를 가짐
 */
public void handleMessage(Message msg) {
	(...)
}

 

6.2.4 각 필드의 구체적인 값은 메세지마다 다르게 정의됨

 

6.2.5 메세지를 보내는 쪽에서 전달하고자 하는 내용을 Message 객체에 저장하여 핸들러로 전송할 때 다음 메서드를 사용

boolean Handler.sendEmptyMessage(int what);
boolean Handler.sendMessage(Message msg);
boolean Handler.sendMessageAtFrontOfQueue(Message msg);

 

 

6.3 실습예제

6.3.1 activity_main.xml

6.3.2 MainActivity.java

6.3.3 progress.xml

6.3.4 ProgressActivity.java

6.3.5 async.xml