전체 글

💡 코루틴(Coroutine)이란?프로세스 = 실행중인 프로그램, 실행 코드가 메모리에 올라가면 프로세스가 시작된다여러개의 프로그램을 사용중이라면 프로세스도 여러개스레드 = 하나의 프로세스 안에 존재하는 여러개의 실행 단위이다스레드가 꼴랑 하나밖에 없단면 프로그램은 너무 힘들 것이다. 그래서 CPU가 여러개인 것도 이런 부분을 커버해주기 위해서 여러개의 스레드를 만들어 여러 수행을 동시에 진행하는 것을 도와주는 것이다코루틴 = 스레드 안에 존재하는 작업 단위 (스레드의 스레드, 경량 스레드 라고 부르기도 한다) 안드로에드에서 가장 중요한 스레드는 메인 스레드 로 UI 를 그려주고 사용자가 화면과 상호작용할 수 있도록 해주는 스레드이다. 그런데 이 메인 스레드가 너무 바쁘면 메인 스레드가 블로킹 되고 상..
· Android
위 사진과 같은 화면을 개발하기 위해 Persistent Bottom Sheet 를 개발하게 되었다. 사용자의 액션에 따라 바텀시트를 펼치고 닫고 하는 동작이 중요한데 약간 까다로운? 다소 복잡한 요구사항을 만족시켜야 해서 구현하는데에 고민을 좀 했었다. ✔️ 기능 요구사항 바텀시트가 열린 상태에서 외부를 클릭하면 바텀시트가 Hidden 바텀시트가 열린 상태에서 외부를 드래그하면 바텀시트는 유지되고 드래그만 가능 바텀 시트 외부를 클릭하게 되면 바텀시트 자체가 숨겨져야 하는데 단순 클릭이 아닌 외부 화면을 드래그 하는 경우에는 바텀시트는 가만히 있고 그냥 맵 화면 탐색과 같은 기능을 제공해야 했다. ✔️ 문제상황 바텀시트 외부 즉, 네이버 지도가 표시될 map_fragment를 사용자가 단순 터치를 했는..
· Android
2023년 중후반부터 클린아키텍쳐가 핫하다는걸 알게 되었고 안드로이드 권장 아키텍쳐도 유사한 구조를 띄고 있다고 생각해 관심을 갖게 되어 조금씩 훑어보곤 했었는데 2024년 새롭게 시작하는 AVIRO 프로젝트에서 클린 아키텍쳐를 도입해보면서 공부한 내용을 정리해보려고 한다. 💡 클린아키텍쳐는 뭘까? UI 와 Database를 분리 외부적인 설정에 독립적 프레임워크에 의존적이지 않은 공통적인 코드 개발 가능 클린아키텍쳐를 적용하지 않았던 프로젝트를 보면 하나의 패키지 폴더에 UI, Data, Utils 등 여러 코드들이 혼재되어 들어있다. 이때 당시에는 Repository 와 Datasource를 구분하고 추상화하여 사용하는 방법만을 중요하게 생각했기 때문에 그 이외의 구조에 대해서는 크게 신경쓰지 않았었..
· Android
💡 왜 사용 하는가? 검색하기 기능을 구현하면서 화면에 많은 검색결과를 리스트로 보여줘야 했다. 보여줘야 할 결과가 많기 때문에 일반 리스트로 구현하는 것보다는 리사이클러뷰로 재활용성을 높이는게 중요하다고 생각했다. 그리고 기본적으로 데이터바인딩을 사용해 MVVM 패턴을 구현하고자 했는데 외부 서버로부터 받아온 검색 결과를 어떻게 동적으로 리사이클러뷰에 표시해줘야 할지 고민이 되었다. 💡 코드 설명 ✔️ SearchViewModel MVVM 패턴을 사용하게 되면 모델로부터 데이터를 요청해 뷰모델에서 livedata나 flow 변수에 데이터를 홀드하고 있을 것이다. 또한 안드로이드 아키텍쳐를 사용하면 domain, data 레이어를 통해 데이터를 가져올텐데 이런 로직 까지 다 쓰면 글이 너무 길어지니 생략..
gangmini
게으른J 의 테크로그