목록전체 글 (16)
주완 님의 블로그
Android Compose 의 @Immutable 와 @Stable Android Compose 의 @Immutable 와 @StableJetpack Compose에서 @Immutable와 @Stable 어노테이션은 컴포저블 함수의 리컴포지션을 최적화하는 데 중요한 역할을 합니다. 각각의 어노테이션은 특정한 상황에서 사용되며, 사용하는 것과 사용하지choi-dev.tistory.com Kotlin Collections Immutable: ImmutableList vs PersistentList 이해하기 Kotlin Collections Immutable: ImmutableList vs PersistentList 이해하기Kotlin의 kotlinx.collections.immutable는 불변 컬렉션을 ..
동아리에서 합동 세미나를 진행하던 와중…. 아래와 같은 교환하기 뷰를 담당하게 되었습니다 기획과 디자인에서 요구한 플로우는 간단했습니다. 교환하기 버튼을 누르면 API 호출 후 화면이 전환되는 것까지였죠. 다이얼로그나 교환 완료 처리 같은 건 필요하지 않았습니다. 하지만 Coroutine에 대해 배웠던 내용을 떠올리며, 문득 이런 생각이 들었습니다. 만약 사용자가 교환하기 버튼을 연타하면 어떻게 될까?문제 상황을 가정하자면 : 교환하기 버튼을 연타하면 요청된 수만큼 포인트가 차감되는 상황으로 잡아봤습니다.private val _purchaseSuccess = MutableStateFlow(false)val purchaseSuccess: StateFlow = _purchaseSuccess// 현재 코드*..
사실 제가 Hilt 를 쓰면서도 헷갈리는 것도 많고.. 제대로 알고 쓰고 있나 할 때가 많아가지고 한 번 낋여와 봤습니다.Hilt 를 사용하기 전 수동으로 의존성을 주입하는 것을 먼저 경험하시고 사용하는게 좋을 것 같습니다.Hilt를 사용한 종속 항목 삽입 | App architecture | Android Developers Hilt를 사용한 종속 항목 삽입 | App architecture | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. Hilt를 사용한 종속 항목 삽입 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Hilt는 프로젝트에서 종속developer.android.com 일단 공식문..
아키텍처를 적용할 때 data, domain, UI layer를 각각 나눠서 패키지를 관리하는 경험을 했습니다..특히 서버 통신을 진행해보며 Data layer, UI layer에 대한 개념은 어느 정도 잡혔었는데요하지만 Domain Layer는 좀 애매합니다. Architecture를 공부하다 보면 Domain Layer와 UseCase를 반드시 사용해야 하는 것처럼 느껴지는데요, 실제 경험했던 앱잼 프로젝트들을 살펴보면:어떤 팀은 많은 기능을 UseCase로 만들고어떤 팀은 로그인/회원가입 정도만 UseCase로 분리하고또 어떤 팀은 아예 Domain Layer 없이 개발합니다Domain Layer는 언제 필요할까요? Google 권장 아키텍처와 Clean Architecture의 차이를 비교하고, ..
동아리 과제 진행중에 질문이 들어와 해당 내용에 대해 답변을 작성하며 공부한 내용을 적어봤습니다.Jetpack navigation을 사용해서, login, signup, home, mypage 화면 전환에 적용하는 과정이었습니다. // ============ Navigation Graph Markers ============@Serializabledata object AuthGraph@Serializabledata object MainGraph// ============ Route Hierarchy ============// Interface: navigation에 직접 사용 Xsealed interface Routesealed interface Auth : Routesealed interface Mai..
이미지 라이브러리를 왜 써야할까? 라는 주제로 탐구를 시작해 보았습니다. 먼저 저희가 Image 관련 작업을 할 때 사용하는 Image , AsyncImage 컴포져블 함수에 대해서 알아봅시다.ImageImage 컴포저블은 Jetpack Compose 의 기본요소이미지 로드 | Jetpack Compose | Android Developers보통 언제쓸까?로컬 리소스, 비트맵 또는 이미 메모리에 로드된 ImageVector 와 같은 이미지 데이터를 표시할 때 사용합니다.작동 방식은?이미 앱의 실행 파일 내에 포함되어 있거나, 함수가 호출될 때 이미 데이터가 준비된 이미지를 즉시 화면에 그립니다. ( 추가적으로, 네트워크 통신이나 비동기적인 로딩 과정을 처리하지 않습니다)비동기 지원을 하나?앞서 말..
Manifest Android InterView에 대한 내용을 읽다 문득, 생각이나서 갖고와 봤습니다.Jetpack Paging 라이브러리란 개념인데요, 한 번 낋여보도록 하겠습니다. Jetpack Paging 라이브러리란?Manifest Android InterView p.282 발췌대규모 데이터 셋을 청크 또는 “페이지” 단위로 로드하고 표시하는 프로세스를 돕도록 설계된 안드로이드 아키텍쳐 컴포넌트입니다. 데이터 베이스나 API 와 같은 소스에서 데이터를 효율적으로 가져와야 하는 애플리케이션에 특히 유용하며, 메모리 사용량을 최소화하고 RecyclerView 기반 UI의 전반적인 성능을 향상시킵니다.Paging 라이브러리는 데이터를 점진적으로 로드하기 위한 구조화된 접근 방식을 제공합니다. 데이터 캐..
해당 프로젝트에서 회원가입 플로우는 총 4단계로 구성되어있었다. 각 단계마다 screen,viewmodel,navigation을 독립적으로 관리를 했었다. 근데 회원가입이라는 하나의 흐름에서 계속해서 데이터를 저장한 상태 + Loginscreen 이라는 다른 presentation 에서 넘어온 데이터를 계속 관리해야되는데 , 데이터와 상태를 유지하는 것이 어려웠다.각 구조들을 분리해서 진행하다보니, 데이터의 누락, 상태의 변화에 대해서 한 사이클 동안 정상적으로 이루어지지 않는다.한 사이클이란 개념(?)에서 viewmodel 하나로 관리하는데, 구현해보니 이런식으로 서버연결과 상태관리가 가능하긴했다. 그러나 이 또한 하나의 viewmodel 에 대한 책임이 많아지고 코드가 길어지는 상황이 발생했다. (이..
구조 분해 선언과 component 함수디스트럭쳐링(Destructuring) 이란?한 객체가 가진 여러 값을 쪼개어 한 번에 여러 변수에 초기화 할 수 있게 해 주는 코틀린 문법이다.문법 형태: kotlinval P = Point(10, 20)val (x, y) = P // x = 10, y = 20println (x)>> 10println (y)>> 201. 구조 분해 선언이란?구조 분해 선언이 일반 변수 선언과 비슷해 보이지만 .. 좌변에 여러 변수를 괄호로 묶고, 우변에 분해할 객체를 지정한다는 점이 다르다.val (a, b) = obj → obj 내부의 component1() 결과를 a에, component2() 결과를 b에 할당한다.2. 왜 가능한가? 컴파일러가kotlin val (a, b..
Jetpack Compose에서 테스트 | Android Developers Jetpack Compose에서 테스트 | Android Developers이 Codelab에서는 Jetpack Compose로 만든 UI를 테스트하는 방법을 알아봅니다. 격리 테스트, 디버깅 테스트, 시맨틱 트리, 동기화를 알아보면서 첫 번째 테스트를 작성합니다.developer.android.comhttps://developer.android.com/develop/ui/compose/testing?hl=ko Compose 레이아웃 테스트 | Jetpack Compose | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. Compose 레이아웃 테스트 컬..