반응형
6. Thread
6.1 Thread
6.1.1 멀티 스레드(Multi Thread)
한번에 여러 개의 작업을 동시에 처리할 수 있음
6.1.2 안드로이드의 멀티 스레드
리눅스: 멀티 스레드 운영체제
자바: 멀티 스레드 지원
6.1.3 스레드를 생성하는 두 가지 방법
Thread()
클래스를 extends 하는 방법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
반응형