[Android] Lifecycle 인식 컴포넌트

민채·2024년 2월 18일
0

Android

목록 보기
7/16

Lifecycle 인식 컴포넌트

  • Activity와 Fragment와 같은 다른 컴포넌트의 생명주기 상태 변화에 대응하여 수행되는 컴포넌트
  • UI Controller의 수명주기를 인식
  • Lifecycle 인식 구성요소를 사용하면 코드를 더 가볍게 만들 수 있고 유지보수하기가 쉬워짐 -> Activity나 Fragment 생명주기와 관련된 코드를 이 컴포넌트안에 작성하여 코드를 더 깔끔하게 작성할 수 있음

Lifecycle

  • Activity나 Fragment와 같은 구성요소의 수명 주기 상태 관련 정보를 포함하며 다른 객체가 이 상태를 관찰할 수 있게 하는 클래스
  • 생명주기의 변화가 발생하면 등록된 Observer를 실행해주는 역할
  • LifeCycleOwner 인터페이스에 정의되어 있는 getLifeCycle()메서드를 사용해 Lifecycler을 얻음
  • Event, State 두 개의 Enumeraiton을 사용하여 연결된 구성요소의 수명 주기 상태를 추적

State는 그래프의 노드, Event는 그래프의 간선

LifecyclerOwner

  • LifecycleOwne는 클래스에 Lifecycle이 있음을 나타내는 단일 메서드(getLifecycle()) 인터페이스
  • Fragment 및 AppCompatActivity와 같은 개별 클래스에서 Lifecycle의 소유권을 추출하고, 함께 작동하는 구성요소를 작성할 수 있게 함
  • LifecycleOwner의 getLifecycle() 메서드는 LifeCycle 객체를 반환

수명주기 인식 컴포넌트의 권장사항

  • UI 컨트롤러(Activity와 Fragment)를 가능한 한 가볍게 유지 -> 자체 데이터를 확보하기 보다는 ViewModel을 사용해 데이터를 확보하고 LiveData 객체를 관잘해 변경사항을 뷰에 반영해야 함
  • 데이터 기반 UI를 작성 -> 데이터 변경에 따라 뷰를 업데이트하거나 사용자 작업을 다시 ViewModel에 알리는 것은 UI 컨트롤러의 책임
  • ViewModel 클래스에 데이터 로직을 배치 -> ViewModel은 UI 컨트롤러와 앱 나머지 부분 간의 커넥터 역할이기 때문에 데이터를 가져오는 것은 ViewModel의 책임이 아님 -> ViewModel은 적절한 구성요소를 호출하여 데이터를 가져온 후 결과를 다시 UI 컨트롤러에 제공해야 함
  • DataBinding을 사용하여 뷰와 UI 컨트롤러 사이의 인터페이스를 깔끔하게 유지
  • UI가 복잡하다면 UI 수정을 처리할 수 있는 presenter 클래스를 만드는 것이 좋음
  • ViewModel에서 View 또는 Activity Context를 참조하지 말 것 -> 가비지 컬렉터가 제대로 처리하지 못해 메모리 누수가 발생할 수 있음
  • Kotlin Coroutine을 사용하여 장기 실행 작업 및 비동기적으로 실행될 수 있는 기타 작업을 관리

참고

profile
코딩계의 떠오르는 태양☀️

0개의 댓글