Android 7

[Android] LiveData란 (vs StateFlow)

LiveData 란? 관찰 가능(observing)한 데이터 홀더 객체로,Activity, Fragment, Service 등의 앱 구성요소의 수명 주기(LifecycleOwner)를 인식한다. 그리고 수명 주기 인식을 통해 "활동 수명 주기 상태"에 있는 앱 구성요소 관찰자(observer)만 업데이트가 가능하다. LiveData의 이점관찰자(Observer) 패턴LiveData는 데이터가 변경될 때 Observer 객체에게 알리며, 이러한 관찰자 패턴으로 데이터가 변경될 때마다 UI를 자동으로 업데이트시킬 수 있다.생애 주기 인식LiveData의 Observer는 Lifecycle 객체와 결합되어 있어 연결된 생명주기가 종료되면 자동으로 삭제된다.관찰자 수명주기가 비활성화 상태(backstack 등..

Android/학습 2025.07.19

[Android] RecyclerView의 동작 과정

RecyclerViewAdapterLayout Manager 목록 UI를 설계할 때 개발자로는 기본적으로 이 3가지 요소로 RecyclerView 목록을 구현하고는 하는데,오늘은 목록의 동작 과정에 대해 좀 더 자세히 알아보도록 하자. 다음은 Recyclerview의 주요 구성요소에 대한 간단한 설명이다.RecyclerViewitemView가 나열되어 있는 viewGroup(ViewHolder 패턴을 강제화, 컴포넌트 패턴)Layout Manager목록의 개별 요소(ItemView)를 올바른 위치에 배치(정렬)해주는 컴포넌트 개별 항목의 위치를 정하며 사용자에게 더 이상 보이지 않는 항목 뷰(View)를 재사용할 시점을 결정한다.레이아웃 매니저(Layout Manager)는 View를 재사용하기 위해 ..

Android/학습 2025.05.16

[Android] Paging3의 PagingSource, PagingConfig와의 관계

목록형 UI를 구현할 때 개발자는 고려해야 할 것이 있다.만약 목록의 모든 데이터를 가져와 보여주려고 한다면 해당 페이지를 보여줄 때 엄청나게 많은 부하와 로딩 시간이 필요할 것이다. 그래서 개발자가 사용하는 기법은 사용자한테 보여주는 데이터 일부만을 가져와 부분 부분 보여주는 기법인데,컴퓨터에서 크롬과 같은 웹 페이지에서 1페이지 2페이지로 넘어가는 것과는 다르게 모바일에서는 폰을 그대로 스크롤하며 주르륵 뜨는 UX를 많이 경험했을 것이다. Paging 라이브러리는 로컬 저장소에서나 네트워크를 통해 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있고, 앱에서 네트워크 대역폭과 시스템 리소스를 모두 더 효율적으로 사용할 수 있도록 구현된 라이브러리이다.Paging 라이브러리의 이점은 다음과 같..

Android/학습 2025.03.29

[Android] Fragment Manager, Basic 편

일반적으로 운영 애플리케이션 담당 업무를 하게 되면,페이지 이동 같은 작업은 기존에 설계되어 있는 방식 따르면 되었기 때문에이 부분에 대해 신경을 잘 쓰지 않게 되었고, 따로 공부할 계기 및 우선순위가 계속 늦춰지고 있었다. 하지만, 처음부터 완벽하게 만들어지면 좋겠지만 그렇지 않은 경우는 늘 존재하고우리 프로젝트도 이 부분에 대한버그 픽스와 리펙토링이라는 큰 백로그가 만들어지게 되었다. 현재 프로젝트에서는 FragmentManager를 관리하여 페이지 이동을 담당하는 Object Class가 존재하였고 엄연히 Activity의 생명주기에 의존적일 수밖에 없는 FragmentManager를 Object로 어디서든 접근하여 안전장치 없이 사용되는 로직은 실제로 운영에서도 Exception을 많이 일으키고 ..

Android/학습 2025.02.16

[일상] 2025 안드로이드 탐구 영역 - 2025학년도 개발능력시험 문제지 안드로이드탐구 영역

며칠 기다리던 우편이 있었다.그것은 바로바로 2025학년도 개발능력시험 문제지안드로이드 탐구 영역  GDG Korea Android에서 진행한 활동으로 수능, 모의고사 컨셉의 이벤트!5,900원의 응시료를 제출하고 참여할 수 있었다. 아니, 말차라떼 한번 안 먹는 돈으로 이런 이벤트?! 바로 진행시켜!   사실 자취하고 있는 곳이 근린생활시설이라, 우편함이 호실마다 있지 않고 층마다 있다.그래서 호옥시 우편물을 잃어버릴까 봐 조마조마했다.(지금도 주인을 알아볼 수 없는 우편물이 폭발 직전으로 꽂혀있다) 그런데 다행히 우편이 아닌 안전하게 택배로 배달되었다! 야호! 문자 메시지까지 발송 구성품안내문/준수사항 (총 2장)안드로이드탐구 영역 문제지 경우에 따라 사은품도 동봉되어 있다고 한다.운이 좋은 참여자는..

Android 2024.12.08

[Android] Jetpack ViewModel

ViewModel비즈니스 로직 또는 화면 수준 상태 홀더로,UI 컨트롤러의 데이터를 캡슐화하여 구성 변경이 일어나도 데이터를 유지하는 것이 목적인 구성요소이다. 즉, UI에 상태를 노출하고 관련 비즈니스 로직을 캡슐화   ViewModel이 아닌 일반 Class로 UI를 상태를 관리하면 어떻까?이는 활동(Activity)이나 탐색 대상(Navigation destinations) 간에 이동할 때 문제가 될 수 있습니다. 이렇게 하면 인스턴스 상태 저장 메커니즘을 사용하여 데이터를 저장하지 않을 경우 해당 데이터가 소멸됩니다. 참고적으로, ViewModel은 Hilt 및 Navigation과 같은 주요 Jetpack 라이브러리와 Compose와의 통합을 완벽하게 지원   ViewModelStoreOwner..

Android/학습 2024.11.14

[Android] Bundle이란? (feat. Activity 간 데이터 전달에 Intent를 사용하는 이유)

BundleString key에 다양한 Parcelable 값으로 매핑key, value의 Map 형태의 데이터 구조 Parcelable와 Bundle는 IPC/바인더, 인텐트가 있는 활동 간 트랜젝션, 구성 변경 간에 일시적인 상태를 저장하는 것과 같이프로세스 경계를 ​​넘어 사용하도록 의도된 객체Parcel는 일반적인 직렬화 메커니즘이 아니며, Parcel를 디스크에 데이터를 저장하거나 네트워크를 통해 전송해서는 안 됩니다.  Bundle은 parcel을 사용하여 마샬링(marshalling) 및 언마샬링(unmarshalling)하는 데 매우 최적화되어 있습니다.  데이터를 저장하거나 전송할 목적으로 데이터 구조 또는 개체를 한 표현에서 다른 표현으로 변환하는 프로세스 마샬링(marshalling)..

Android/학습 2024.10.01