안녕하세요. 성조입니다.
이번 포스팅은 Flutter를 접하면 자주 활용하게 되는 개념인 핫 리로드와 핫리스타트에 대해 정리하는 포스팅을 진행해 보려 합니다.
개인이 학습하고, 개념을 기록하기 위해 작성한 것이므로 공식문서와 같이 정확한 개념을 전달하는 것이 아닙니다. 혹여나 잘못된 지식이 전달되는 경우 언제든지 댓글 남겨주시면 감사드리겠습니다.
핫 리로드(Hot Reload)란?
기본 정의 : 핫 리로드는 소스 코드의 변경 사항을 즉시 앱에 반영하되, 앱의 현재 상태를 유지하는 기능이다. 즉, 변수의 현재 값, 위젯 트리의 상태 등이 그대로 유지되면서 UI 변경 사항 또는 로직 변경 사항만 적용되는 것을 말한다.
작동 원리 : Flutter는 Dart 언어를 사용하는데 이 Dart는 JIT(Just-In-Time) 컴파일을 지원한다. 핫 리로드는 이를 활용하여 변경된 소스 코드만 컴파일하고 앱에 즉시 반영할 수 있게 되는 것이다.
적용하기 : UI의 디자인 변경, 로직 수정, 새로운 함수의 추가 등 대부분의 변경 사항에 적합하지만 다음 제한 사항과 같이 적용할 수 없는 부분도 존재한다.
제한 사항 : 'main()' 함수 내에 변경 사항, 전역 변수의 초기화 로직 변경, 앱의 전체적인 상태 초기화 로직등은 핫 리로드를 통해 반영되지 않기 때문에 핫 리스타트를 통해 반영해야 한다.
핫 리스타트(Hot Restart)란?
기본 정의 : 핫 리스타트는 앱을 처음부터 다시 시작하되, 앱을 재빌드하거나 재설치하지 않는 기능이다. 모든 앱 상태는 초기화되며(변수의 현재 값, 위젯 트리 상태 등), 앱은 처음부터 다시 시작된다.
작동 원리 : 모든 위젯 트리와 상태는 초기화되며, 앱은 'main()' 함수부터 다시 실행되며, 처음 시작되는 화면으로 돌아간다.
적용하기 : 앱의 초기화 로직 변경, 전역 변수의 변경, 'main()' 함수 내의 변경 사항 등을 반영하고 싶을 때 사용된다.
제한 사항 : 앱의 현재 상태와(메인 함수에 작성된 위치로) 메모리(기본 정의에 얘기한 것과 같이 변수나, 위젯 트리 상태 등의 값들)는 완전히 초기화된다.
핫 리로드(Hot Reload)와 핫 리스타트(Hot Restart)의 핵심 차이점
상태 유지
- 핫 리로드(Hot Reload)는 앱의 현재 상태와 메모리를 유지한 채 변경 사항을 적용한다.
- 핫 리스타트(Hot Restart)는 앱의 모든 상태와 메모리를 초기화하고 앱을 처음부터 다시 시작한다.
적용 범위
- 핫 리로드(Hot Reload)는 대부분의 소스 코드 변경 사항을 즉시 반영할 수 있지만, 초기 앱 상태나 전역 변수의 변경은 반영되지 않는다.
- 핫 리스타트(Hot Restart)는 이러한 초기 상태 변경 사항까지 모두 반영하여 실행한다.
오타나 궁금한 질문 사항이 있는 경우 언제든지 댓글 남겨주시면 확인하고, 답변드릴 수 있도록 노력하겠습니다.
다음 포스팅 때 뵙겠습니다. 감사합니다.
'Flutter' 카테고리의 다른 글
[Flutter] StatelessWidget과 StatefulWidget의 차이점 정리 (0) | 2023.08.19 |
---|---|
[Flutter] Dart 언어 시작하기 (0) | 2023.08.01 |