Mobil inkişafda Background Execution — mahiyyəti, məhdudiyyətləri və iş prinsipləri

Müəllif: IT Sectr Dərc olunub: 2026-03-26 Oxuma vaxtı: 9 dəq

Background Execution — mobil tətbiqin ön planda olmadığı halda kodun icrası mexanizmi. Bu mexanizm olmadan tətbiq bağlananda sistem tərəfindən dayandırılır. Apple, 2026 məlumatına görə, iOS fon vaxtını 30 saniyə ilə məhdudlaşdırır, Android isə WorkManager və Foreground Service vasitəsilə daha çevik ssenarilərə imkan verir.

Əsaslar

  • Background Execution — tətbiq bağlandıqda və ya qeyri-aktiv olduqda kodun icrası.
  • iOS — sərt limitlər: tapşırıqlar üçün 30 saniyə, ciddi Background Modes və App Refresh.
  • Android — WorkManager, Foreground Service, Scheduling və müxtəlif məhdudiyyətlərlə Doze rejimi.
  • Enerji sərfiyyatı — məhdudiyyətlərin əsas səbəbi: fon prosesləri cihazın işləmə müddətini azaldır.
  • Məxfilik — Android 8 və iOS 13-dən başlayaraq sistemlər fon işi üçün açıq icazələr tələb edir.

Mobil tətbiqlərdə Background Execution nədir?

Background Execution — tətbiqin istifadəçi onu bağladıqdan və ya başqa tətbiqə keçdikdən sonra kod icrasını davam etdirmə qabiliyyətidir. Xüsusi mexanizmlər olmadan mobil ƏS tətbiqi bir neçə saniyə ərzində Suspended (dayandırılmış) vəziyyətinə keçirir, prosessoru və yaddaşı aktiv tətbiqlər üçün boşaldır.

Tətbiqin fon vəziyyətləri

Mobil tətbiq həyat dövrünün bir neçə mərhələsindən keçir: Foreground (aktiv), Background (fonda), Suspended (dayandırılmış) və Terminated (bitirilmiş). Background — tətbiqin görünən interfeys olmadan kod icra edə biləcəyi yeganə vəziyyətdir. iOS və Android bu vəziyyətdə müddəti və mövcud əməliyyatları fərqli müəyyən edir.

Əsas istifadə ssenariləri

Fon icrası məlumat sinxronizasiyası, məzmun yükləmə, Push bildirişlərinin işlənməsi, fonda geolokasiya və audio oxutma üçün lazımdır. Sinxronizasiya — ən çox yayılmış ssenari: tətbiq istifadəçinin iştirakı olmadan serverə məlumat göndərir və ya yeniləmələri yükləyir.

  • Sinxronizasiya — şəbəkə dəyişdikdə məlumatların yüklənməsi və göndərilməsi.
  • Geolokasiya — fitness trekerlər və naviqatorlarda yerin izlənməsi.
  • Media — fonda audio və video oxutma (musiqi, podkastlar).
  • Bildirişlər — Push və lokal bildirişlərin işlənməsi.
  • Yükləmə — fonda böyük faylların (podkastlar, videolar) endirilməsi.

Niyə mobil ƏS-lər fon icrasını məhdudlaşdırır

Məhdudiyyətlər fon icrası üç amillə bağlıdır: enerji sərfiyyatı, cihaz performansı və istifadəçi məxfiliyi. Prosessor və radio modulları (Wi-Fi, mobil məlumat) ən çox enerji sərf edir — hər bir fon prosesi batareyanın işləmə müddətini azaldır.

Enerji sərfiyyatı və muxtariyyət

Google tədqiqatları göstərir ki, hər 5 dəqiqədən bir fon tapşırığı yerinə yetirən tətbiqlər cihazın işləmə müddətini gündə 20–30% azaldır. Hətta optimallaşdırılmış fon əməliyyatları saatda bir dəfə tezliyi ilə ikidən çox belə tətbiq olduqda nəzərəçarpacaq təsir göstərir.

Operativ yaddaş və performans

Hər bir fon tətbiqi operativ yaddaşı tutur. Yaddaş çatışmazlığında sistem tətbiqləri yaddaşdan boşaldır ki, bu da istifadəçi qayıtdıqda yenidən başlamasına səbəb olur. iOS Jetsam alqoritmindən istifadə edir — yaddaş limiti aşıldıqda fon proseslərini məcburi dayandırma mexanizmi. Android oxşar prinsiplə LMK (Low Memory Killer) tətbiq edir.

İstifadəçi məxfiliyi

Android 10 və iOS 13-dən başlayaraq sistem tətbiqlərdən fon işinin məqsədini bəyan etməyi tələb edir. Android fonda Broadcast Receiver-in işə salınmasını məhdudlaşdırdı. iOS layihənin Capabilities hissəsində Background Mode-un göstərilməsini tələb edir. İstifadəçi parametrlərdə istənilən tətbiq üçün fon icrasını söndürə bilər.

ƏSVersiyaMəhdudiyyətTəsir
Android8.0IMPLICIT_BROADCAST qadağandırFon Broadcast-lərin 67%-i pozuldu
Android9.0Doze təkmilləşdirildiŞəbəkə çağırışlarının məhdudlaşdırılması
Android12+Foreground Service məhdudlaşdırıldıFondan işə salma qadağandır
iOS7+Background App RefreshDövri yeniləmə pəncərələri
iOS13+BGTaskSchedulerİcra əvəzinə planlaşdırma

Android-də Background Execution: WorkManager və Foreground Service

Android fon icrası üçün bir neçə mexanizm təqdim edir, hər biri öz tapşırıq kateqoriyasını həll edir. WorkManager — təxirə salınmış və dövri tapşırıqlar üçün tövsiyə olunan API. Foreground Service — görünən bildirişlə dərhal icra üçün. JobScheduler — WorkManager-in aşağı səviyyəli analoqu.

WorkManager — universal həll

WorkManager — Android Jetpack-in bir hissəsi olub, cihaz yenidən başlasa belə fon tapşırıqlarının tamamlanmasını təmin edir. API şəbəkə vəziyyəti, batareya səviyyəsi və Doze rejimini nəzərə alaraq optimal icra vaxtını seçir. WorkManager API 14+ ilə uyğunluq göstərir və köhnəlmiş AlarmManager və JobScheduler-i əvəz edir.

Foreground Service — uzunmüddətli əməliyyatlar üçün

Tətbiq istifadəçiyə görünən tapşırığı yerinə yetirməli olduqda (musiqi oxutma, geolokasiya qeydi) Foreground Service istifadə olunur. Xidmət status panelində daimi bildiriş göstərir və daha yüksək prioritetə malikdir — sistem tapşırıq bitənə qədər onu dayandırmaz. Android 13-dən başlayaraq POST_NOTIFICATIONS icazəsi tələb olunur.

Doze Rejimi və batareya optimallaşdırması

Android 6.0-dan başlayaraq cihaz hərəkətsizlik zamanı Doze rejiminə keçir. Bu rejimdə şəbəkə əməliyyatları, sinxronizasiya və JobScheduler təxirə salınır. WorkManager avtomatik olaraq Doze-ə uyğunlaşır — tapşırıqlar cihaz xidmət üçün yuxudan oyananda ən yaxın Maintenance Window-da yerinə yetirilir.

iOS-da Background Execution: Background Tasks və App Refresh

iOS fon icrasına daha sərt yanaşma tətbiq edir. Background App Refresh — məlumatların dövri yenilənməsi üçün əsas mexanizm. BGTaskScheduler — sistemin vəziyyətini nəzərə alaraq tapşırıqların planlaşdırılması üçün API. Uzunmüddətli əməliyyatlar üçün Background Modes mövcuddur: audio, location, voip, fetch və processing.

Background App Refresh

Background App Refresh tətbiqə hər 15–30 dəqiqədən bir məlumat sinxronizasiyası üçün oyanmağa imkan verir. Oyanma vaxtı istifadəçinin davranışından asılıdır — sistem onun tətbiqi nə qədər tez-tez açdığını təhlil edir. İstifadəçi bu funksiyanı ayrı-ayrı tətbiqlər üçün Settings — General — Background App Refresh bölməsində söndürə bilər.

BGTaskScheduler — müasir yanaşma

iOS 13-dən başlayaraq BGTaskScheduler köhnəlmiş performFetch və beginBackgroundTask-i əvəz etdi. Tətbiq identifikator və minimum intervalla tapşırıqları qeydiyyatdan keçirir, sistem isə optimal icra vaxtını özü müəyyən edir. Tapşırıqlar iki növə bölünür: BGProcessingTask (uzunmüddətli, 10+ dəqiqə) və BGAppRefreshTask (qısa, 30 saniyəyə qədər).

İcra vaxtının məhdudlaşdırılması

iOS tətbiqə fon tapşırığını yerinə yetirmək üçün məhdud vaxt ayırır — BGAppRefreshTask üçün 30 saniyəyə qədər və BGProcessingTask üçün 10 dəqiqəyə qədər. Limit keçdikdə sistem tapşırığı məcburi dayandırır. Tərtibatçı aralıq nəticələri saxlamaq üçün bitmə handlerini (expiration handler) çağırmalıdır.

Kod nümunələri: Android WorkManager

WorkManager vasitəsilə Android-də fon icrasının praktik tətbiqini nəzərdən keçirək. Şəbəkə vəziyyətini nəzərə alaraq hər 8 saatda məlumat sinxronizasiyası nümunəsi. WorkManager cihaz yenidən başlasa belə tapşırığın yerinə yetirilməsinə zəmanət verir.

kotlin
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        return try {
            syncDataToServer()
            Log.d("Sync", "Məlumatlar sinxronlaşdırıldı")
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Hər 8 saatdan bir dövri tapşırığın işə salınması
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)

Bildirişli Foreground Service

İstifadəçiyə görünən uzunmüddətli əməliyyatlar üçün Foreground Service istifadə edin. Bildirişdə irəliləyiş göstərilməklə fayl yükləmə nümunəsi. Xidmət silinə bilməyən bildirişlə startForeground() çağırır. Yükləmə bitdikdə — 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("Faylın yüklənməsi")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Kod nümunələri: iOS BGTaskScheduler

iOS-da fon icrası BGTaskScheduler vasitəsilə konfiqurasiya edilir. Məzmun yeniləmə tapşırığının qeydiyyatı və icrası nümunəsi. Tətbiq Info.plist-də tapşırıq identifikatorunu qeydiyyatdan keçirməli və tapşırıq planlaşdırılmalı olduqda submit çağırmalıdır.

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 = {
        // Aralıq məlumatları saxla
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Uzunmüddətli əməliyyatlar (keşin təmizlənməsi, məlumatların işlənməsi) üçün BGProcessingTask istifadə edin. Sistem icra üçün 10 dəqiqəyə qədər vaxt verir. Yalnız cihaz şarjda və Wi-Fi-a qoşulduqda işə düşür. Info.plist-də ayrıca identifikator və register(forTaskWithIdentifier:) vasitəsilə qeydiyyat tələb olunur.

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 və iOS yanaşmalarının müqayisəsi

Android və iOS fon icrası fəlsəfəsində köklü şəkildə fərqlənir. Android böyük nəzarətlə çevik alətlər təqdim edir, lakin tərtibatçıdan düzgün API seçimini tələb edir. iOS imkanları məhdudlaşdırır, lakin istifadəçi üçün sabit performans və muxtariyyət təmin edir.

KriteriyaAndroidiOS
Tövsiyə olunan APIWorkManagerBGTaskScheduler
Maks. tapşırıq vaxtıLimitsiz (Foreground Service)30 san / 10 dəq (processing)
Dövri tapşırıqlarBəli, PeriodicWorkRequest iləBəli, BGAppRefreshTask ilə
İcra zəmanətiBəli, hətta yenidən başlatmadan sonraXeyr — sistem nə vaxt qərar verir
Fonda şəbəkə girişiDoze rejimi ilə məhdudlaşdırılıbBackground config ilə URLSession vasitəsilə
Fonda geolokasiyaForeground Service + icazəBackground Mode location + NSLocation
Fonda audioMedia bildirişi ilə Foreground ServiceBackground Mode audio + AVAudioSession

Nə vaxt Android WorkManager seçməli

WorkManager tətbiqin vəziyyətindən asılı olmayaraq yerinə yetirilməli olan tapşırıqlar üçün optimaldır: məlumat sinxronizasiyası, analitika göndərmə, növbələrin işlənməsi. API zəmanət verir hətta cihaz söndürülsə belə icra — tapşırıq yükləmədən sonra yenidən planlaşdırılır.

Nə vaxt iOS BGTaskScheduler seçməli

BGTaskScheduler sistemin istənilən əlverişli vaxtda yerinə yetirə biləcəyi tapşırıqlar üçün uyğundur: yeni məzmun yükləmə, vidjetlərin yenilənməsi, keşin təmizlənməsi. Təcili əməliyyatlar üçün uyğun deyil — cihaz Doze rejimindədirsə və ya batareya səviyyəsi aşağıdırsa sistem tapşırığı təxirə salır.

Tez-tez verilən suallar

Background Execution və Background Modes arasında fərq nədir?

Background Execution — fonda icra olunan istənilən kodu təsvir edən ümumi anlayışdır. Background Modes — iOS-un tətbiqə müəyyən növ fon əməliyyatlarını (audio, geolokasiya, VoIP, fetch) yerinə yetirməyə imkan verən xüsusi mexanizmidir. Android Foreground Service növləri vasitəsilə oxşar yanaşmadan istifadə edir.

Niyə tətbiqim fonda 30 saniyədən sonra dayanır?

iOS-da bu BGAppRefreshTask üçün standart məhdudiyyətdir. Sistem limit keçdikdə tapşırığı məcburi dayandırır. Android-də oxşar vəziyyət tətbiq WorkManager və ya Foreground Service istifadə etmədikdə baş verir — adi Service sistem tərəfindən fon keçidi zamanı dayandırılır.

Hər iki platformada tapşırığın icrasını necə təmin etmək olar?

Android-də WorkManager istifadə edin — hətta yenidən başlatmadan sonra belə icranı təmin edir. iOS-da icraya zəmanət vermək mümkün deyil — sistem tapşırığı nə vaxt işə salacağına özü qərar verir. Yeganə zəmanət yolu — istifadəçiyə görünən göstərici ilə Background Modes (audio, location) istifadə etməkdir.

Fon icrasına icazə verilib-verilmədiyini necə yoxlamaq olar?

iOS-da UIApplication.shared.backgroundRefreshStatus çağırın — status .available, .denied və ya .restricted. Android-də batareya optimallaşdırmasından istisnanı yoxlamaq üçün PowerManager.isIgnoringBatteryOptimizations() istifadə edin. WorkManager üçün yoxlama tələb olunmur — API sistem məhdudiyyətlərini özü idarə edir.

Fon icrasına hansı alternativlər var?

Push bildirişləri — fon kodu olmadan hərəkətləri tetiklemək üçün əsas mexanizmdir. iOS-da VoIP üçün PushKit və məlumat yeniləməsi üçün Silent Push mövcuddur. Android-də — High Priority FCM və Notification Trampoline. Foreground Service vasitəsilə WebSockets — real-time tətbiqlər üçün alternativdir.

Nəticə

  • Background Execution — tətbiq bağlandıqda kodun icrası mexanizmi, sinxronizasiya, yükləmə və bildirişlər üçün kritik əhəmiyyətlidir.
  • Android WorkManager (zəmanətli icra), Foreground Service (uzunmüddətli görünən tapşırıqlar) və Doze rejimi məhdudiyyətləri təklif edir.
  • iOS BGTaskScheduler (planlaşdırma), Background App Refresh (dövri yeniləmələr) və media/geolokasiya üçün Background Modes istifadə edir.
  • Enerji sərfiyyatı — məhdudiyyətlərin əsas səbəbi: optimallaşdırılmamış fon prosesləri cihazın işləmə müddətini 20–30% azaldır.
  • Məxfilik — hər iki platforma açıq icazələr (Android POST_NOTIFICATIONS, iOS Background Modes) və istifadəçi bildirişi tələb edir.
  • WorkManager — cihaz yenidən başlatdıqdan sonra icra zəmanəti olan yeganə API, BGTaskScheduler sistemin qərarına əsaslanır.
  • Status panelində istifadəçiyə görünən uzunmüddətli əməliyyatlar üçün Android-də Foreground Service, iOS-da Background Modes istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun