💡 Coroutine Dispatcher처음엔 이 디스패쳐가 그냥 스레드 종류를 정해주는 역할을 한다고만 생각했다.하지만 그 이름의 뜻을 살펴보면 Dispatch = ‘보내다’ 라는 뜻이다. 그래서 생성된 코루틴을 어떤 스레드로 보낼지를 정해주는 것이 바로 Coroutine Dispatcher 이다.디스패처는 자신이 사용할 수 있는 스레드풀에 스레드를 생성해 관리하고, 상황에 맞춰 코루틴을 분배해 스레드에 전달한다. 기본적으로 제공하고 있는 디스패처는 다음과 같다. ✔️ Dispatchers.Mainmian 스레드를 관리하는 디스패처이다 main 스레드는 한 개만 생성된다고 알고있다. 따라서 해당 스레드를 blocking 해서 사용하게 되면 ANR 에러가 발생할 수 있기 때문에 사용시 유의해야한다.co..
Android
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ3jQY%2FbtsIEbqew5A%2FwKnwGtUKk8i7W5gPl90Zk0%2Fimg.png)
💡 코루틴(Coroutine)이란?프로세스 = 실행중인 프로그램, 실행 코드가 메모리에 올라가면 프로세스가 시작된다여러개의 프로그램을 사용중이라면 프로세스도 여러개스레드 = 하나의 프로세스 안에 존재하는 여러개의 실행 단위이다스레드가 꼴랑 하나밖에 없단면 프로그램은 너무 힘들 것이다. 그래서 CPU가 여러개인 것도 이런 부분을 커버해주기 위해서 여러개의 스레드를 만들어 여러 수행을 동시에 진행하는 것을 도와주는 것이다코루틴 = 스레드 안에 존재하는 작업 단위 (스레드의 스레드, 경량 스레드 라고 부르기도 한다) 안드로에드에서 가장 중요한 스레드는 메인 스레드 로 UI 를 그려주고 사용자가 화면과 상호작용할 수 있도록 해주는 스레드이다. 그런데 이 메인 스레드가 너무 바쁘면 메인 스레드가 블로킹 되고 상..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXaiAv%2FbtsFm33DiRG%2F9CbHKo1odbp5KJLzmMdTFk%2Fimg.png)
위 사진과 같은 화면을 개발하기 위해 Persistent Bottom Sheet 를 개발하게 되었다. 사용자의 액션에 따라 바텀시트를 펼치고 닫고 하는 동작이 중요한데 약간 까다로운? 다소 복잡한 요구사항을 만족시켜야 해서 구현하는데에 고민을 좀 했었다. ✔️ 기능 요구사항바텀시트가 열린 상태에서 외부를 클릭하면 바텀시트가 Hidden바텀시트가 열린 상태에서 외부를 드래그하면 바텀시트는 유지되고 드래그만 가능바텀 시트 외부를 클릭하게 되면 바텀시트 자체가 숨겨져야 하는데 단순 클릭이 아닌 외부 화면을 드래그 하는 경우에는 바텀시트는 가만히 있고 그냥 맵 화면 탐색과 같은 기능을 제공해야 했다. ✔️ 문제상황바텀시트 외부 즉, 네이버 지도가 표시될 map_fragment를 사용자가 단순 터치를 했는지,..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl12mE%2FbtsEIQQWqkS%2FxK0Skg6FQvWmWugkoKq9D0%2Fimg.png)
2023년 중후반부터 클린아키텍쳐가 핫하다는걸 알게 되었고 안드로이드 권장 아키텍쳐도 유사한 구조를 띄고 있다고 생각해 관심을 갖게 되어 조금씩 훑어보곤 했었는데 2024년 새롭게 시작하는 AVIRO 프로젝트에서 클린 아키텍쳐를 도입해보면서 공부한 내용을 정리해보려고 한다. 💡 클린아키텍쳐는 뭘까? UI 와 Database를 분리 외부적인 설정에 독립적 프레임워크에 의존적이지 않은 공통적인 코드 개발 가능 클린아키텍쳐를 적용하지 않았던 프로젝트를 보면 하나의 패키지 폴더에 UI, Data, Utils 등 여러 코드들이 혼재되어 들어있다. 이때 당시에는 Repository 와 Datasource를 구분하고 추상화하여 사용하는 방법만을 중요하게 생각했기 때문에 그 이외의 구조에 대해서는 크게 신경쓰지 않았었..