목록분류 전체보기 (16)
Shunz Android Dev Note
코틀린에서 boolean 연산을 수행하는 두 가지 방법은 연산자인 && 와 || 또는 infix 함수를 사용하는 것입니다. 이들은 대부분 동일하지만 한 가지 중요한 차이점이 있습니다. 연산자들은 short circuiting을 수행하지만 infix 함수는 그렇지 않습니다. short circuiting란? 결과가 왼쪽 피연산자로부터 이미 결정된 경우 (예: 왼쪽 피연산자가 || 에 대하여 true이고 &&에 대하여 false) 오른쪽 boolean 피연산자가 수행되지 않는 최적화입니다. 다음 예를 참조하시면 좀 더 이해가 쉬울 것입니다. fun isTrue(): Boolean { println("이 함수는 true") return true } fun isFalse(): Boolean { println("..
이번 시간에는 네트워크 연결 상태를 실시간으로 옵저빙 할 수 있는 방법에 대하여 포스팅을 해 보겠습니다. Compose 기반으로 작성되었지만, Compose가 아닌 기존의 UI 개발 방식(명령형)에서도 사용을 할 수 있습니다. 솔루션1 ConnectivityObserver 라는 인터페이스를 생성합니다. 네트워크 연결 상태를 실시간 받기 위하여 Flow 형태로 응답을 받도록 메서드를 하나 선언합니다. 상태는 총 4가지를 가지고 있습니다. interface ConnectivityObserver { fun getFlow(): Flow enum class Status { Available, Unavailable, Losing, Lost } } 인터페이스를 구현한 구체 클래스를 생성합니다. getFlow()의 내..
컴포즈에서 Stable 하다는 개념은 매우 중요합니다. 그 이유중 하나는 Smart Recomposition 때문입니다. 이는 리컴포지션을 진행할 때, 모든 입력값이 Stable이고 같은 값이라면 스킵하게 된다는 것을 의미합니다. 즉, 바뀐게 없으면 화면을 다시 그리지 않겠다는 의미로 UI 렌더링을 조금 더 효율적으로 하겠다는걸 나타냅니다. 하지만, 값이 바뀌지 않았다는 확신이 없다면 무조건 재구성(재렌더링)을 진행하게 됩니다. Stable, Unstable 이란? 컴포즈는 타입을 stable, unstable로 구분을 합니다. 타입이 immutable이면 stable하다는 것을 의미하는데 이는 리컴포즈할때 컴포즈가 값이 변경 되었는지를 알아챌 수 있다는 것입니다. 반면, 타입이 unstable 하다는 ..
Jetpack Compose는 안드로이드에서 UI 개발을 훨씬 더 용이하게 만들어주었지만, 더 나은 성능을 위해 UI 효과를 제대로 관리하는 방법을 이해하는 것은 여전히 중요합니다. 이 포스트에서는, UI 효과를 효과적으로 관리하는 데 도움이 되는 세 가지 중요한 컴포저블 함수인 SideEffect, LaunchedEffect, DisposableEffect에 대해 알아보겠습니다. 왜 Side-effects(이하 부수효과) 인가? Jetpack Compose에서 부수효과의 목적은 제어되고 예측 가능한 방식으로 컴포저블 함수 밖에서 앱의 상태를 변경하는 non-UI 관련 작업을 실행할 수 있도록 하는 것입니다. 데이터베이스를 업데이트하거나 네트워크 요청을 하는 등의 부수효과는 UI 렌더링 로직과 별도로 유..