Android(34)
-
Android 구조 개편기 기본구조 -> MVVM → 클린아키텍처 + 멀티모듈 → Compose + MVI 현업 적용기 (마지막 Compose + MVI 편)
안녕하세요, 구구집사입니다.이번 글은 Android 구조 개편기 시리즈의 마지막 편, Compose + MVI 현업 적용기 입니다. 1부에서는 MVVM으로의 전환기, 2부에서는 클린 아키텍처와 멀티모듈화 과정을 다뤘습니다.이번 글에서는 Jetpack Compose 도입 이유부터, 기존 양방향 구조의 한계를 넘어서기 위한 MVI 도입기 그리고 도입 후의 저의 생각 경험까지 공유드리겠습니다. 1. XML에서 Compose로 전환하게 된 이유기존 프로젝트는 오랫동안 XML 기반 View 시스템을 사용해 왔습니다. 하지만 아래와 같은 이유로 Compose 도입을 검토하게 되었습니다.오랫동안 XML을 사용해 왔기에 Compose 도입이 필요할까 고민했지만,구글이 공식적으로 적극 지원하고 있다는 점,그리고 이미 ..
2025.05.03 -
Android 구조 개편기 기본구조 -> MVVM → 클린아키텍처 + 멀티모듈 → Compose + MVI 현업 적용기 (2부 클린아키텍처)
안녕하세요, 구구집사입니다.시작하며클린 아키텍처 도입기 — 구조적 고민에서 확장성까지"현업에서의 클린 아키텍처 도입은 어떤 의미였는지""그리고 실제로 어떤 고민과 시행착오가 있었는지" 담아봅니다. 1. 왜 클린 아키텍처를 적용하려고 했는가? 초반에는 단일 액티비티 구조에서 출발이 되어 1부의 MVVM 구조로 진행 되고 있었으나 문제가 발생하였습니다.기존 1편에서의 View , ViewModel , Repostiroy 를 나누기는 하였으나 프로젝트의 규모가 크다보니결국에는 ViewModel 이 무거워지는 형태가 발생 단순 MVVM + Repository 분리만으로는 부족또한 팀원이 늘어나면서 문제가 발생했습니다.본인 스타일대로 코드를 작성하는 상황이 늘어남.코드 일관성 붕괴 → 유지보수와 확장성 문제 가시..
2025.04.27 -
Android 구조 개편기 기본구조 -> MVVM → 클린아키텍처 + 멀티모듈 → Compose + MVI 현업 적용기 (1부 MVVM 편)
안녕하세요, 구구집사입니다. 시작에 앞서,이 글은 실제 현업 Android 프로젝트에서 아키텍처를 점진적으로 개선해온 여정을 담은 기록입니다. Android 기본구조 기반으로 출발한 프로젝트는 MVVM , 클린 아키텍처 와 멀티모듈 구조를 거치는 과정과 현재 Jetpack Compose를 도입하면서, 화면 상태와 UI 이벤트 처리의 복잡도가 높아져 그 과정에서 MVI 패턴의 필요성과 도입하는 과정들을 풀어보고자 합니다. 이번 글에서는 왜 처음 MVVM 패턴을 선택했는지, 그리고 앞으로 기존 구조와 어떻게 공존하며 현재의 MVVM + 클린아키텍처 + Compose + MVI로 확장해 나갔는지에 대해 하나씩 풀어보려 합니다. 1. 회사의 현재 Android 프로젝트의 구성은 단순 안드로이드 기본 구조현재 ..
2025.04.20 -
Android PowerManager (앱 강제로 깨우기)
안녕하세요 앱을 개발하다 보면 Doze Mode 에서 앱을 강제로 깨워야 할경우가 있습니다. 이럴때는 PowerManager api 를 사용하면 됩니다. 사용하기 앞서 주의사항 PowerManager api 는 디바이스의 전원을 관리하는 api 이므로 배터리와 연관이 큽니다. 자칫 잘못 사용했을경우 디바이스 베터리 소모가 상당하기에 PowerManager api 를 정말 사용해야 하는지 많은 고민을 하고 사용하는걸 강조 드립니다. AndroidManifest.xml javaPowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);PowerManager.WakeLock ..
2024.05.13 -
Android DeepLink onNewIntent (LifeCycle 생명주기)
1.개요DeepLink , AppLink 로 들어왔을때 Android는 어느 생명주기를 타게될까? Android 개발을 하면 제일 많이 보게되는 생명주기표 입니다. 딥링크 or 앱링크를 통해 앱에 들어왔을때 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) Log.d("MainActivity Test" , "onCreate " + intent.data)} 앱이 완전히 종료되었을때 기준 onCreate 에서 intent 에 데..
2024.05.10 -
Android Viewpager2 Auto Scroll Duration (자동 스크롤 속도 조절) java 버전
안녕하세요 이번에 프로젝트 기능중 여러이미지 를 자동으로 스크롤 하는 기능을 만들게 되었습니다. ViewPager2 를 이용하여 여러이미지 형태를 만들었는데 ViewPager2 에서 지원하는 함수중 ViewPager.setCurrentItem(Position, true) 이런 기능이 있습니다. 원하는 포지션으로 이동하는 함수입니다. 만약 5초마다 스크롤을 하게된다 하면 생각보다 스크롤 속도가 빨라 부자연스럽게 보일 수도 있고. 원하는 속도로 제어가 필요할수도있습니다. 기본형태 모습 ViewPager2 자체에 setCurrentItem 함수 기능중 스크롤 속도를 조절하는 기능은 따로 없어서 직접 구현을 해야합니다. https://stackoverflow.com/questions/57505875/cha..
2024.05.03