hong's android

[안드로이드] Handler, Content Provider, xml 레이아웃 본문

Android/Android

[안드로이드] Handler, Content Provider, xml 레이아웃

_hong 2023. 1. 14. 17:27

Handler

메인 스레드는 ui 스레드이고 다른 스레드에서 ui 처리를 하지 못하고 핸들러를 사용해야한다. 

핸들러는 Message Queue, looper에 의존적 큐와 루퍼를 통해서 다른 스레드의 메시지를 처리할 수 있다. 

 

*동기화 이슈를 차단하기위해 메인 스레드에서만 Ui를 처리한다. 동시에 같은 뷰 처리를 하면 문제가 생기기 때문에

 

 

워커 스레드는 메인 스레드에서 만든 핸들러의 sendmessage()를 통해 변경하고자 하는 내용을 담는다.

핸들러는 Message Queue에 해당 메시지를 추가하고 메인 스레드의 looper는 차례대로 Message를 꺼내고 다시 핸들러의 handleMessage()로 전달된다. handleMessage()도 메인 스레드에서 생성된것이기 때문에 메인스레드에서 메시지를 처리한다.

 

이때 Message가 필요할 때 새로운 Message 객체를 생성하면 성능상 이슈가 생길 수 있기에 안드로이드 시스템에서 제공하는 Message Pool 객체를 재사용 하게 된다.

 


Content Provider

다른 앱이 자신의 앱의 데이터에 접근 할 수 있도록 해주는 컴포넌트 

 

Content Resolver

Content Provider를 사용하기 위해서 Content Redsolver 이용한다.

 

-> 구현 방법 

만약에 외부 앱이 특정앱의 데이터가 필요하다면 Content Resolver를 통해 uri를 보내고, 해당 앱은 uri를 해석해서 데이터를 반환해준다.

 


 

xml 레이아웃 왜 사용할까?

ui요소를 따로 분리 할 수 있고, 레이아웃 구성요소들의 구조를 보기 편리해서 재사용성, 유지보수가 편해진다.

마크업 언어이다. 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어