[Flutter] 핫 리로드 vs 핫 리스타트

Jinwook Kim·2024년 9월 19일
0

Flutter

목록 보기
6/7
post-thumbnail

플러터에는 변경 사항을 반영할 수 있는 방법으로 핫 리로드(Hot Reload)와 핫 리스타트(Hot Restart)가 있다. 코드 변경 사항을 빠르게 적용할 수 있어, 플러터의 최대 강점으로 꼽힌다. 이번 글에서는 핫 리로드와 핫 리스타트를 비교해보고, 어떤 때, 어느 방법이 더욱 효율적인지 논의해보고자 한다.

1. 핫 리로드(Hot Reload)

핫 리로드는 앱의 현재 상태를 유지하면서 UI 변경 사항만을 빠르게 적용한다. main()initState() 메서드를 다시 호출하지 않으므로, 현재 상태가 유지되는 것이다. 핫 리로드는 위젯 트리(Widget Tree)를 재구성하여 변경된 UI만을 빠르게 반영한다. 주로 UI 디자인 변경, 간단한 로직 수정, 버그 수정 등에 용이하게 사용된다.

2. 핫 리스타트 (Hot Restart)

핫 리스타트는 앱을 완전히 재시작하여 모든 상태를 초기화한다. 즉, main() 함수를 다시 실행한다. 앱의 전체 상태가 초기화되므로 모든 변경 사항이 완전히 적용된다는 특징이 있다. 핫 리스타트는 initState() 메서드의 변경, 전역 변수의 초기화 로직 변경, 앱의 전체적인 상태 초기화가 필요한 경우에 사용된다. 핫 리로드보다는 훨씬 포괄적인 범위에서 리프레시(Refresh)를 한다고 볼 수 있다.

결과적으로, 핫 리로드는 UI 변경과 간단한 로직 수정에 적합하다. 반면, 핫 리스타트는 앱의 전체 상태 변경이 필요하거나, 핫 리로드로 해결되지 않는 문제에 사용될 수 있다.

한편, 네이티브 코드 변경이나 폰트와 애셋 추가 등의 일부 변경 사항은 핫 리로드나 핫 리스타트로도 반영이 되지 않으므로, 전체 앱의 리빌드(Rebuild)가 필요하다.

플러터가 현재 인기 있는 크로스 플랫폼 프레임워크인 데에는 핫 리로드와 핫 리스타트의 콤비네이션이 한 몫을 한다고 볼 수 있다. 변경 사항을 즉각적으로, 매우 빠르게 확인할 수 있어, 개발 시간이 단축이 되고, 효율성이 향상이 된다. 더군다나, 변경 사항의 반영을 핫 리로드와 핫 리스타트의 두 가지 버전으로 나눔으로써, 더욱 세밀한 리프레시 메서드 조정이 가능하다. 아마도 이것이 다른 프레임워크와 비교되는 플러터의 가장 큰 장점이 아니지 않을까 생각해본다.

profile
200 Everything Okay.

0개의 댓글