Android164 [Android] 프래그먼트는 왜 기본 생성자로만 만들어야하는가? Fragment는 누가 만들까?우리가 Fragment()를 직접 만들어서 FragmentManager를 통해 화면에 붙이는 경우도 있지만,Android 시스템이 자동으로 Fragment를 다시 생성하는 경우도 있습니다. 예를 들면:화면이 회전됐을 때사용자가 앱을 나갔다가 돌아왔을 때시스템이 메모리 부족으로 Fragment를 날렸다가 다시 복구할 때이럴 땐 우리가 만든 코드가 아니라, Android 시스템이 직접 Fragment를 생성합니다. 어떤 문제가 발생할까?Fragment를 직접 생성자에 값을 넣어서 만들면 이렇게 되죠class MyFragment(val name: String) : Fragment() { // 위험한 방식 ❌} 이렇게 만들면, 시스템이 MyFragment()를 다시 만들려고 .. 2025. 3. 31. [Android] Bundle의 용량 (feat. TransactionTooLargeException) Activity 또는 Fragment 간 데이터를 전달할 때 Intent 또는 Bundle 클래스를 사용할 때가 있습니다. 하지만 실제로 Bundle을 이용한 전달 가능한 데이터 크기에 제한이 있으며, 이를 초과할 경우 TransactionTooLargeException 예외가 발생하여 애플리케이션이 종료될 수 있습니다. Android 공식 문서에서는 Activity 또는 Fragment 간 데이터 전달 시 데이터 크기를 제한해야 한다고 권장하고 있습니다. 하지만 특정한 고정 크기를 명확하게 제시하지 않고 "몇 KB 이하로 제한할 것"이라고 애매하게 표현하고 있습니다.이러한 이유는 Android 시스템의 Binder 트랜잭션 메커니즘과 관련이 있습니다. Binder 트랜잭션과 데이터 크기 제한Androi.. 2025. 3. 13. [Android] Compose의 부수효과(SideEffect) 사이드 이펙트(Side-Effect)란?사이드 이펙트(Side-Effect) 란, 컴포저블 함수의 범위를 벗어나 외부 상태 변화나 처리를 하는 것을 의미합니다.컴포저블은 리컴포지션(Recomposition)이 예측 불가능하고, 실행 순서가 변경될 수도 있으며,심지어 특정 리컴포지션이 폐기될 수도 있기 때문에, 컴포저블에는 사이드 이펙트가 없는 것이 좋습니다. 하지만, 일부 경우에는 사이드 이펙트가 필요할 수도 있습니다. 예를들어 스낵바를 표시하거나 특정 상태 조건에 따라 다른 화면으로 이동하는 등 일회성 이벤트를 트리거할 때입니다.이러한 작업은 컴포저블의 생명주기를 인식하는 환경에서 실행되어야 합니다. 이번 포스팅에서는 Jetpack Compose에서 사이드 이펙트를 처리하는 다양한 API에 대해 알아보.. 2025. 3. 9. [Android] Compose 상태 호이스팅 위치 정하기 Compose 애플리케이션에서 UI 상태를 어디에 위치시켜야 할까?Compose 애플리케이션에서 UI 상태를 어디에 위치시킬지(호이스팅할지) 는 UI 로직 또는 비즈니스 로직이 필요하냐에 따라 결정됩니다. 이 문서는 두 가지 주요 시나리오를 설명합니다.UI 로직비즈니스 로직권장사항 (Best Practice)1️⃣ UI 상태는 해당 상태를 읽고 수정하는 모든 컴포저블의 최소 공통 부모(Lowest Common Ancestor)로 끌어올려야 합니다.2️⃣ 상태는 최대한 상태를 소비하는 곳과 가깝게 유지해야 합니다.3️⃣ 상태를 소유한 컴포넌트(State Owner)는 불변(Immutable) 상태와 이를 수정할 수 있는 이벤트를 외부에 노출해야 합니다. 꼭 UI 상태를 Composition 내부에서만 관리.. 2025. 3. 7. [Android] Compose 상태관리 앱에서 상태(State)란 시간에 따라 변경될 수 있는 모든 값을 의미합니다. 이는 매우 광범위한 정의로, Room 데이터베이스부터 클래스 내 변수까지 모든 것을 포함합니다.모든 Android 앱은 사용자에게 상태를 표시합니다. Android 앱에서 상태의 몇 가지 예는 다음과 같습니다.네트워크 연결을 설정할 수 없을 때 표시되는 스낵바(Snackbar)블로그 게시글 및 해당 게시글에 달린 댓글사용자가 버튼을 클릭할 때 재생되는 리플(Ripple) 애니메이션사용자가 이미지 위에 그릴 수 있는 스티커Jetpack Compose는 Android 앱에서 상태를 어디에, 어떻게 저장하고 사용할지를 명확하게 정의할 수 있도록 도와줍니다. 이번 포스팅은 상태와 컴포저블(Composable) 간의 연결 및 Jetpa.. 2025. 3. 7. [Android] Compose의 UI 렌더링 동작 매커니즘 다른 대부분의 UI 툴킷과 마찬가지로, Compose는 여러 개의 구분된 단계(Phase)를 거쳐 프레임을 렌더링합니다.Android의 기존 View 시스템을 살펴보면, 측정(Measure), 배치(Layout), 그리기(Drawing)의 세 가지 주요 단계를 가집니다.Compose도 이와 유사하지만, 가장 처음에 "Composition"이라는 중요한 추가 단계가 존재합니다. 프레임의 세 가지 단계Compose에는 세 가지 주요 단계(Phase)가 있습니다. 1. Composition: 어떤 UI를 표시할지 결정Compose가 컴포저블 함수를 실행하여 UI의 구조를 생성하고, 이를 설명하는 Composition을 만듭니다.2. Layout: UI를 어디에 배치할지 결정이 단계는 두 가지 과정으로 구성됩니.. 2025. 3. 7. 이전 1 2 3 4 5 6 7 ··· 28 다음