앱 아키텍처테스트 및 유지 보수 측면에서 장점이 있으며 이를 위한 라이브러리 및 구성 요소를 제공합니다.
유지 관리, 테스트, 앱 확장성(여러 사람과 함께 작업할 때에도 코드 충돌 최소화)
UI 레이어 : 사용자 인터랙션(클릭 시 UI에 데이터 업데이트) 또는 외부 입력(네트워크 응답)으로 인해 데이터가 변경되는 경우 –> 변경 사항으로 UI 업데이트
UI 레이어구성 방법은 Compose 또는 ViewModel 클래스입니다.
UI = UI 요소 + UI 상태(일반적으로 ViewModel의 인스턴스로 구현되는 작업에 필요한 논리를 포함하는 클래스입니다.)

ViewModel은 UI에서 사용할 상태를 포함하고 제공합니다.
UI 상태는 ViewModel에서 변환된 애플리케이션 데이터입니다.
ViewModel은 사용자 작업 및 상태 업데이트를 처리합니다.
업데이트된 상태는 렌더링할 UI에 다시 보고됩니다.

생성된 새 UI 상태는 UI에 표시되어야 하지만 ViewModel에서 수동으로 데이터를 가져오지 않고 자동으로 반응할 수 있어야 합니다. 생의 날짜 소지자에게 UI 상태를 보여주어야 합니다.
ViewModel에서 발생하는 UI 작업은 항상 UI 상태 업데이트로 이어져야 합니다.
데이터 계층: 비즈니스 로직(앱 데이터가 생성, 저장 및 수정되는 방식을 결정하는 규칙으로 구성됨)
앱에서 처리하는 데이터 유형별로 리파지토리 클래스를 생성해야 합니다(영화 데이터 클래스: MoviesRepository, 결제 관련 클래스는 PaymentsRepository).
-뷰모델-
ViewModel을 확장하는 클래스를 만듭니다.
(Method를 HomeFragment에서 뷰 모델로 옮기고 싶습니다.)

뷰 모델에서는 LiveData와 MutableLivedata를 섞어서 변수의 불변성을 높였습니다.
–> 외부 환경에 영향을 받지 않도록 뷰 모델 내부 비공개로 변경 가능 태도. 생의 날짜로 설정된 변수는 외부에서 변경할 수 없습니다. 관찰하다모니터링만 활성화하십시오.

뷰 모델의 Fetch 메서드는 또한 데이터를 MutableLiveData에 삽입합니다.
-HomeFragment-
@AndroidEntryPoint
class HomeFragment : Fragment() {
lateinit var binding: ActivityHomeFragmentBinding
private lateinit var adapter: HomeAdapter
private val viewModel : HomeViewModel by viewModels()
@Inject
lateinit var service : RetrofitInterface
HomeFragment에서 뷰 모델 객체를 생성합니다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
viewModel.fetch()
viewModel.fetch2()
viewModel.fetchUpcomming()
viewModel.items.observe(viewLifecycleOwner) { items ->
adapter.submitList(items)
}
}
뷰 모델에 있는 항목의 라이브 데이터가 관찰되고 변경이 발생하면 submetList 메서드가 실행되어 데이터를 보내고 리사이클러 뷰를 업데이트합니다.