전체 글29 Android StateFlow DataBinding 중 Cannot find a setter 문제 Cannot find a setter for that accepts parameter type 'kotlinx.coroutines.flow.StateFlow' If a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches. 브랜치를 옮기기 전에는 잘 되었으나 브랜치를 옮기고 나니 에러가 발생 Binding 타입 등에도 문제가 없지만 오류가 발생하여 여러가지를 시도해보았습니다 StateFlow가 정상적으로 동작하지 않는 판단에 Coroutine 버전을 올려주었더니 해결 완료 2023. 9. 29. Java는 Stack과 Queue를 ArrayDeque로 써야 하는 이유!! Java ArrayDeque 써야하는 이유 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. ArrayDeque 먼저 ArrayDeque의 특징에 대해 알아보겠습니다. 더블 엔드 큐: 큐(Queue)의 선입선출(FIFO)과 스택(Stack)의 후입선출(LIFO)을 모두 지원하는 자료 구조입니다. 큐의 앞과 뒤에서 원소를 추가하거나 제거할 수 있습니다. 내부 배열 기반: ArrayDeque는 내부적으로 동적 배열(dynamic array)을 사용하여 구현됩니다. 배열은 연속된 메모리 공간에 요소를 저장하므로 인덱스를 이용한 빠른 접근이 가능합니다. 동적 크기 조절: 배열 기반이지만 내부적으로 배열의 크기를 동적으로 조.. 2023. 8. 28. 자바의 HashSet, HashMap 코드와 함께 더 알아보기 자바의 HashSet, HashMap 코드와 함께 더 알아보기 https://www.youtube.com/@ez./videos 유튜브 “쉬운 코드”님의 유튜브를 참고하여 작성합니다. 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. HashSet, HashMap을 알아보기 위해 먼저 Hash에 대해 설명하겠습니다. Hash 란? 어떤 데이터를 고정된 길이의 문자열로 변환하는 함수를 의미합니다. 해시 함수를 통해 일정한 길이의 해시 코드를 출력하고 이 해시 코드를 통해 데이터의 무결성을 검증하거나 검색을 빠르게 하기 위해 사용됩니다. 그러면 Hash를 사용한 자료구조 형태에 대해 알아보겠습니다. 위처럼 나온 해시 코드.. 2023. 8. 26. 오픈소스 스터디 후기, 그리고 Coroutine Scheduler 코드 분석 오픈소스 스터디 후기와 Coroutine Scheduler 코드 분석 GDG 인천/송도와 함께 진행한 오픈소스 스터디를 참석하고나서 배운 점과 함께 후기를 남겨보려고 합니다. 그리고 마지막에 제가 발표했던 Coroutine Scheduler에서 Global Queue에 Task를 add하는 과정에 대해서 설명해보겠습니다. 진행 오픈소스 스터디는 총 4주간 진행되었습니다. 매주 일요일마다 GDG 인천/송도에서 지원해주신 장소에서 3~4명씩 발표를 하는 형식으로 진행됐습니다. (간단한 간식도 지원해주셨습니다 ㅎㅎ) 배운점과 후기 처음 스터디 장소에 모여서 각자 자기소개를 했는데 다들 뛰어나신 분들만 있는 것 같아 조금 쫄(?)리기도 했지만 오히려 더 좋다고 생각했습니다. 현업자분들이 대부분이셨기 때문에 이런.. 2023. 7. 17. 안드로이드 서비스(Service) 알아보기 서비스(Service) 알아보기 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 서비스에 대해 공부한 내용을 정리하고 설명해드리려고 합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. 안드로이드에서 중요한 서비스에 대해 설명하려 합니다. 서비스는 안드로이드 4대 컴포넌트 중 하나 입니다. 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소로 백그라운드에서 러닝 트래킹을 실행하거나 음악을 재생할 때 사용합니다. 서비스는 메인 쓰레드에서 동작하기 때문에 ANR 발생을 조심하여 사용해야합니다. 서비스는 startService() 와 bindService() 로 2가지 방법으로 실행할 수 있습니다. startService() startSer.. 2023. 6. 19. Paging, 안드로이드에 맞는 커서 페이징 방식으로 구현하기 Paging, 안드로이드에 맞는 커서 페이징 방식으로 구현하기 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 프로젝트를 진행하면서 고민했던 페이징 방식에 대해 설명드리려고 합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. Paging? 엉청나게 많은 데이터를 서버에서 한 번에 가져와 보여주려고 하면 무리가 있기 때문에 페이지 단위로 나누어 보여주는 것을 페이징이라고 합니다. 흔히 볼 수 있는 카페 게시글 형태가 페이징을 사용해서 보여주는 대표 예입니다. Offset 방식 카페 게시글 형태와 같은 경우 쓰는 방식입니다. 시작 점인 Offset과 시작 점으로부터 몇 개를 가져올 것인 지 Limit을 정해 데이터를 가져오는 방식입니다. Offset이 1, L.. 2023. 6. 6. 코틀린(Kotlin)과 자바(Java)의 차이점 코틀린(Kotlin)과 자바(Java)의 차이점 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 코틀린과 자바의 차이점에 알게된 내용을 알려드리려고 합니다. 이해가 안되는 내용이나 제가 잘못 적은 부분이 있다면 꼭 댓글 남겨주세요. 코틀린과 자바에 대해 조금 아시는 분이라면 코틀린이 자바보다 문법이 간결하며 사용이 편해 생산성이 증대되고 Nullable 타입이 존재하기 때문에 널 안정성을 갖고 있다는 것을 알고 계실 것 입니다. 이 부분에 대해 더 자세히 알아보고 다른 장점에 대해서도 설명해드리려고 합니다. 생산성 1. 문법 Kotlin은 세미 콜론을 작성하지 않고 여러 함수들이 사용하기 편하게 작성되어 있습니다. String으로 타입을 변경할 때에도 변수 뒤에 .toString() 만 .. 2023. 6. 1. CoroutineDispatcher.Main.immediate 알아보기 Dispatcher.Main.immediate 알아보기 안녕하세요 안드로이드 개발자가 되기 위해 노력하는 서경원입니다. 코루틴 관리를 효과적으로 하고자 공부했던 내용을 공유해보려고 합니다. 코루틴에 대한 기본적인 내용과, Dispatchers.Main.immediate, 코루틴의 동작을 담고 있습니다. 여러분들은 viewModelScope의 내부를 들여다본 적이 있으신가요?? 아래는 viewModelScope의 내부 코드 입니다. public val ViewModel.viewModelScope: CoroutineScope get() { val scope: CoroutineScope? = this.getTag(JOB_KEY) if (scope != null) { return scope } return se.. 2023. 5. 31. Clean Architecture 궁금했던 점 살펴보기 Clean Architecture 궁금했던 점 살펴보기 안녕하세요 이번에는 Clean Architecture에 대한 주의점과 궁금했던 부분에 공부한 내용을 공유해드리려고 합니다. Clean Architecture에 대한 기본 개념에 대한 설명은 너무 많은 블로그가 존재하기 때문에 생략하고 설명드리겠습니다. 클린 아키텍처는 왜 유지보수에 용이할까? 관심사를 분리함으로써 필요한 계층만 추가, 수정하면 되므로 더 편리합니다. 결합도를 낮추어 수정에 용이합니다. 의존성 주입을 사용해 결합도를 낮추도록 합니다. 이렇게 하면 상위 계층이 하위 계층의 구현으로부터 독립되기 때문에 하위 계층의 변화에 영향을 받지 않습니다. (의존성 역전 원칙) UseCase가 필요한 이유 UseCase가 없으면 ViewModel이 비.. 2023. 5. 31. 이전 1 2 3 4 다음