Mobil ilovalarda Hot Start: bu nima, omillar va qanday tezlashtirish

Muallif: IT Sectr Nashr etilgan: 2026-03-31 O'qish vaqti: 10 daq

Hot Start — jarayon allaqachon xotirada bo'lgan holatda mobil ilovani kichraytirilgan holatdan ishga tushirishdir. Cold Start-dan farqli o'laroq, bunda tizim jarayonni noldan yaratadi, issiq start 200 dan 500 ms gacha davom etadi va Activity-da onCreate va onStart chaqiruvi bilan cheklanadi. Android Developers, 2025 ma'lumotiga ko'ra, Hot Start eng tezkor ssenariy, ammo uning tezligi to'g'ridan-to'g'ri lifecycle metodlaridagi ish hajmiga bog'liq.

Asosiy

  • Hot Start — allaqachon xotirada bo'lgan va tizim tomonidan yo'q qilinmagan ilovani ishga tushirish.
  • Cold Start — jarayon yaratish bilan to'liq ishga tushirish, 2–5 soniya davom etadi.
  • Warm Start — Activity qayta yaratilganda, lekin jarayon tirik bo'lgan qisman qayta ishga tushirish.
  • onCreate va onStart — Hot Startda chaqiriladigan yagona metodlar.
  • Hot Start optimallashtirish perceived launch time-ni kamaytiradi va foydalanuvchi tajribasini yaxshilaydi.

Mobil ilovalarda Hot Start nima

Hot Start — bu ilovaning jarayoni allaqachon qurilma operativ xotirasida mavjud bo'lgan ishga tushirish ssenariysi. Foydalanuvchi ilovani kichraytiradi, keyin qaytadi — va tizim yangi jarayon yaratmaydi, balki mavjudini tiklaydi. Ushbu ssenariyda OS yuklash, Application sinfini ishga tushirish va jarayon yaratish talab qilinmaydi, bu UI ekranda paydo bo'lish vaqtini keskin qisqartiradi. Android Documentation (2025) ma'lumotiga ko'ra, Hot Start atigi 200–500 ms davom etadi, Cold Start esa 5 soniya va undan ko'proqqa yetishi mumkin. Tezlik farqi, ayniqsa, cheklangan xotiraga ega qurilmalarda seziladi, bu yerda tizim fon ilovalarini tez-tez tushiradi.

Hot Startning asosiy xususiyati — chaqiriladigan lifecycle metodlarining minimal to'plami. Androidda bular Activity.onCreate va Activity.onStart, iOSda — applicationDidBecomeActive. Cold Startda ketma-ket Application.onCreate, ContentProvider.onCreate, Activity.onCreate va ko'plab kutubxonalarni ishga tushirish chaqiriladigan bo'lsa, Hot Start bu bosqichlarning barchasini o'tkazib yuboradi. Dasturchi aynan issiq startda qaysi kod bajarilishini tushunishi kerak — ko'pincha SDK, analitika va DI konteynerlarining og'ir ishga tushirilishi ham Cold, ham Hot Startda takrorlanadi, garchi issiq startda ular endi kerak bo'lmasa.

Cold Start, Warm Start va Hot Start: taqqoslash

Ilovani ishga tushirishning uchta ssenariysi ishga tushirish chuqurligi bilan farqlanadi. Cold Start (sovuq start) ilova o'rnatilgandan keyin birinchi marta, qurilma qayta ishga tushirilganda yoki xotiradan tushirilganda sodir bo'ladi. Tizim yangi Linux jarayonini yaratadi, Application sinflarini yuklaydi, ContentProvider namunalarini yaratadi, kutubxonalarni ishga tushiradi va shundan keyingina Activity-ni ko'rsatadi. Butun jarayon ilovaning murakkabligi va qurilma xususiyatlariga qarab 2–10 soniya davom etadi.

Warm Start (iliq start) — oraliq ssenariy. Ilova jarayoni xotirada tirik, ammo Activity yo'q qilingan va qayta yaratilishi kerak. Bu, masalan, ekran aylantirilganda yoki boshqa ilovadan qaytganda, Activity xotira yetishmasligi tufayli tushirilganda, lekin jarayon qolganida sodir bo'ladi. Warm Start Activity.onCreate va Activity.onStart chaqiruvini o'z ichiga oladi, lekin Application.onCreate va ContentProvider ishga tushirishni o'z ichiga olmaydi. Warm Start vaqti — 500 ms dan 2 soniyagacha. Hot Start — uchtasining eng tezkori: Activity allaqachon back stackda mavjud, jarayon tirik va tizim shunchaki Activity.onRestart, onStart va onResume chaqiradi. Hot Start vaqti — 200–500 ms. Warm Startdan farqi shundaki, Activity qaytadan yaratilmaydi — mavjud namunadan tiklanadi.

ParametrCold StartWarm StartHot Start
JarayonQaytadan yaratiladiMavjudMavjud
ActivityQaytadan yaratiladiQaytadan yaratiladiTiklanadi
Application.onCreateChaqiriladiChaqirilmaydiChaqirilmaydi
Oddiy vaqt2–10 s0.5–2 s0.2–0.5 s
Lifecycle metodlariHammasionCreate + onStartonRestart + onStart

Hot Startda Android Lifecycle

Androidda Hot Start foydalanuvchi Recents ekrani orqali yoki kichraytirilgan holatda belgini bosib ilovaga qaytganda boshlanadi. Tizim jarayonning tirikligini tekshiradi va agar shunday bo'lsa — ketma-ket Activity.onRestart, onStart va onResume chaqiradi. Hot Startda onCreate metodi chaqirilmaydi, chunki Activity namunasi allaqachon xotirada mavjud. Bu Warm Startdan muhim farq, bu yerda onCreate Activity yo'q qilingani sababli chaqiriladi. Google I/O 2019 ma'lumotiga ko'ra, Androidda odatdagi Hot Start vaqti 200–400 ms ni tashkil qiladi va bu bosqichdagi har qanday sekinlashish to'g'ridan-to'g'ri perceived launch time-ni oshiradi.

Dasturchilar ko'pincha UI ishga tushirish, LiveData-ga obuna bo'lish yoki RecyclerView sozlash kodi nafaqat onCreate-da, balki onStart yoki onResume-da ham bajarilishini sezmaydilar. Hot Startda bu kod bloklari UI allaqachon sozlangan bo'lsa ham, qayta bajariladi. Bir martalik ishga tushirishni (savedInstanceState tekshiruvi bilan onCreate-da) va tiklanadigan mantiqni (onStart/onResume) ajratish tavsiya etiladi. Masalan, og'ir operatsiyalar — adapterlarni sozlash, ro'yxatlarni yuklash — onRestartda bajarilmaydigan blokga ko'chirilishi yoki savedInstanceState tekshirilishi kerak.

Ishga tushirish turini kuzatish namunasi

Quyidagi Kotlin kodi start ssenariysini aniqlash va vaqtni o'lchashning oddiy usulini ko'rsatadi. launchTimeStamp o'zgaruvchisi ishga tushirish boshlanish momentini qayd etadi, isColdStart esa sovuq va issiq start uchun mantiqni ajratish imkonini beradi.

kotlin
class MainActivity : AppCompatActivity() {

    private var launchTimeStamp = 0L
    private var isColdStart = true

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        if (savedInstanceState == null) {
            isColdStart = true
            launchTimeStamp = System.currentTimeMillis()
            // bir martalik ishga tushirish
        } else {
            isColdStart = false
            // Hot Start — Activity tiklanadi
        }
    }

    override fun onResume() {
        super.onResume()
        if (isColdStart) {
            val launchTime =
                System.currentTimeMillis() - launchTimeStamp
            Log.d("LaunchTime", "Cold Start: $launchTime ms")
        }
    }
}

Issiq startda iOS Lifecycle

iOSda Hot Start ilovaning sceneDidBecomeActive (UIKit) yoki onAppear (SwiftUI) orqali fondan qaytishiga mos keladi. Operatsion tizim ilova Suspended yoki Background holatida bo'lgan bo'lsa, jarayonni qayta yaratmaydi. Issiq startda AppDelegate-da applicationDidBecomeActive chaqiriladi, lekin applicationDidFinishLaunching chaqirilmaydi — bu Application.onCreate o'tkazib yuboriladigan Android analogidir. iOS ilovalarni xotiradan agressivroq tushiradi: agar qurilmada RAM yetarli bo'lmasa, tizim fon ilovasini tushirishi mumkin va keyingi start Cold Start bo'ladi. Apple Developer Documentation ma'lumotiga ko'ra, iOSda o'rtacha Hot Start vaqti 300–600 ms.

iOSning asosiy farqi — Android tushunchasida Warm Startning to'g'ridan-to'g'ri analogining yo'qligi. iOSda ilova kichraytirilganda sceneDidEnterBackground chaqiriladi, qaytganda esa — sceneWillEnterForeground va sceneDidBecomeActive. Agar tizim sahnani tushirsa, lekin jarayonni tirik qoldirsa, keyingi start sahna nuqtai nazaridan Cold, jarayon nuqtai nazaridan esa Hot bo'ladi. Dasturchi ishga tushirish kodini joylashtirishda buni hisobga olishi kerak: NotificationCenter-ga obuna bo'lish, UI yangilash va holatlarni tiklash aynan sceneDidBecomeActive-da bo'lishi kerak, faqat viewDidLoad-da emas.

iOSda Hot Startni qayta ishlash namunasi

Bu Swift kodi issiq startlar sonini kuzatish va mantiqni ajratishni ko'rsatadi. foregroundCount hisoblagichi fondan har qaytishda ortadi.

swift
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var foregroundCount = 0

    func sceneDidBecomeActive(
        _ scene: UIScene
    ) {
        foregroundCount += 1

        if foregroundCount == 1 {
            // Cold Start — to'liq ishga tushirish
            setupSDKs()
        } else {
            // Hot Start — faqat UI yangilash
            refreshUI()
        }
    }

    private func refreshUI() {
        // ekranda ma'lumot yangilash
    }
}

Hot Start tezligiga ta'sir qiluvchi omillar

Hot Start tezligiga bir necha omillar toifasi ta'sir qiladi. Birinchisi — onStart va onResume lifecycle metodlaridagi ish hajmi. Agar dasturchi bu metodlarga tarmoqdan ma'lumot yuklash, JSON tahlil qilish, adapterlarni ishga tushirish yoki og'ir hisoblashlarni joylashtirgan bo'lsa, har bir bunday blok start vaqtiga o'nlab va yuzlab millisoniya qo'shadi. Android Vitals vositasi ma'lumotiga ko'ra, Hot Start davomiyligi 800 ms dan ortiq bo'lgan ilovalar qayta qaytishda foydalanuvchilarning 20% gacha yo'qotadi.

Ikkinchi toifa — savedInstanceState dan tiklanadigan fragmentlar va View-lar. Fragmentlarda og'ir ViewPager2, WebView yoki chuqur joylashtirish bilan murakkab iyerarxiyalar bo'lsa, ularni tiklash CPU resurslarini oladi. Google I/O 2023 ma'lumotiga ko'ra, har bir joylashtirilgan ViewGroup Hot Startda render vaqtiga o'rtacha 2–5 ms qo'shadi. Uchinchi toifa — uchinchi tomon SDK-lari: analitika, crash-reporting, A/B-test kutubxonalari va DEX yuklagichlari fondan har qaytishda ishga tushirishni bajarishi mumkin. Qaysi SDK-lar aynan onStart/onResume-da kod ishga tushirishini tekshirish va muhim bo'lmagan vazifalarni fon oqimiga kechiktirish tavsiya etiladi.

Issiq startni optimallashtirish usullari

Hot Start optimallashtirish tiklash lifecycle metodlarida ishni minimallashtirishga asoslanadi. Birinchi usul — dangasa ishga tushirish: UI ning birinchi kadri uchun kerak bo'lmagan barcha kod onResume chaqiruvidan keyin Handler.postDelayed yoki Coroutine.launch(Dispatchers.IO) orqali kechikish bilan bajarilishi kerak. Ikkinchi usul — View holatini keshlash: ilovani kichraytirishda ma'lumotlarni in-memory keshlang, shunda Hot Startda ularni ma'lumotlar bazasidan yoki tarmoqdan qayta yuklash shart bo'lmasin. Uchinchi usul — Androidda SavedStateHandle va iOSda StateRestorationPolicy yordamida tiklanadigan ma'lumotlar hajmini minimallashtirish.

Hot Startdan keyin dangasa yuklash

Ushbu misolda Handler.postDelayed analitikani ishga tushirishni birinchi kadr renderidan 500 ms keyin kechiktiradi. Bu perceived launch time-ga ta'sir qilmaydi, chunki foydalanuvchi allaqachon interfeysni ko'radi.

kotlin
class AnalyticsDeferrer {

    fun lazyInitAfterHotStart() {
        val handler = Handler(Looper.getMainLooper())
        handler.postDelayed({
            // birinchi kadrdan keyin ishga tushirish
            Analytics.init(Application.getInstance())
            CrashReporter.start()
        }, 500)
    }
}

App Startup kutubxonasidan foydalanish

AndroidX App Startup startda komponentlarni ishga tushirish tartibini boshqarish imkonini beradi. Barcha ContentProvider Cold Startda avtomatik ishga tushiriladi, lekin siz Hot Startda kerak bo'lmagan komponentlar uchun avtomatik ishga tushirishni o'chirib qo'yishingiz mumkin.

kotlin
@Initializer(Application::class)
class SdkInitializer : Initializer<Unit> {

    override fun create(context: Context) {
        SdkOne.init(context)
        SdkTwo.init(context)
    }

    override fun dependencies() = emptyList<Class<*>>()
}

Ishga tushirish vaqtini kuzatish vositalari

Hot Start vaqtini o'lchash uchun ham platformalarning o'rnatilgan vositalari, ham uchinchi tomon echimlari mavjud. Androidda asosiy vosita Google Play Console-dagi Android Vitals — barcha ssenariylar (Cold, Warm, Hot) uchun start vaqti ko'rsatkichlarini qurilma modellari va OS versiyalari bo'yicha avtomatik to'playdi. Qo'shimcha ravishda AndroidX dan Macrobenchmark — start unumdorligini avtomatlashtirilgan sinash uchun kutubxonadan foydalanish mumkin. iOSda ekvivalent MetricKit dir, u start vaqti, kadr chastotasi va xotiradan foydalanish haqida ma'lumot to'playdi.

Issiq startni batafsil profillash uchun Firebase Performance Monitoring (custom traces kuzatadi) va New Relic start vaqti dashboardlari bilan mos keladi. Dasturchi tomonidan qo'lda o'lchash uchun Androidda reportFullyDrawn — UI chizilgan va o'zaro aloqaga tayyor bo'lgan aniq momentni tizimga bildiruvchi API ishlatiladi. iOSda ekvivalent MetricKit-da endActivity dir. Ushbu vositalarni birlashtirib, aynan qaysi SDK yoki kod bloki Hot Startni ma'lum qurilmalarda sekinlashtirishini aniqlash mumkin.

Hot Start uchun Macrobenchmark namunasi

Macrobenchmark kutubxonasidan foydalanadigan Kotlin kodi Cold va Hot Startni o'lchash uchun. Test Activity-ni ishga tushiradi va complete holatigacha vaqtni o'lchaydi.

kotlin
@RunWith(AndroidJUnit4::class)
class StartupBenchmark {

    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    @Test
    fun hotStart() {
        benchmarkRule.measureRepeated(
            packageName = "com.example.app",
            metrics = listOf(StartupTimingMetric()),
            iterations = 10,
            startupMode = StartupMode.HOT
        ) {
            pressHome()
            startActivityAndWait()
        }
    }
}

Tez-tez beriladigan savollar

Hot Start Cold Startdan nima bilan farq qiladi?

Cold Start jarayonni noldan yaratadi — Application, ContentProvider yuklaydi, barcha lifecycle metodlarini bajaradi. Hot Start allaqachon mavjud jarayondan foydalanadi va Activity-ni qayta yaratish talab qilinmaydi, bu uni 5–10 marta tezroq qiladi.

Androidda Hot Startda qaysi metodlar chaqiriladi?

Androidda Hot Start da Activity.onRestart, keyin onStart va onResume chaqiriladi. onCreate metodi chaqirilmaydi, chunki Activity namunasi allaqachon xotirada mavjud va yo'q qilinmagan.

Nima uchun Hot Start sekin bo'lishi mumkin?

Asosiy sabablar — onStart va onResume da og'ir ishga tushirish, tarmoqdan ma'lumot yuklash, murakkab View iyerarxiyalarini tiklash va fondan har qaytishda uchinchi tomon SDK kodining bajarilishi.

Hot Start vaqtini qanday o'lchash mumkin?

Androidda Macrobenchmark StartupMode.HOT bilan, iOSda — MetricKit bilan foydalaning. Ishlab chiqarish monitoringi uchun Firebase Performance va Google Play Console-dagi Android Vitals mos keladi.

Hot Startni Warm Startga aylantirish mumkinmi?

Yo'q, Hot Start va Warm Start — tizim tomonidan belgilanadigan turli ssenariylar. Hot Start Activity tirik bo'lganda, Warm — Activity yo'q qilingan, ammo jarayon tirik bo'lganda sodir bo'ladi. Dasturchi ssenariyni majburiy o'zgartira olmaydi.

Xulosa

  • Hot Start — eng tezkor start ssenariysi (200–500 ms), jarayon yaratish talab qilinmaydi.
  • Cold Start — jarayon yaratish bilan to'liq start, 2–10 soniya davom etadi.
  • Androidda Hot Startda onRestart, onStart va onResume chaqiriladi, ammo onCreate emas.
  • Asosiy optimallashtirish usuli — tiklash lifecycle metodlarida ishni minimallashtirish.
  • Macrobenchmark va Android Vitals — Hot Startni o'lchash va kuzatish uchun asosiy vositalar.
  • Uchinchi tomon SDK-lari va og'ir View iyerarxiyalari — issiq start sekinlashishining asosiy aybdorlari.
  • Dangasa ishga tushirish va View holatini keshlash perceived launch time-ni 30–50% ga kamaytiradi.

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