Hot Restart in der Mobilentwicklung — Wesen, Mechanismus und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-05-18 Lesezeit: 8 Min.

Hot Restart ist ein Mechanismus zum schnellen Neuladen einer mobilen Anwendung während der Entwicklung, bei dem die Anwendung vollständig mit aktualisiertem Quellcode neu gestartet wird. Im Gegensatz zu einer vollständigen Neukompilierung verwendet Hot Restart bereits kompilierten Binärcode und lädt nur die Dart VM neu, wodurch die Entwicklungszyklenzeit verkürzt wird. Laut Flutter-Dokumentation (2025) dauert ein typischer Hot Restart 1 bis 3 Sekunden. Hot Restart ist besonders nützlich beim Ändern des globalen Anwendungszustands und von Initialisierungscode.

Das Wichtigste

  • Hot Restart — ein vollständiger Neustart der Anwendung mit aktualisiertem Code, bei dem die Dart VM neu geladen und der Anwendungszustand auf den Anfangszustand zurückgesetzt wird.
  • Hot Reload — inkrementelles Laden von Änderungen ohne Verlust des aktuellen Anwendungszustands, arbeitet deutlich schneller als Hot Restart.
  • Dart VM wird bei Hot Restart vollständig neu gestartet, wodurch die Anwendung aller Änderungen einschließlich Initialisierung und statischer Variablen garantiert wird.
  • Funktionsweise umfasst die Neukompilierung geänderter Dateien, den Neustart der Dart VM und die erneute Initialisierung der Anwendung in 1–3 Sekunden.
  • Anwendungsszenarien — Änderungen an globalen Variablen, Konfigurationen, DI-Containern und Initialisierungscode, die einen vollständigen Zustandsrücksetz erfordern.

Was ist Hot Restart?

Hot Restart ist ein Entwicklungsmechanismus, bei dem die Anwendung mit aktualisiertem Quellcode vollständig neu geladen wird, ohne dass eine vollständige Neukompilierung des Projekts erforderlich ist. Der Entwickler nimmt Änderungen am Code vor, speichert die Datei und sendet über die IDE einen Neustartbefehl. Die Anwendung kompiliert die geänderten Dateien neu, startet die Dart VM neu und durchläuft den gesamten Lebenszyklus von main bis zum finalen Rendern der Benutzeroberfläche.

Hot Restart unterscheidet sich von einem vollständigen Rebuild dadurch, dass es bereits kompilierte Binärbibliotheken und das Flutter-Framework verwendet, ohne native Wrapper neu zu kompilieren. Dadurch verkürzt sich die Entwicklungszyklenzeit von mehreren Minuten auf wenige Sekunden. Laut einer Flutter-Entwicklerumfrage (2024) beträgt die durchschnittliche Hot Restart-Zeit 2,1 Sekunden, was etwa 97% schneller ist als ein vollständiger Projekt-Rebuild über den Befehl flutter build.

Der Mechanismus ist besonders gefragt bei der Entwicklung von Benutzeroberflächen, die eine häufige Überprüfung von visuellen Änderungen erfordern. Der Entwickler kann die Farbe, Größe oder Position eines Elements ändern und das Ergebnis sofort auf einem Simulator oder physischen Gerät sehen, ohne den Entwicklungskontext durch eine lange Kompilierung zu verlieren. Dies beschleunigt das iterative Prototyping erheblich.

Wie funktioniert der Hot Restart-Mechanismus?

Bei der Ausführung eines Hot Restart-Befehls erfolgt eine Abfolge von Operationen: Speichern geänderter Dateien, inkrementelle Kompilierung geänderter Dart-Dateien in Maschinencode, Neustart der Dart VM und erneute Ausführung des Anwendungseinstiegspunkts. Die Dart VM ist eine virtuelle Maschine, die Dart-Code während der Entwicklung im JIT-Modus (Just-In-Time) und in Produktions-Builds im AOT-Modus (Ahead-Of-Time) ausführt.

Lebenszyklus beim Hot Restart

Beim Hot Restart durchläuft die Anwendung einen vollständigen Lebenszyklus: Aufruf der main-Funktion, Initialisierung von WidgetsFlutterBinding, Start von runApp und Aufbau des gesamten Widget-Baums von Grund auf. Alle vorherigen Widget-Zustände, Variablen und Caches werden gelöscht. Dies garantiert, dass sich die Anwendung in einem sauberen Zustand befindet, der vollständig identisch mit dem Zustand nach einer Neuinstallation auf dem Gerät ist.

Der Prozess kann als Abfolge von Schritten dargestellt werden: Der Entwickler drückt die Hot Restart-Taste in der IDE, die Flutter-Tools senden einen Befehl an das Gerät, das Gerät speichert das aktuelle Anwendungsgerüst, startet die Dart VM mit dem neuen Code neu und führt main erneut aus. Alle im Dependency-Injection-Container registrierten Abhängigkeiten werden von Grund auf neu erstellt.

Ein Hauptmerkmal ist, dass der Binärcode der nativen Hülle (Plugins, Kotlin-Code, Swift-Code) nicht neu kompiliert wird. Hot Restart betrifft nur die Dart-Schicht der Anwendung, was die hohe Geschwindigkeit des Neustarts gewährleistet. Wenn Änderungen nativen Code betreffen, ist ein vollständiger flutter build erforderlich.

Technische Implementierung in Flutter

Flutter verwendet eine Architektur, bei der Dart-Code auf der Dart VM ausgeführt und die Benutzeroberfläche über die Skia- oder Impeller-Engine gerendert wird. Während des Hot Restart starten die Flutter-Tools eine isolierte Instanz der Dart VM (Isolate) neu, laden aktualisierte .dill-Dateien (Dart Intermediate Language) und führen die main-Funktion erneut aus. Die gesamte Benutzeroberfläche wird über den runApp-Aufruf von Grund auf neu aufgebaut, wodurch garantiert wird, dass alle Widgets auf dem neuesten Stand sind.

dart
import 'package:flutter/material.dart';

void main() {
  // Nach Hot Restart wird diese Funktion erneut ausgeführt
  var prefs = await SharedPreferences.getInstance();
  var themeMode = prefs.getString('theme') ?? 'light';
  runApp(MyApp(themeMode: themeMode));
}

Hot Restart vs Hot Reload: Hauptunterschiede

Hot Restart und Hot Reload sind zwei Mechanismen für die schnelle Entwicklung, die oft verwechselt werden. Hot Reload lädt Änderungen in die laufende Anwendung ohne Verlust des aktuellen Zustands, während Hot Restart die Anwendung vollständig neu startet. Hot Reload arbeitet schneller (0,1–1 Sekunde), wendet jedoch keine Änderungen an, die die Initialisierung oder statische Klassenfelder betreffen.

Erhaltung des Anwendungszustands

Der Hauptunterschied ist der Anwendungszustand. Hot Reload bewahrt den aktuellen Zustand der Widgets: Scrollposition, eingegebene Daten, geöffnete modale Fenster. Hot Restart setzt den gesamten Zustand auf den Anfangszustand zurück. Wenn die Änderung nur den Code in der build-Methode betrifft, ist Hot Reload ausreichend. Wenn die Änderung main, globale Variablen oder Abhängigkeiten betrifft, ist Hot Restart erforderlich.

Hot Reload wendet Änderungen durch Injizieren von aktualisiertem Code in die Dart VM an, ohne das Isolate neu zu starten. Dies ist nur für Änderungen möglich, die die Typstruktur nicht beeinträchtigen und keine erneute Initialisierung von Widgets erfordern. Während des Hot Restart wird das Isolate vollständig neu gestartet, sodass beliebige Änderungen angewendet werden können, einschließlich Löschen oder Umbenennen von Klassen und Methoden.

Leistung und Szenarien

Laut Flutter-Team dauert Hot Reload für die meisten Änderungen weniger als 1 Sekunde, während Hot Restart 1 bis 3 Sekunden dauert. Für etwa 80% der Änderungen an der Benutzeroberfläche ist Hot Reload ausreichend. Hot Restart ist erforderlich beim Ändern von Anwendungskonfigurationen, globalen Variablen, nativen Plugins im Dart-Wrapper und Architekturentscheidungen.

Die folgende Strategie wird empfohlen: Verwenden Sie Hot Reload für visuelle UI-Bearbeitungen und kleine Logikänderungen; wechseln Sie zu Hot Restart beim Ändern von Datenstrukturen, Hinzufügen von Abhängigkeiten oder Bearbeiten von Initialisierungscode. Dies minimiert Wartezeiten und erhält eine hohe Entwicklungsproduktivität.

Hot Restart-Implementierung in beliebten Frameworks

Der Hot-Restart-Mechanismus wird je nach Framework und Programmiersprache unterschiedlich implementiert. Flutter bietet die ausgereifteste Implementierung von Hot Restart durch Dart VM JIT-Kompilierung, während React Native einen ähnlichen Mechanismus über Metro Bundler und JavaScript Core oder Hermes verwendet.

Hot Restart in Flutter

In Flutter wird Hot Restart durch den Befehl r im Terminal aktiviert, nachdem die Anwendung über flutter run gestartet wurde. Alternativ verwenden Sie die Hot Restart-Schaltfläche in Android Studio, VS Code oder IntelliJ IDEA. Hot Restart funktioniert nur im Debug-Modus und ist in Profile- und Release-Builds nicht verfügbar. Bei der Ausführung kompilieren die Flutter-Tools die geänderten Dateien in das Kernel-Format und senden sie an das Gerät.

dart
// Vor Hot Restart: alte Version
class Counter extends StatefulWidget {
  final int initialValue = 0;
  // Nach Hot Restart: neuer Wert wird wirksam
  // final int initialValue = 10;
}

class CounterState extends State<Counter> {
  int _count = 0;
  // Hot Reload behält _count, Hot Restart setzt auf 0 zurück
}

Eine Einschränkung von Hot Restart in Flutter ist die Unmöglichkeit, den Debug-Zustand zu bewahren. Nach dem Neustart bleiben alle Haltepunkte erhalten, aber die Variablenwerte im Debugger werden zurückgesetzt. Zum Bewahren des Zustands zwischen Neustarts wird der State Restoration-Mechanismus verwendet.

Hot Restart in React Native

In React Native wird der Hot Restart durch Metro Bundler implementiert, einen JavaScript-Modul-Bündler. Wenn sich der Code ändert, baut Metro die geänderten Module neu und sendet das aktualisierte Bundle an das Gerät. React Native unterstützt Fast Refresh, ein Analogon zu Hot Reload, das den Zustand funktionaler Komponenten mithilfe von React-Hooks bewahrt.

Ein vollständiger Neustart (Reload) in React Native lädt die JavaScript-Engine und die gesamte Anwendung als Ganzes neu. Dies ist vollständig analog zu Hot Restart in Flutter. Zum Ausführen verwenden Sie Cmd+R auf dem iOS-Simulator oder doppeltes Drücken von R auf Android. Die vollständige Neustartzeit in React Native variiert je nach Bundle-Größe zwischen 2 und 8 Sekunden.

Wann man Hot Restart in der Entwicklung einsetzt

Hot Restart ist ein unverzichtbares Werkzeug in einer Reihe von Entwicklungsszenarien. Das erste und offensichtlichste ist die Änderung der globalen Konfiguration der Anwendung: Designs, Lokalisierung, Zustandsanbieter. Wenn Sie einen Anbieter an der Wurzel des Widget-Baums geändert oder ein neues Modul zum DI-Container hinzugefügt haben, garantiert Hot Restart die korrekte Initialisierung aller Komponenten.

Das zweite Szenario ist die Änderung von statischen Variablen und Konstanten. In Dart werden statische Felder einmal initialisiert, wenn die Klasse geladen wird. Hot Reload wendet keine Änderungen an statischen Feldern an, daher ist für deren Aktualisierung Hot Restart erforderlich. Dies ist besonders relevant bei der Arbeit mit Konfigurationskonstanten, API-URLs und Feature-Flags.

Das dritte Szenario ist das Debuggen der Initialisierung: Überprüfung der main-Funktion, des Splash-Bildschirms, des Ladens von Abhängigkeiten. Bei jedem Hot Restart durchläuft die Anwendung einen vollständigen Initialisierungszyklus, wodurch Fehler identifiziert werden können, die nur beim Start auftreten — Probleme mit SharedPreferences, Datenbankverbindungsfehler, Initialisierungszeitüberschreitungen.

Das vierte Szenario ist das Testen des leeren Zustands. Hot Restart setzt den gesamten Anwendungszustand zurück und ermöglicht die Überprüfung des Verhaltens beim ersten Start: Anzeige des Onboardings, Anfordern von Berechtigungen, leere Listen und Platzhalterbildschirme. Für wiederholbare Tests ist dies deutlich schneller als eine Neuinstallation der Anwendung.

Häufig gestellte Fragen

Wie unterscheidet sich Hot Restart von Hot Reload?

Hot Restart startet die Anwendung und die Dart VM vollständig neu und setzt den Zustand auf den Anfangszustand zurück. Hot Reload injiziert Änderungen in die laufende Anwendung und bewahrt den aktuellen UI-Zustand. Hot Reload ist schneller, kann aber nicht für Initialisierungsänderungen und globale Variablen verwendet werden.

Wie führe ich einen Hot Restart in Flutter durch?

Drücken Sie im Terminal nach dem Start von flutter run die Taste R (Shift+R) für Hot Restart. Verwenden Sie in Android Studio oder VS Code die Hot Restart-Schaltfläche im Debug-Bereich. Der Befehl ist nur im Debug-Modus verfügbar.

Wie lange dauert ein Hot Restart?

Ein typischer Hot Restart dauert 1 bis 3 Sekunden für mittelgroße Projekte. Die Zeit hängt von der Anzahl der Dart-Dateien, der Komplexität des Widget-Baums und der Geräteleistung ab. Bei großen Projekten kann die Zeit 5–8 Sekunden erreichen.

Funktioniert Hot Restart im Release-Build?

Nein, Hot Restart ist nur im Debug-Modus verfügbar. Release- und Profile-Builds verwenden AOT-Kompilierung, die Hot Reloading nicht unterstützt. Zum Aktualisieren von Code im Release ist ein vollständiger Rebuild erforderlich.

Kann Hot Restart mit nativen Plugins verwendet werden?

Hot Restart beeinträchtigt den nativen Code nicht — Kotlin-, Swift- oder Java-Plugins. Wenn Änderungen am nativen Code des Plugins vorgenommen werden, ist ein vollständiger Projekt-Rebuild erforderlich. Hot Restart ist nur für die Dart-Schicht der Anwendung wirksam.

Zusammenfassung

  • Hot Restart — ein Mechanismus zum vollständigen Neustarten der Anwendung mit aktualisiertem Dart-Code, der den Zustand auf den Anfangszustand zurücksetzt.
  • Unterschied zu Hot Reload — vollständiger Neustart der Dart VM und Neuinitialisierung aller Komponenten, einschließlich globaler Variablen und statischer Felder.
  • Ausführungszeit — 1–3 Sekunden für ein typisches Projekt, 97% schneller als ein vollständiger Rebuild über flutter build.
  • Anwendungsszenarien — Änderung der globalen Konfiguration, statischer Variablen, DI-Container und Initialisierungscodes.
  • Einschränkungen — nicht auf nativen Code (Kotlin/Swift) anwendbar, nur im Debug-Modus verfügbar, setzt Debug-Zustand zurück.
  • Nutzungsstrategie — Hot Reload für UI-Bearbeitungen, Hot Restart für Architektur- und Initialisierungsänderungen, vollständiger Rebuild für nativen Code.
  • Implementierung — Flutter verwendet Dart VM JIT-Kompilierung, React Native verwendet Metro Bundler mit JS-Engine-Neuladen.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch