일반적인 Android 앱은 Activity/Fragment, Service, Content Provider, Broadcast Receiver 등의 여러 App Component(앱 구성요소) 들로 구성되어 있다. (안드로이드 4대 컴포넌트) 개발자는 이러한 앱 구성요소 대부분을 manifest 파일에서 선언 -> Android OS가 이 manifest 파일을 사용하여 기기를 사용하는 사용자의 전반적인 작업 환경을 망가뜨리지 않으면서 앱을 이 환경에 자연스럽게 통합하는 방법을 결정한다. 사용자의 전반적인 작업 환경(모바일 앱 사용자 환경)이란 예를 들어 Android 앱을 사용하는 유저는 짧은 시간 내에 여러 앱을 실행할 때가 많다. 따라서 앱이 사용자 중심의 다양한 workflow에 맞게 조정될 수 있어야 한다. ... 앱 구성요소에 앱 데이터나 상태를 저장해서는 안 되며 앱 구성요소가 서로 종속되도록 개발하면 안된다 https://choheeis.github.io/newblog//articles/2020-05/android-clean-architecture
fragment VS activity
( https://charlezz.medium.com/activity-vs-fragment-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%84%A0%ED%83%9D%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C-56ce7fa2bfc4 )
20년에 액티비티를 사용해서 프로젝트를 진행했을 때는 xml 파일의 구성요소 저장 + 비즈니스 로직 구성 모두 하나의 액티비티 내에서 작업했었는데 프레그먼트를 사용하기 위해서는 따로 뷰 모델이란 것이 필요한 것 같다...(확실하지 않음)
MVVM은 21년 iOS 개발을 공부하면서 들은 적 있다(그때도 어려워서 자세히 공부하진 않았다..)
근데 MVVM 말고 AAC(android architecture components)도 있는 것 같다. 머리 터짐
Android Clean Architecture 두 가지 원칙
( https://choheeis.github.io/newblog//articles/2020-05/android-clean-architecture )
ViewModel은 Activity/Fragment와 같은 UI 구성요소에 데이터를 제공하고 Model과 커뮤니케이션하기 위한 데이터 처리 비즈니스 로직. 예를 들어, ViewModel은 UI 구성요소에 데이터를 업데이트하기 위해 ViewModel 하위 단계인 Repository를 호출하고 사용자 요청을 전달받아 데이터를 수정하는 작업을 할 수 있다.
단, ViewModel은 UI 기반 클래스가 아닌 일반 클래스이므로 UI에 대해 전혀 알지 못한다. 따라서 Activity나 Fragment의 수명주기 변경에 영향을 받지 않는다.
ViewModel이란 무엇인가? ViewModel 초보를 위한 가이드
( https://charlezz.medium.com/viewmodel%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-viewmodel-%EC%B4%88%EB%B3%B4%EB%A5%BC-%EC%9C%84%ED%95%9C-%EA%B0%80%EC%9D%B4%EB%93%9C-e1be5dc1ac18 )