본문 바로가기

Android4

[Android] Jetpack Compose에서 Props drilling을 피하는 패턴 실무 코드를 보면서 고민한 내용들안드로이드에서도 JetpackCompose를 사용하면서점차 선언형 프로그래밍이 대세로 들어섰다. 그러나, 복잡한 도메인이나 구조를 짜면서 Callback을 넘겨주는 상태호이스팅을 사용할때,호이스팅이 항상 정답은 아니다. 도메인이 복잡하거나, 요구사항으로 인해 로직구조가 여러군데서 파편화되거나,같은 화면인데, 컴포넌트간 거리가 먼경우, props drilling이 매우 깊어질 수 있다. 즉 컴포즈함수를 5~7군데 이상이나 들어가는 복잡하고 유지보수가 어려운 구조가 생길 수 있다. 이에 대한 해결법은 무엇이 있을까?1. 호이스팅을 그대로 사용// 최상위 컴포저블@Composablefun ParentScreen(viewModel: ParentViewModel = viewMod.. 2025. 4. 11.
[Android] 선언형과 리액티브 프로그래밍을 왜 사용하는가 코드를 수정하면서 느낀점들왜 리액티브 프로그래밍인가XML 기반의 메인액티비에 로직이 많은 코드를 수정하면서코틀린에서도 단순 suspend함수가 아닌 flow를 사용하는지를 체감하게 되었다. 1. 기존 명령형 시스템의 한계- UI 상태변경시 모든 변경점에서 상태값을 업데이트해야한다.- 즉, 현재 액티비티가 아닌, 다른 프래그먼트에서 값을 수정시, 메인액티비티의 콜백을 사용해야한다.- 이로인한 보일러 플레이트코드 과다, 동일한 코드의 복붙으로 관리포인트가 증가한다. 2. 선언형 접근의 이점- 무엇을 보여줘야하는가(What)를 정의만 하면, 어떻게(How)는 프레임워크가 처리한다.- 불변성의 개념과 함께 사용되므로, SideEffect에 대해서 걱정할 필요가 없어진다.   특히 체감되는 부분은 다음 예제와 같.. 2025. 4. 7.
[Android] 아키텍처 정리 안드로이드는 유독 react, flutter와는 아키텍처구조가 참 특이하다. 안드로이드 특성상 웹이랑은 코드 작성 방식도 다르고, 통신을 다루는 방법, DI, class와 같은 것들이 너무나 다르다. 가장 큰 차이를 만들어내는 이유는 싱글쓰레드와 멀티쓰레드로 인한 구조적 차이 때문인것 같다. 궁금했던 점들을 적어본다. repository 패턴의 network vs local_db의 추상화안드로이드에서는 repository로 외부를 인터페이스로 막아버리고 내부에서 remoteDatasource, localDatasoure를 두고 또다시 remote에서는 retrofit, local에서는 room을 쓰는 경우가 많다.클래스가 과도하게 많다고 느껴졌다. 내가 생각하는 해당 구조의 단점은 다음과 같았다. ✅ .. 2025. 1. 31.
[Android] Navigation 정리 프론트엔드 입문이나 프로젝트 세팅에서 가장 중요한거는 네비게이션 세팅이라고 생각한다. 2025년 현재 안드로이드 컴포즈에서 가장 기본적인 네비게이션에 필요한 개념들은 다음과 같다.- NavController- NavBackStackEntry- SavedHandleState- ViewModel  📌 ViewModel과 SavedStateHandle의 관계 1. ViewModel은 기본적으로 프로세스 종료 시 유지되지 않음 • ViewModel은 구성 변경(Configuration Change)(예: 화면 회전) 시에도 유지되는 특징이 있다. • 하지만, 안드로이드 시스템이 앱을 강제로 종료했다가 다시 복원하는 경우 ViewModel도 사라짐. 1. 사용자가 홈 버튼을 눌러 앱을 백그라운드로 보냄2. 안드.. 2025. 1. 30.