Mobil ishlab chiqishda Hot Restart (Issiq qayta ishga tushirish) — mohiyati, mexanizmi va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-05-18 O'qish vaqti: 8 daq

Issiq qayta ishga tushirish (Hot Restart) — bu ishlab chiqish jarayonida mobil ilovani tez qayta yuklash mexanizmi bo'lib, unda ilova yangilangan manba kodi bilan to'liq qayta ishga tushiriladi. To'liq qayta kompilyatsiyadan farqli o'laroq, Hot Restart allaqachon kompilyatsiya qilingan ikkilik koddan foydalanadi va faqat Dart VM ni qayta yuklaydi, ishlab chiqish sikli vaqtini qisqartiradi. Flutter documentation (2025) ma'lumotlariga ko'ra, odatdagi Hot Restart 1 dan 3 soniyagacha davom etadi. Hot Restart ayniqsa ilovaning global holati va initsializatsiya kodini o'zgartirishda foydalidir.

Asosiy ma'lumotlar

  • Hot Restart — Dart VM qayta yuklanadigan va ilova holati boshlang'ich holatga qaytariladigan yangilangan kod bilan ilovani to'liq qayta ishga tushirish.
  • Hot Reload — ilovaning joriy holatini yo'qotmasdan o'zgarishlarni bosqichma-bosqich yuklash, Hot Restart-dan ancha tez ishlaydi.
  • Dart VM Hot Restart vaqtida to'liq qayta ishga tushiriladi, bu initsializatsiya va statik o'zgaruvchilarni ham o'z ichiga olgan holda barcha o'zgarishlarning qo'llanilishini kafolatlaydi.
  • Ishlash prinsipi o'zgartirilgan fayllarni qayta kompilyatsiya qilish, Dart VM ni qayta ishga tushirish va ilovani 1–3 soniya ichida qayta initsializatsiya qilishni o'z ichiga oladi.
  • Qo'llash stsenariylari — to'liq holatni tiklashni talab qiladigan global o'zgaruvchilar, konfiguratsiyalar, DI konteynerlari va initsializatsiya kodining o'zgarishi.

Issiq qayta ishga tushirish (Hot Restart) nima?

Issiq qayta ishga tushirish (Hot Restart) — bu loyihani to'liq qayta kompilyatsiya qilish zaruratisiz ilova yangilangan manba kodi bilan to'liq qayta yuklanadigan ishlab chiqish mexanizmidir. Dasturchi kodga o'zgartirishlar kiritadi, faylni saqlaydi va IDE orqali qayta ishga tushirish buyrug'ini yuboradi. Ilova o'zgartirilgan fayllarni qayta kompilyatsiya qiladi, Dart VM ni qayta ishga tushiradi va main-dan foydalanuvchi interfeysining yakuniy renderigacha butun hayot siklini qaydan boshlab o'tadi.

Hot Restart to'liq qayta qurishdan farq qiladi, chunki u allaqachon kompilyatsiya qilingan ikkilik kutubxonalar va Flutter freymvorkidan mahalliy qobiqlarni qayta kompilyatsiya qilmasdan foydalanadi. Bu ishlab chiqish sikli vaqtini bir necha daqiqadan bir necha soniyagacha qisqartiradi. Flutter dasturchilari o'rtasida o'tkazilgan so'rovnomaga (2024) ko'ra, Hot Restart-ning o'rtacha vaqti 2.1 soniyani tashkil etadi, bu flutter build buyrug'i orqali loyihani to'liq qayta qurishdan taxminan 97% tezroqdir.

Mexanizm ayniqsa vizual o'zgarishlarni tez-tez tekshirish talab qilinadigan foydalanuvchi interfeyslarini ishlab chiqishda talab qilinadi. Dasturchi elementning rangi, o'lchami yoki joylashuvini o'zgartirishi va natijani simulyator yoki jismoniy qurilmada darhol ko'rishi mumkin, uzoq kompilyatsiyaga ishlab chiqish kontekstini yo'qotmasdan. Bu iterativ prototiplashni tubdan tezlashtiradi.

Hot Restart mexanizmi qanday ishlaydi?

Hot Restart buyrug'i bajarilganda operatsiyalar ketma-ketligi sodir bo'ladi: o'zgartirilgan fayllarni saqlash, o'zgartirilgan Dart fayllarini mashina kodiga bosqichma-bosqich kompilyatsiya qilish, Dart VM ni qayta ishga tushirish va ilovaning kirish nuqtasini qayta bajarish. Dart VM — ishlab chiqish vaqtida JIT (Just-In-Time) rejimida va ishlab chiqarish yig'ishlarida AOT (Ahead-Of-Time) rejimida Dart kodini bajaruvchi virtual mashinadir.

Issiq qayta ishga tushirishdagi hayot sikli

Hot Restart vaqtida ilova to'liq hayot siklini o'tadi: main funksiyasini chaqirish, WidgetsFlutterBinding-ni initsializatsiya qilish, runApp-ni ishga tushirish va butun vidjet daraxtini noldan qurish. Barcha oldingi vidjet holatlari, o'zgaruvchilar va keshlar tozalanadi. Bu ilovaning qurilmaga yangi o'rnatilgandan keyingi holat bilan to'liq bir xil bo'lgan toza holatda ekanligini kafolatlaydi.

Jarayonni qadamlar ketma-ketligi sifatida tasvirlash mumkin: dasturchi IDE-da Hot Restart tugmasini bosadi, Flutter asboblari qurilmaga buyruq yuboradi, qurilma joriy ilova skeletini saqlaydi, Dart VM ni yangi kod bilan qayta ishga tushiradi va main-ni qayta ishga soladi. Bog'liqliklarni inyeksiya qilish konteynerida ro'yxatdan o'tgan barcha bog'liqliklar noldan qayta yaratiladi.

Asosiy xususiyat — mahalliy qobiqning (plaginlar, Kotlin kodi, Swift kodi) ikkilik kodi qayta kompilyatsiya qilinmaydi. Hot Restart faqat ilovaning Dart qatlamiga ta'sir qiladi, bu esa yuqori qayta ishga tushirish tezligini ta'minlaydi. Agar o'zgarishlar mahalliy kodga ta'sir qilsa, to'liq flutter buyrug'ini bajarish talab qilinadi.

Flutter-da texnik joriy qilish

Flutter Dart kodi Dart VM-da bajariladigan va UI Skia yoki Impeller dvigateli orqali render qilinadigan arxitekturadan foydalanadi. Hot Restart vaqtida Flutter asboblari Dart VM ning izolyatsiya qilingan nusxasini (isolate) qayta ishga tushiradi, yangilangan .dill fayllarini (Dart Intermediate Language) yuklaydi va main funksiyasini qayta ishga soladi. Butun UI runApp chaqiruvi orqali qayta quriladi, bu barcha vidjetlarning dolzarbligini kafolatlaydi.

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

void main() {
  // Hot Restart-dan so'ng bu funksiya qayta bajariladi
  var prefs = await SharedPreferences.getInstance();
  var themeMode = prefs.getString('theme') ?? 'light';
  runApp(MyApp(themeMode: themeMode));
}

Hot Restart vs Hot Reload: asosiy farqlar

Hot Restart va Hot Reload — tez-tez chalkashtiriladigan ikkita tezlashtirilgan ishlab chiqish mexanizmidir. Hot Reload joriy holatni yo'qotmasdan ishlayotgan ilovaga o'zgarishlarni yuklaydi, Hot Restart esa ilovani to'liq qayta ishga tushiradi. Hot Reload tezroq ishlaydi (0.1–1 soniya), lekin initsializatsiya yoki sinfning statik maydonlariga taalluqli o'zgarishlarni qo'llamaydi.

Ilova holatini saqlash

Asosiy farq — ilova holati. Hot Reload vidjetlarning joriy holatini saqlaydi: aylantirish pozitsiyasi, kiritilgan ma'lumotlar, ochiq modal oynalar. Hot Restart butun holatni boshlang'ich holatga qaytaradi. Agar o'zgarish faqat build metodidagi kodga tegishli bo'lsa, Hot Reload etarli. Agar o'zgarish main, global o'zgaruvchilar yoki bog'liqliklarga ta'sir qilsa — Hot Restart talab qilinadi.

Hot Reload o'zgarishlarni isolate-ni qayta ishga tushirmasdan Dart VM ga yangilangan kodni inyeksiya qilish orqali qo'llaydi. Bu faqat tur tuzilishini buzmaydigan va vidjetlarni qayta initsializatsiya qilishni talab qilmaydigan o'zgarishlar uchun mumkin. Hot Restart vaqtida isolate to'liq qayta ishga tushiriladi, bu sinflar va metodlarni o'chirish yoki qayta nomlashni ham o'z ichiga olgan holda istalgan o'zgarishlarni qo'llash imkonini beradi.

Samaradorlik va stsenariylar

Flutter jamoasining ma'lumotlariga ko'ra, Hot Reload ko'pchilik o'zgarishlar uchun 1 soniyadan kam davom etadi, Hot Restart esa 1 dan 3 soniyagacha davom etadi. Foydalanuvchi interfeysi o'zgarishlarining taxminan 80% uchun Hot Reload etarli. Hot Restart ilova konfiguratsiyalari, global o'zgaruvchilar, Dart qobig'idagi mahalliy plaginlar va arxitektura qarorlarini o'zgartirishda talab qilinadi.

Quyidagi strategiya tavsiya etiladi: vizual tuzatishlar UI va kichik mantiq o'zgarishlari uchun Hot Reload dan foydalaning; ma'lumotlar tuzilishini o'zgartirish, bog'liqliklarni qo'shish yoki initsializatsiya kodini tuzatishda Hot Restart ga o'ting. Bu kutish vaqtini minimallashtiradi va ishlab chiqish samaradorligini yuqori darajada saqlaydi.

Mashhur freymvorklarda Hot Restart-ni joriy qilish

Issiq qayta ishga tushirish mexanizmi freymvork va dasturlash tiliga qarab turlicha joriy qilingan. Flutter Dart VM JIT kompilyatsiyasi orqali Hot Restart-ning eng yetuk joriy qilinishini ta'minlaydi, React Native esa Metro Bundler va JavaScript Core yoki Hermes orqali o'xshash mexanizmdan foydalanadi.

Flutter-da Hot Restart

Flutter-da Hot Restart r buyrug'i bilan flutter run orqali ilova ishga tushirilgandan so'ng terminalda faollashtiriladi. Shu bilan bir qatorda — Android Studio, VS Code yoki IntelliJ IDEA-da Hot Restart tugmasi. Hot Restart faqat debug rejimida ishlaydi va profile va release yig'ishlarida mavjud emas. Bajarish vaqtida Flutter asboblari o'zgartirilgan fayllarni kernel formatida qayta kompilyatsiya qiladi va qurilmaga yuboradi.

dart
// Hot Restart-dan oldin: eski versiya
class Counter extends StatefulWidget {
  final int initialValue = 0;
  // Hot Restart-dan so'ng: yangi qiymat kuchga kiradi
  // final int initialValue = 10;
}

class CounterState extends State<Counter> {
  int _count = 0;
  // Hot Reload _count-ni saqlaydi, Hot Restart 0 ga tiklaydi
}

Flutter-da Hot Restart-ning cheklovi — disk raskadrovka holatini saqlab qolishning imkonsizligi. Qayta ishga tushirishdan so'ng barcha to'xtash nuqtalari saqlanadi, lekin tuzatuvchidagi o'zgaruvchilarning qiymatlari tiklanadi. Qayta ishga tushirishlar o'rtasida holatni saqlash uchun State Restoration ilova holatini saqlash mexanizmlaridan foydalaniladi.

React Native-da Hot Restart

React Native-da issiq qayta ishga tushirish Metro Bundler — JavaScript modullarini yig'uvchi orqali joriy qilingan. Kod o'zgartirilganda, Metro o'zgartirilgan modullarni qayta yig'adi va yangilangan bundle-ni qurilmaga yuboradi. React Native Fast Refresh-ni qo'llab-quvvatlaydi — React hook-lari yordamida funksional komponentlarning holatini saqlaydigan Hot Reload analogi.

React Native-da to'liq qayta ishga tushirish (Reload) JavaScript dvigatelini va butun ilovani to'liq qayta yuklaydi. Bu Flutter-dagi Hot Restart bilan to'liq analogdir. Ishga tushirish uchun iOS simulyatorida Cmd+R kombinatsiyasi yoki Android-da R tugmasini ikki marta bosish ishlatiladi. React Native-da to'liq qayta ishga tushirish vaqti bundle hajmiga qarab 2 dan 8 soniyagacha o'zgaradi.

Ishlab chiqishda Hot Restart qachon qo'llaniladi

Hot Restart bir qator ishlab chiqish stsenariylarida ajralmas vositadir. Birinchi va eng aniq — ilovaning global konfiguratsiyasini o'zgartirish: dizayn mavzulari, lokalizatsiya, holat provayderlari. Agar vidjet daraxtining ildizida provayderni o'zgartirgan bo'lsangiz yoki DI konteyneriga yangi modul qo'shgan bo'lsangiz, Hot Restart barcha komponentlarning to'g'ri initsializatsiyasini kafolatlaydi.

Ikkinchi stsenariy — statik o'zgaruvchilar va konstantalarni o'zgartirish. Dart-da statik maydonlar sinf yuklanganda bir marta initsializatsiya qilinadi. Hot Reload statik maydonlarning o'zgarishlarini qo'llamaydi, shuning uchun ularni yangilash uchun Hot Restart majburiydir. Bu ayniqsa konfiguratsiya konstantalari, API URL manzillari va funksiya bayroqlari bilan ishlashda dolzarbdir.

Uchinchi stsenariy — initsializatsiyani tuzatish: main funksiyasining, splash ekranining, bog'liqliklarni yuklashning tekshirilishi. Har bir Hot Restart vaqtida ilova to'liq initsializatsiya siklini o'tadi, bu faqat ishga tushirishda yuzaga keladigan xatolarni — SharedPreferences bilan bog'liq muammolar, ma'lumotlar bazasiga ulanish xatolari, initsializatsiya taym-autlarini aniqlash imkonini beradi.

To'rtinchi stsenariy — bo'sh holatni sinash. Hot Restart ilovaning butun holatini tiklaydi, bu birinchi ishga tushirishdagi xatti-harakatni tekshirish imkonini beradi: onboarding-ni ko'rsatish, ruxsat so'rovlari, bo'sh ro'yxatlar va placeholderlar. Takrorlanadigan sinov uchun bu ilovani qayta o'rnatishdan sezilarli darajada tezroqdir.

Tez-tez beriladigan savollar

Hot Restart Hot Reload-dan qanday farq qiladi?

Hot Restart ilova va Dart VM ni to'liq qayta ishga tushiradi, holatni boshlang'ich holatga tiklaydi. Hot Reload ishlayotgan ilovaga o'zgarishlarni kiritadi, joriy UI holatini saqlaydi. Hot Reload tezroq, lekin initsializatsiya va global o'zgaruvchilarning o'zgarishlari uchun qo'llanilmaydi.

Flutter-da Hot Restart qanday bajariladi?

Terminalda flutter run ishga tushirilgandan so'ng Hot Restart uchun R (Shift+R) tugmasini bosing. Android Studio yoki VS Code-da tuzatish panelidagi Hot Restart tugmasidan foydalaning. Buyruq faqat debug rejimida mavjud.

Hot Restart qancha vaqt oladi?

O'rtacha loyihalar uchun odatdagi Hot Restart vaqti 1 dan 3 soniyagacha. Vaqt Dart fayllari soniga, vidjet daraxtining murakkabligiga va qurilma unumdorligiga bog'liq. Katta loyihalar uchun vaqt 5–8 soniyagacha yetishi mumkin.

Hot Restart release yig'ishida ishlaydimi?

Yo'q, Hot Restart faqat debug rejimida mavjud. Release va profile yig'ishlarida issiq qayta yuklashni qo'llab-quvvatlamaydigan AOT kompilyatsiyasi ishlatiladi. Release-da kodni yangilash uchun to'liq qayta qurish talab qilinadi.

Hot Restart-ni mahalliy plaginlar bilan ishlatish mumkinmi?

Hot Restart mahalliy kodga — Kotlin, Swift yoki Java plaginlariga ta'sir qilmaydi. Agar o'zgarishlar plaginning mahalliy kodiga kiritilsa, loyihani to'liq qayta qurish talab qilinadi. Hot Restart faqat ilovaning Dart qatlami uchun samaralidir.

Xulosa

  • Hot Restart — yangilangan Dart kodi bilan ilovani to'liq qayta ishga tushirish mexanizmi, holatni boshlang'ich holatga tiklaydi.
  • Hot Reload-dan farqi — Dart VM ni to'liq qayta ishga tushirish va global o'zgaruvchilar va statik maydonlarni o'z ichiga olgan holda barcha komponentlarni qayta initsializatsiya qilish.
  • Bajarish vaqti — odatdagi loyiha uchun 1–3 soniya, flutter build orqali to'liq qayta qurishdan 97% tezroq.
  • Qo'llash stsenariylari — global konfiguratsiyani, statik o'zgaruvchilarni, DI konteynerlarini va initsializatsiya kodini o'zgartirish.
  • Cheklovlar — mahalliy kodga (Kotlin/Swift) qo'llanilmaydi, faqat debug rejimida mavjud, tuzatish holatini tiklaydi.
  • Foydalanish strategiyasi — UI tuzatishlari uchun Hot Reload, arxitektura va initsializatsiya o'zgarishlari uchun Hot Restart, mahalliy kod uchun to'liq qayta qurish.
  • Joriy qilish — Flutter Dart VM JIT kompilyatsiyasidan, React Native Metro Bundler bilan JS dvigatelini qayta yuklashdan foydalanadi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing