티스토리 뷰

들어가기전에(다시보기) 

안드로이드 어플리케이션에서 시스템은 하나의 실행 스레드로 실행된다. 이 하나의 실행스레드가 바로 메인스레드(Main Thread) 이다. 

이 메인 스레드는 화면 구성에 관한 역할을 담당하기 때문에 UI Thread라고도 한다. 이때 반응성 좋은 어플리케이션을 만들기 위해서는 Main Thread가 아닌 별도의 스레드에서 동작하도록 구현하면 된다. 

즉 정리하면 시간이 걸리는 작업은 UI 스레드에서 분리하고, UI 스레드가 아닌 스레드는 UI 구성요소를 조작하지 않아야 한다. 

 

 

Main Thread = UI Thread 

UI 구성하려면 Main Thread에서 동작하도록 해야 한다. ex) setText() ,,, 

해결방법 1. runOnUIThread(Runnable) 2. View.post(Runnable) 

 

 

 

MainThread(UI Thread) 특징 

Loop

- 일반적인 단방향 프로그램 선형적이지만, 안드로이드와 같이 사람의 입력이 필요한 프로그램은 Loop가 무조건 실행되어야함 

- Loop => 사용자 입력 이벤트를 처리해주기 때문에 필수 , 무조건 반복해서 실행하는것이 아니라 단순히 입력이 지속되는지 확인 

- Loop내에서 Message Queue가 전달되는지 검사 

 

Handler 

- Message Queue 를 사용하여 Loop코드를 작성하도록 가이드 

- First In First Out 형식으로 동작하는 자료 구조 

- Message? 사용자 입력을 포함한 시스템의 모든 이벤트 전달할 때 사용하는 객체 

- Message Queue? 시스템 이벤트를 발생 순서대로 전달받아 처리하기 위해 사용하는 구조, 이때 Message Queue에 새로운 메시지가 수신되면, 메시지가 담고 있는 내용에 따라 적절한 Handler 메서드 호출됨 

 

 

runOnUIThread(Runnable)

Activiy 클래스에서 제공되는 메서드 

개발자가 만든 Runnable 객체를 Main Thread에서 실행되도록 만드는 메서드 

현재 스레드가 메인스레드이면? Runnable의 run() 실행 / 아니면? post() 실행 

 

 

 

 

 

 

스레드 로그 보는 방법(APK 스레드 출력)

cf) ADB(Android Debug Bridge)? Unix Shell, emulator나 Android 연결장비에 명령어 보낼 수 있음 

- 프로세스간 통신을 위해 사용되는 다양한 스레드들이 존재 

>> adb shell ps PID -t // 프로세스와 쓰레드 목록 

 

 

 

 

 

 

<출처> 

1. codetravel.tistory.com/9

2. superfelix.tistory.com/89

3. 

4. 

'Programming > Android' 카테고리의 다른 글

[Android] FireBase Database 사용하기  (0) 2020.12.02
[Android] FireBase 시작하기  (0) 2020.12.02
[Android] Intent  (0) 2020.11.28
[Android] 안드로이드 구성요소  (0) 2020.11.28
[Android] Activity  (0) 2020.11.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함