본문 바로가기

Android Kotlin23

Clean Architecture랑 MVVM은 같은 건가요? 프로젝트를 하면서 계속 고민했던 부분이였다. 이해가 되다가도 막상 코드를 보면 이게 뭐가 깨끗한건가 싶기도하고..?현업 프로젝트 막바지에 MVVM 패턴은 이런것이구나! 라는것을 살짝 깨우쳤다. 그러다보니 클린 아키텍쳐랑 MVVM은 같은건가? 에 대해 고민하기 시작했고, 책도 읽고 구글 서치 해본 내용을 정리하려한다! 나와 같은 고민하는 주니어들이 분명 많을 것이다! ( 수정요청 환영입니당 )Clean Architecture란? 코드를 짜면서 수많은 시행착오와 오류들을 겪는다. 그리고 공통적으로 나오는 치명적인 이슈들을 개선하기 위해,어떤 원칙을 만들어서 아주 이상적이고 깨끗한 구조를 만드는것이 Clean Architecture의 근간이다. 개발하면 분명히 어디선가 들어본적있는 로버트 C. 마틴이 제시한 .. 2024. 7. 19.
Android device Storage 데이터 사용에 따라 안드로이드 디바이스 저장소는 크게 4개로 이루어져있다.https://developer.android.com/training/data-storage 데이터 및 파일 저장소 개요  |  Android DevelopersDataStore offers a more modern way of storing local data. You should use DataStore instead of SharedPreferences. Read the DataStore guide for more information. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 데이터 및 파일 저developer.android.com 1. Internal Storage2. External St.. 2024. 7. 10.
Android SDK SparseArray 알아보기 kotlin 공식 문서에서 제공하는 collection overview이다. (잘 아는 List , Set , Map...) https://kotlinlang.org/docs/collections-overview.html그리고 kotlin 공식문서에 sparseArray를 검색하면 정보가 나오지 않는다. 🤔 왜냐하면 kotlin에서 제공하는 collection이 아니고, Android SDK이다.  SparseArray가 무엇인가?공식문서 해석해보기 ! SparseArray maps integers to Objects and, unlike a normal array of Objects, its indices can contain gaps. SparseArray is intended to be more .. 2024. 7. 7.
Android Kotlin WebSocket 웹소켓 이해하기 1. WebSocket이란?먼저 HTTP 프로토콜 통신은 아래와 같이 단방향으로 통신이 이뤄진다.- 클라이언트가 서버에 요청- 서버가 응답하여 클라이언트에게 요청값을 토해냄 그러나 웹소켓은 서버와 클라이언트가 실시간으로 메세지를 주고받는다. 양방향 통신이 이뤄져서 빠르고 한번 연결을 맺으면 쭉 유지된다.2. WebSocket을 써야하는 이유채팅, 좋아요 등 실시간으로 이뤄지는 작업들은 웹소켓으로 하는것이 좋다. HTTP 통신은 GET, POST 등 단순하게 주고받는 경우 괜찮을 수있다. 그런데 Retrofit은 HTTP 통신을 기반으로 작동하므로, 실시간 채팅이나 즉각 카운팅이 필요한 경우에는 Android 에서도 웹소켓을 구현해야한다. Retrofit만으로는 네트워크 통신이 불안정 할 수있다. (실제 .. 2024. 6. 3.
Android Kotlin ProcessCameraProvider 커스텀 카메라를 만들기 전에 우선 Preview 화면을 비동기 방식으로 구현해보았다.  1. 초기 코드는 아주 기본적인 프리뷰를 구현하기 위해서 공식문서에서 알려준 방법을 기준으로 작성해보았다.  private fun startCamera() { val cameraProviderFuture = ProcessCameraProvider.getInstance(requireContext()) cameraProviderFuture.addListener({ val cameraProvider = cameraProviderFuture.get() val preview = Preview.Builder().build().also { .. 2024. 6. 2.
Android Kotlin redundant sam constructor observer push 하려던 중에 Lint를 확인하니 redundant sam constructor라는 경고 표시가 되어있어서 확인해보았다. redundant sam constructor: 옵저버에 나온 경고표시였다.  SAM :  인터페이스에 구현된 함수가 1개일 경우에는 생략가능하다! 알고보니까 Observer는 단일 함수를 구현하는 인터페이스였다. 회색으로 표시된 Observer를 제거했다./** * A simple callback that can receive from [LiveData]. * * @see LiveData LiveData - for a usage description.*/fun interface Observer { /** * Called when the data is changed.. 2024. 6. 1.