Mobil ishlanmada Background Execution — mohiyati, cheklovlari va ishlash tamoyillari

Muallif: IT Sectr Nashr etilgan: 2026-03-26 O'qish vaqti: 9 daq

Background Execution — mobil ilova kodi oldingi planda bo'lmagan paytda bajarilish mexanizmi. Bu mexanizmsiz ilova yig'ilganda tizim tomonidan to'xtatiladi. Apple, 2026 ma'lumotlariga ko'ra, iOS fon vaqtini 30 soniyagacha cheklaydi, Android esa WorkManager va Foreground Service orqali yanada moslashuvchan stsenariylarga imkon beradi.

Asosiy

  • Background Execution — ilova yig'ilgan yoki faol bo'lmaganda kodni bajarish.
  • iOS — qattiq cheklovlar: vazifalar uchun 30 soniya, qat'iy Background Modes va App Refresh.
  • Android — WorkManager, Foreground Service, Scheduling va turli cheklovlar bilan Doze rejimi.
  • Energiya sarfi — cheklovlarning asosiy sababi: fon jarayonlari qurilmaning ishlash vaqtini qisqartiradi.
  • Maxfiylik — Android 8 va iOS 13 dan boshlab, tizimlar fon ishi uchun aniq ruxsatlarni talab qiladi.

Mobil ilovalarda Background Execution nima?

Background Execution — ilovaning foydalanuvchi uni yig'ib yoki boshqa ilovaga o'tgandan keyin kod bajarishni davom ettirish qobiliyati. Maxsus mexanizmlarsiz mobil OT ilovani bir necha soniya ichida Suspended (to'xtatilgan) holatiga o'tkazadi, protsessor va xotirani faol ilovalar uchun bo'shatadi.

Ilovaning fondagi holatlari

Mobil ilova hayotiy tsiklning bir necha bosqichidan o'tadi: Foreground (faol), Background (fonda), Suspended (to'xtatilgan) va Terminated (tugatilgan). Background — ilova ko'rinadigan interfeysiz kod bajarishi mumkin bo'lgan yagona holat. iOS va Android bu holatda davomiylik va mavjud operatsiyalarni turlicha belgilaydi.

Asosiy foydalanish stsenariylari

Fon bajarish ma'lumotlar sinxronizatsiyasi, kontent yuklash, Push bildirishnomalarini qayta ishlash, fonda geolokatsiya va audio tinglash uchun zarur. Sinxronizatsiya — eng keng tarqalgan stsenariy: ilova foydalanuvchi ishtirokisiz serverga ma'lumot yuboradi yoki yangilanishlarni yuklaydi.

  • Sinxronizatsiya — tarmoq o'zgarganda ma'lumotlarni yuklash va jo'natish.
  • Geolokatsiya — fitness kuzatuvchilari va navigatorlarda joyni kuzatish.
  • Media — fonda audio va video tinglash (musiqa, podkastlar).
  • Bildirishnomalar — Push va mahalliy bildirishnomalarni qayta ishlash.
  • Yuklash — fonda katta fayllarni (podkastlar, videolar) yuklab olish.

Nima uchun mobil OTlar fon bajarishni cheklaydi

Cheklovlar fon bajarish uch omil bilan bog'liq: energiya sarfi, qurilma ishlashi va foydalanuvchi maxfiyligi. Protsessor va radio modullari (Wi-Fi, mobil ma'lumotlar) eng ko'p energiya sarflaydi — har bir fon jarayoni batareyaning ishlash vaqtini qisqartiradi.

Energiya sarfi va avtonomiya

Google tadqiqotlari shuni ko'rsatadiki, har 5 daqiqada fon vazifalarini bajaradigan ilovalar qurilmaning ishlash vaqtini kuniga 20–30% ga qisqartiradi. Hatto optimallashtirilgan fon operatsiyalari soatiga bir marta chastota bilan ikkitadan ortiq bunday ilova bo'lsa sezilarli ta'sir ko'rsatadi.

Operativ xotira va ishlash

Har bir fon ilovasi operativ xotirani egallaydi. Xotira yetishmasa, tizim ilovalarni xotiradan chiqaradi, bu esa foydalanuvchi qaytganda qayta ishga tushirishga olib keladi. iOS Jetsam algoritmidan foydalanadi — xotira chegarasi oshib ketganda fon jarayonlarini majburiy tugatish mexanizmi. Android shu tamoyil bilan LMK (Low Memory Killer) qo'llaydi.

Foydalanuvchi maxfiyligi

Android 10 va iOS 13 dan boshlab, tizim ilovalardan fon ishining maqsadini e'lon qilishni talab qiladi. Android fonda Broadcast Receiver ishga tushirishni chekladi. iOS loyihaning Capabilities qismida Background Mode ko'rsatilishini talab qiladi. Foydalanuvchi sozlamalarda istalgan ilova uchun fon bajarishni o'chirishi mumkin.

OTVersiyaCheklovTa'sir
Android8.0IMPLICIT_BROADCAST taqiqlanganFon Broadcast-larning 67%i buzildi
Android9.0Doze yaxshilandiTarmoq chaqiruvlarini cheklash
Android12+Foreground Service cheklandiFondan ishga tushirish taqiqi
iOS7+Background App RefreshDavriy yangilanish oynalari
iOS13+BGTaskSchedulerBajarish o'rniga rejalashtirish

Android-da Background Execution: WorkManager va Foreground Service

Android fon bajarish uchun bir nechta mexanizmlarni taqdim etadi, ularning har biri o'z vazifa toifasini hal qiladi. WorkManager — kechiktirilgan va davriy vazifalar uchun tavsiya etiladigan API. Foreground Service — ko'rinadigan bildirishnoma bilan zudlik bilan bajarish uchun. JobScheduler — WorkManager-ning quyi darajadagi analogi.

WorkManager — universal yechim

WorkManager — Android Jetpack qismi bo'lib, qurilma qayta ishga tushganidan keyin ham fon vazifalarining bajarilishini kafolatlaydi. API tarmoq holati, batareya darajasi va Doze rejimini hisobga olgan holda optimal bajarish vaqtini tanlaydi. WorkManager API 14+ bilan mos keladi va eskirgan AlarmManager hamda JobScheduler o'rnini egallaydi.

Foreground Service — uzoq muddatli operatsiyalar uchun

Ilova foydalanuvchiga ko'rinadigan vazifani bajarishi kerak bo'lganda (musiqa tinglash, geolokatsiyani yozib olish) Foreground Service ishlatiladi. Xizmat holat panelida doimiy bildirishnomani ko'rsatadi va yuqori ustunlikka ega — tizim vazifa tugaguniga qadar uni tugatmaydi. Android 13 dan boshlab POST_NOTIFICATIONS ruxsati talab qilinadi.

Doze rejimi va batareya optimallashtirish

Android 6.0 dan boshlab, qurilma harakatsizlik paytida Doze rejimiga o'tadi. Bu rejimda tarmoq operatsiyalari, sinxronizatsiya va JobScheduler kechiktiriladi. WorkManager avtomatik ravishda Doze-ga moslashadi — vazifalar qurilma xizmat ko'rsatish uchun uyqudan chiqqanda eng yaqin Maintenance Window-da bajariladi.

iOS-da Background Execution: Background Tasks va App Refresh

iOS fon bajarishga nisbatan qattiqroq yondashuvni qo'llaydi. Background App Refresh — ma'lumotlarni davriy yangilashning asosiy mexanizmi. BGTaskScheduler — tizim holatini hisobga olgan holda vazifalarni rejalashtirish uchun API. Uzoq muddatli operatsiyalar uchun Background Modes mavjud: audio, location, voip, fetch va processing.

Background App Refresh

Background App Refresh ilovaga har 15–30 daqiqada ma'lumot sinxronizatsiyasi uchun uyg'onish imkonini beradi. Uyg'onish vaqti foydalanuvchi xatti-harakatiga bog'liq — tizim uning ilovani qanchalik tez-tez ochishini tahlil qiladi. Foydalanuvchi bu funksiyani alohida ilovalar uchun Settings — General — Background App Refresh bo'limida o'chirishi mumkin.

BGTaskScheduler — zamonaviy yondashuv

iOS 13 dan boshlab, BGTaskScheduler eskirgan performFetch va beginBackgroundTask o'rnini egalladi. Ilova identifikator va minimal interval bilan vazifalarni ro'yxatdan o'tkazadi, tizim esa optimal bajarish vaqtini o'zi belgilaydi. Vazifalar ikki turga bo'linadi: BGProcessingTask (uzoq, 10+ daqiqa) va BGAppRefreshTask (qisqa, 30 soniyagacha).

Bajarish vaqtini cheklash

iOS ilovaga fon vazifasini bajarish uchun cheklangan vaqt ajratadi — BGAppRefreshTask uchun 30 soniyagacha va BGProcessingTask uchun 10 daqiqagacha. Limit tugagach, tizim vazifani majburiy tugatadi. Dasturchi oraliq natijalarni saqlash uchun tugatish handlerini (expiration handler) chaqirishi kerak.

Kod misollari: Android WorkManager

WorkManager yordamida Android-da fon bajarishning amaliy tatbiqini ko'rib chiqaylik. Tarmoq holatini hisobga olgan holda har 8 soatda ma'lumot sinxronizatsiyasi misoli. WorkManager qurilma qayta ishga tushganidan keyin ham vazifaning bajarilishini kafolatlaydi.

kotlin
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        return try {
            syncDataToServer()
            Log.d("Sync", "Ma'lumotlar sinxronlashtirildi")
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Har 8 soatda davriy vazifani ishga tushirish
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresCharging(false)
    .build()

val syncRequest = PeriodicWorkRequestBuilder<SyncWorker>(
    8, TimeUnit.HOURS
).setConstraints(constraints).build()

WorkManager.getInstance(context).enqueue(syncRequest)

Bildirishnoma bilan Foreground Service

Foydalanuvchiga ko'rinadigan uzoq muddatli operatsiyalar uchun Foreground Service dan foydalaning. Bildirishnomada taraqqiyot ko'rsatilgan holda fayl yuklash misoli. Xizmat o'chirib bo'lmaydigan bildirishnoma bilan startForeground() ni chaqiradi. Yuklash tugagach — stopForeground(STOP_FOREGROUND_REMOVE).

kotlin
class DownloadService : Service() {
    override fun onStartCommand(intent: Intent?, flags: Int, id: Int): Int {
        startForeground(NOTIFICATION_ID, createNotification())
        downloadFile()
        stopForeground(STOP_FOREGROUND_REMOVE)
        stopSelf()
        return START_NOT_STICKY
    }
    private fun createNotification(): Notification {
        return NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("Faylni yuklash")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Kod misollari: iOS BGTaskScheduler

iOS da fon bajarish BGTaskScheduler orqali sozlanadi. Kontent yangilash vazifasini ro'yxatdan o'tkazish va bajarish misoli. Ilova Info.plist da vazifa identifikatorini ro'yxatdan o'tkazishi va vazifa rejalashtirilishi kerak bo'lganda submit ni chaqirishi kerak.

swift
import BackgroundTasks

func registerBackgroundTask() {
    BGTaskScheduler.shared.register(
        forTaskWithIdentifier: "com.app.refresh",
        using: nil
    ) { task in
        self.handleAppRefresh(task: task as! BGAppRefreshTask)
    }
}

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(
        identifier: "com.app.refresh"
    )
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
    try? BGTaskScheduler.shared.submit(request)
}

func handleAppRefresh(task: BGAppRefreshTask) {
    scheduleAppRefresh()
    task.expirationHandler = {
        // Oraliq ma'lumotlarni saqlash
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Uzoq muddatli operatsiyalar (keshni tozalash, ma'lumotlarni qayta ishlash) uchun BGProcessingTask dan foydalaning. Tizim bajarish uchun 10 daqiqagacha vaqt beradi. Faqat qurilma zaryadkada va Wi-Fi ga ulanganda ishga tushadi. Info.plist da alohida identifikator va register(forTaskWithIdentifier:) orqali ro'yxatdan o'tish talab qilinadi.

swift
func scheduleProcessing() {
    let request = BGProcessingTaskRequest(
        identifier: "com.app.cleanup"
    )
    request.requiresExternalPower = true
    request.requiresNetworkConnectivity = true
    request.earliestBeginDate = Date(timeIntervalSinceNow: 24 * 60 * 60)
    try? BGTaskScheduler.shared.submit(request)
}

Android va iOS yondashuvlarini taqqoslash

Android va iOS fon bajarish falsafasida tubdan farq qiladi. Android katta nazorat bilan moslashuvchan vositalarni taqdim etadi, lekin dasturchidan to'g'ri API tanlashni talab qiladi. iOS imkoniyatlarni cheklaydi, lekin foydalanuvchi uchun barqaror ishlash va avtonomiyani kafolatlaydi.

MezonAndroidiOS
Tavsiya etiladigan APIWorkManagerBGTaskScheduler
Maks. vazifa vaqtiCheksiz (Foreground Service)30 soniya / 10 daqiqa (processing)
Davriy vazifalarHa, PeriodicWorkRequest orqaliHa, BGAppRefreshTask orqali
Bajarish kafolatiHa, hatto qayta ishga tushgandan keyinYo'q — tizim qachon qaror qiladi
Tarmoqqa fonda kirishDoze rejimi bilan cheklanganBackground config bilan URLSession orqali
Fonda geolokatsiyaForeground Service + ruxsatBackground Mode location + NSLocation
Fonda audioMedia bildirishnoma bilan Foreground ServiceBackground Mode audio + AVAudioSession

Qachon Android WorkManager ni tanlash kerak

WorkManager ilova holatidan qat'iy nazar bajarilishi kerak bo'lgan vazifalar uchun optimaldir: ma'lumot sinxronizatsiyasi, analitika yuborish, navbatlarni qayta ishlash. API kafolatlaydi hatto qurilma o'chirilganidan keyin ham bajarish — vazifa yuklashdan so'ng qayta rejalashtiriladi.

Qachon iOS BGTaskScheduler ni tanlash kerak

BGTaskScheduler tizim istalgan qulay vaqtda bajarishi mumkin bo'lgan vazifalar uchun mos keladi: yangi kontent yuklash, vidjetlarni yangilash, keshni tozalash. Shoshilinch operatsiyalar uchun mos emas — qurilma Doze rejimida bo'lsa yoki batareya darajasi past bo'lsa, tizim vazifani kechiktiradi.

Tez-tez beriladigan savollar

Background Execution va Background Modes o'rtasidagi farq nima?

Background Execution — fonda bajariladigan har qanday kodni tavsiflovchi umumiy tushuncha. Background Modes — iOS-ning ilovaga fonda muayyan turdagi operatsiyalarni (audio, geolokatsiya, VoIP, fetch) bajarishga imkon beradigan maxsus mexanizmi. Android Foreground Service turlari orqali o'xshash yondashuvdan foydalanadi.

Nega ilovam fonda 30 soniyadan keyin tugaydi?

iOS da bu BGAppRefreshTask uchun standart cheklovdir. Tizim limit tugagach vazifani majburiy tugatadi. Android da shunga o'xshash holat ilova WorkManager yoki Foreground Service dan foydalanmaganda yuz beradi — oddiy Service fonda tizim tomonidan tugatiladi.

Ikkala platformada vazifa bajarilishini qanday kafolatlash mumkin?

Android da WorkManager dan foydalaning — hatto qayta ishga tushgandan keyin ham bajarishni kafolatlaydi. iOS da bajarishni kafolatlash mumkin emas — tizim vazifani qachon ishga tushirishni o'zi hal qiladi. Yagona kafolat usuli — foydalanuvchiga ko'rinadigan indikator bilan Background Modes (audio, location) dan foydalanish.

Fon bajarishga ruxsat berilganligini qanday tekshirish mumkin?

iOS da UIApplication.shared.backgroundRefreshStatus ni chaqiring — status .available, .denied yoki .restricted. Android da batareya optimallashtirishdan istisnoni tekshirish uchun PowerManager.isIgnoringBatteryOptimizations() dan foydalaning. WorkManager uchun tekshirish shart emas — API tizim cheklovlarini o'zi boshqaradi.

Fon bajarishga qanday alternativlar mavjud?

Push bildirishnomalari — fon kodeksiz harakatlarni tetiklashning asosiy mexanizmi. iOS da VoIP uchun PushKit va ma'lumot yangilash uchun Silent Push mavjud. Android da — High Priority FCM va Notification Trampoline. Foreground Service orqali WebSockets — real-time ilovalar uchun alternativ.

Xulosa

  • Background Execution — ilova yig'ilganda kod bajarish mexanizmi, sinxronizatsiya, yuklash va bildirishnomalar uchun muhim.
  • Android WorkManager (kafolatlangan bajarish), Foreground Service (uzoq muddatli ko'rinadigan vazifalar) va Doze rejimi cheklovlarini taklif qiladi.
  • iOS BGTaskScheduler (rejalashtirish), Background App Refresh (davriy yangilanishlar) va media/geolokatsiya uchun Background Modes dan foydalanadi.
  • Energiya sarfi — cheklovlarning asosiy sababi: optimallashtirilmagan fon jarayonlari qurilma ishlash vaqtini 20–30% ga qisqartiradi.
  • Maxfiylik — ikkala platforma aniq ruxsatlarni (Android POST_NOTIFICATIONS, iOS Background Modes) va foydalanuvchi xabardorligini talab qiladi.
  • WorkManager — qurilma qayta ishga tushganidan keyin bajarish kafolati bilan yagona API, BGTaskScheduler tizim qaroriga tayanadi.
  • Holat panelida foydalanuvchiga ko'rinadigan uzoq muddatli operatsiyalar uchun Android da Foreground Service, iOS da Background Modes dan foydalaning.

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