오늘 공부한 내용

  • k-해커톤 준비(줍깅)
  • 밤샘 개발,,,
  • 카카오맵 API 생명주기
  • retrofit2
  • mvvm
  • rxKotlin
  • 코루틴

카카오맵의 생명주기

private lateinit var mapView : MapView  //카카오맵뷰
private lateinit var mapViewContainer: ViewGroup

//onResume에서 생성한다.
override fun onResume() {
		super.onResume()

		//맵뷰 등록
		mapView = MapView(this)
		mapViewContainer = binding.ploggingKakaoMapView
		mapViewContainer.addView(mapView)
}

//onPause에서 맵뷰를 삭제한다.
override fun onPause() {
		super.onPause()
		mapViewContainer.removeAllViews()
 }

MVVM 패턴

구조

https://blog.kakaocdn.net/dn/UvIum/btqCO1hLrWY/BRw1vakk36NUsDwzUerSFK/img.png

  • View : 사용자와 상호작용하는 UI, 데이터 변화 감지를 위한 옵저버를 가짐 (ex. Activity, Fragment)
  • Model : 앱에서 사용하는 데이터와 그 데이터를 처리(통신)하는 역할 (ex. dataClass, Repository)
    • Repository : 데이터 API를 가지는 클래스, 뷰모델은 DB에 직접 접근하지 않고 repository에 접근하여 앱의 데이터를 관리
  • View Model : 뷰와 모델 사이의 인터페이스, 데이터바인딩을 전달하며 뷰를 그리기 위한 데이터를 처리하는 역할
    • Live Data : 관찰이 가능한(Observable) 데이터 홀더 클래스, 데이터가 변경될때마다 내부적으로 자동으로 알려줌

동작

  1. View를 통해 사용자 action을 받는다.
  2. View는 View Model로 action을 전달한다.
  3. View Model에서 비지니스 로직을 수행한다.
  4. View Model은 Model에게 데이터를 요청한다.
  5. Model은 View Model의 요청에 응답한다.
  6. View Model은 응답받은 데이터를 가공하고 저장한다.
  7. View Model은 Data Binding을 통해 View를 수정한다