on
스레드관련
스레드 구조
스레드 - 루퍼 - 핸들러
루퍼와 핸들러로 스레드간의 통신을 한다.
핸들러는 요청을 받아서 큐에넣는다.
루퍼는 큐에서 하나씩 뽑아서
핸들러에게 처리하라고 던져준다
다른스레드 » 핸들러로요청 » 루퍼의QUQUE »핸들러로전달 » 처리

스레드는 하나의 Looper를 가지며
Looper는 하나의 message queue를가짐
스레드에서 looper, handler를 생성할때 둘을 연결함
스레드종류
HandlerThread exends thread «.start를 호출해서 스레드 생성, looper와 handler를 멤버로가짐
Servicethread extends handlerthread « 서비스 스레드 종료되면 안되는것들
UI스레드
모든 UI관련 처리를 하는 singleton 스레드
ui에서 지연이 생기면 상호작용이 멈추기때문에
ui스레드 이외엔 ui에 접근할수없게해놓음
메인스레드 (UI스레드)
frameworks/base/core/java/android/app/ActivityThread.java
activitythread.java 클래스이며

public static void main(string[] args)
메인함수가있음
앱이 시작될때 생성되며,
사용자에게 보여지는 UI 접근, 업데이트를 UI스레드에 요청.
컴포넌트(액티비티, 서비스, 브로드캐스트 리시버, Application) 처리를담당.
다른스레드 클래스들
Displaythread 화면관리 스레드 ,
이 스레드를 사용하는 클래스는 displaymanager, inputmanager , windowmanager 뿐임
Connectivitythread :: 네트워크 관련
Backgroundtheread :: 백그라운드 태스크관련
surfaceview :: view 자체가 스레드인 view
동기화
구현 메서드가 여러 스레드로부터 접근되는경우
주로 원격호출에서 발생
ibinder호출이 binder와 동일한 프로세스이면 호출자의 스레드에서 실행
만약 다른프로세스로부터의 호출이면 다른프로세스의 호출도 현재 스레드에서 실행됨