본문 바로가기
Android

가로세로 화면 전환에도 UI상태 저장:View Model

by Birthmark 2020. 7. 30.

안드로이드 공식문서

 

UI 상태 저장  |  Android 개발자  |  Android Developers

구성 변경 시 UI 상태를 유지하는 방법을 알아봅니다.

developer.android.com

ViewModel로 처리하는 법

 

Android Architecture Components #5 - ViewModel

ViewModel  class는 UI와 연관된 데이터를 스크린 가로세로 전환같은 변경 발생시에도 유지하도록 도와주는 class입니다. 예를들어 사용자 리스트를 보여주는 Activity나 fragment가 있다면, 이 데이터는 �

tourspace.tistory.com

스레드 및 앱활동 생명주기

스레드 지속

스레드는 스레드를 생성하는 활동의 전체 기간을 지나 지속됩니다. 스레드는 활동의 생성이나 삭제에 상관없이 계속 중단없이 실행됩니다. 어떤 경우에는 이러한 지속성이 바람직합니다.

활동이 스레드된 작업 블록 세트를 생성한 다음 작업자 스레드가 블록을 실행할 수 있기 전에 제거되는 경우를 생각해보세요. 앱은 진행 중인 블록으로 무엇을 해야할까요?

블록이 더 이상 존재하지 않는 UI를 업데이트하려고 한다면 작업이 계속될 이유가 없습니다. 예를 들어 작업이 데이터베이스에서 사용자 정보를 로드한 후 뷰를 업데이트한다면 스레드가 더 이상 필요하지 않습니다.

반면에 작업 패킷에는 UI와 완전히 관련되지 않은 몇 가지 이점이 있을 수 있습니다. 이 경우에는 스레드를 유지해야 합니다. 예를 들어 패킷은 이미지를 다운로드하고 디스크에 캐시하며 연결된 View 객체를 업데이트하려고 대기할 수 있습니다. 객체가 더 이상 존재하지 않더라도 사용자가 제거된 활동으로 돌아가는 경우에 이미지를 다운로드하고 캐시하는 작업은 여전히 유용할 수 있습니다.

모든 스레딩 객체의 수명 주기 응답을 수동으로 관리하는 작업은 대단히 복잡해질 수 있습니다. 올바르게 관리하지 않으면 앱에 메모리 경합과 성능 문제가 발생할 수 있습니다. ViewModel LiveData를 결합하면 수명 주기를 걱정하지 않고도 데이터를 로드하고 데이터가 변경될 때 알림을 받을 수 있습니다. ViewModel 객체가 이 문제를 해결하는 하나의 솔루션입니다. ViewModel은 구성 변경 전체에 걸쳐 유지 관리되므로 뷰 데이터를 쉽게 지속할 수 있습니다. ViewModel에 관한 자세한 내용은 ViewModel 가이드를 참조하고 LiveData에 관한 자세한 내용은 LiveData 가이드를 참조하세요. 또한 애플리케이션 아키텍처에 관해 자세히 알아보려면 앱 아키텍처 가이드를 읽어보세요.

 

안드로이드 아키텍처 :view model 

 

'Android' 카테고리의 다른 글

HashMap/SynchronizedMap/ConcurrentHashMap  (0) 2020.08.06
통신스레드 관련  (0) 2020.07.31
체크리스트  (0) 2020.07.29
코틀린 자바 혼용  (0) 2020.07.29
Gif 파일 ImageView로 표시  (0) 2020.07.29

댓글