0
0

More than 1 year has passed since last update.

Hot reload, Hot restart, Full restartまとめ

Posted at

Hot reload

  • 変更したコードをVM(Virtual Machine)にロードして、Widget Treeを再構築(リビルド)する。
  • UIのみ更新する。ログイン状態やNavigationの階層などアプリの状態は保持。
  • main()やinitState()は実行されない。
  • 例外を除き、ルートWidgetのbuild()より下流の変更には対応している。

Hot reloadが効かない例

  • グローバル変数やstaticフィールドの変更(constは可)
  • アプリのプロセスが終了している場合
  • コンパイルエラーが起きている場合
  • フォントの変更(フォント以外のassetsの変更にはほとんど対応)
  • Kotlin, Java, Swift, or Objective-Cなど、ネイティブコードの変更

Hot restart

  • コードの変更をVMにロードしてアプリをリスタートする。
  • アプリの状態は破棄される。
  • ネイティブコード(Kotlin, Java, Swift, or Objective-Cなど)の変更にはFull restartが必要

Full restart

  • iOS, Andoid, Webのアプリがリスタートする。
  • Java / Kotlin / ObjC / Swiftのコードをコンパイルし直すため、時間がかかる。
  • Webでは、dartdevc(Chromeでアプリをデバックするためのツール)もリスタートされる。

基礎的なことが無知すぎた...

面接の技術的な質問で、Hot reloadとHot restartの違いついて、うまく答えられず、浅学さを思い知らされました。開発をしているだけでは不十分なことには気づけたので、とりあえず、Hot reolad, Hot restart, Full restartについて記録しました。

参考

https://docs.flutter.dev/development/tools/hot-reload
https://dart.dev/tools/dartdevc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0