Pozadinski zadaci u mobilnom razvoju: šta su, koje vrste postoje i kako rade

Аутор: IT Sectr Објављено: 2026-03-22 Време читања: 10 мин

Učitavanje podataka, sinhronizacija sadržaja, slanje analitike — mnogi zadaci ne zahtevaju aktivno učešće korisnika. Međutim, mobilni uređaji ograničavaju pozadinski rad radi uštede baterije i očuvanja performansi. Pozadinski zadaci (background tasks) su mehanizmi koji omogućavaju aplikaciji da izvršava kod kada korisnik ne gleda u nju. U ovom članku ćemo obraditi WorkManager, BGTaskScheduler, Foreground Service i karakteristike Doze Mode-a. Više detalja u zvaničnoj WorkManager dokumentaciji.

Ključne tačke

  • WorkManager — standard za pozadinske zadatke na Android-u (Jetpack)
  • BGTaskScheduler — moderni API za pozadinske zadatke na iOS-u (iOS 13+)
  • Foreground Service — za zadatke koje korisnik vidi (muzika, GPS)
  • Doze Mode i App Standby — režimi za uštedu energije koji ograničavaju pozadinski rad
  • Na obe platforme sistem ograničava pozadinsko izvršavanje; programer mora izabrati pravi API
  • JobScheduler — zastareli API za Android 5+; preporučuje se migracija na WorkManager

Šta su pozadinski zadaci?

Pozadinski zadatak je svaki kod koji se izvršava kada aplikacija nije u prvom planu (aktivni ekran). Ovo može uključivati: periodičnu sinhronizaciju podataka sa serverom, preuzimanje velikih datoteka, obradu push obaveštenja, praćenje geolokacije, ažuriranje widgeta. Svaka platforma ima sopstvena ograničenja za pozadinski rad: iOS je stroži (10–30 minuta pozadinskog vremena), Android je popustljiviji, ali je od verzije 9 pooštrio pravila.

Arhitektura pozadinskih zadataka izgrađena je na tri nivoa: (1) hitni zadaci — izvršavaju se odmah (Foreground Service); (2) odloženi zadaci — izvršavaju se pod odgovarajućim uslovima (WorkManager, BGTaskScheduler); (3) periodični zadaci — ponavljaju se u zadatom intervalu. Pravilan izbor nivoa određuje da li će zadatak biti završen na vreme i da li će dovesti do odbijanja aplikacije u prodavnici.

Na obe platforme Google/Apple snažno preporučuju korišćenje deklarativnih API-ja umesto direktnog upravljanja nitima u pozadini. WorkManager na Android-u i BGTaskScheduler na iOS-u omogućavaju sistemu da optimalno rasporedi pozadinski rad između aplikacija, grupišući zadatke radi uštede energije. U IT Sectr-u uvek počinjemo projektovanje pozadinske arhitekture analizom zahteva za učestalošću i hitnošću ažuriranja.

Pozadinski zadaci na iOS-u (Background Fetch, BGTaskScheduler)

iOS pruža nekoliko mehanizama za pozadinski rad. Background Fetch — periodično ažuriranje sadržaja sa intervalom koji određuje sistem (ne programer). Aplikacija dobija prozor od ~30 sekundi za preuzimanje novih podataka. Background Fetch se uključuje preko Capabilities → Background Modes → Background Fetch i implementira u AppDelegate: application(_:performFetchWithCompletionHandler:).

BGTaskScheduler je moderni API za iOS 13+, koji zamenjuje Background Fetch. Programer registruje zadatak sa identifikatorom, a sistem ga pokreće pod odgovarajućim uslovima. BGAppRefreshTask — za kratka ažuriranja sadržaja; BGProcessingTask — za duge zadatke (čišćenje keša, sinhronizacija baze podataka). Zadaci se registruju pri pokretanju aplikacije, a sistem planira njihovo izvršavanje uzimajući u obzir stanje baterije, mreže i aktivnost korisnika.

Background Modes — lista režima koji dozvoljavaju pozadinski rad za specifične scenarije: Audio (pozadinska reprodukcija), Location (GPS praćenje), VoIP (pozivi preko PushKit-a), BLE (povezivanje sa Bluetooth uređajima), Processing (dugi zadaci preko BGTaskScheduler-a). Svaki režim zahteva opravdanje tokom pregleda u App Store-u. Korišćenje režima bez stvarne potrebe je čest razlog za odbijanje aplikacije.

Significant Location Change — mehanizam za aplikacije kojima nije potrebna stalna geolokacija, ali moraju znati o značajnom kretanju korisnika (više od 500 metara). Sistem budi aplikaciju prilikom promene mobilnog tornja. Ovaj mehanizam značajno štedi bateriju u poređenju sa stalnim GPS praćenjem.

Pozadinski zadaci na Android-u (WorkManager, JobScheduler, Foreground Service)

Android nudi najbogatiji skup API-ja za pozadinske zadatke, ali od verzije 8.0 (API 26) pravila su postala stroža. WorkManager je preporučeno rešenje od Google-a za sve vrste pozadinskih zadataka. WorkManager garantuje izvršavanje zadatka čak i nakon ponovnog pokretanja uređaja (putem BootReceiver-a) i podržava lance zadataka, vidljive LiveData/Flow i unazadnu kompatibilnost do API 14.

WorkManager koristi Worker — osnovnu klasu sa metodom doWork(). Constraints definiše uslove izvršavanja: NetworkType.CONNECTED, BatteryNotLow, StorageNotLow. PeriodicWorkRequest — za periodične zadatke sa minimalnim intervalom od 15 minuta. WorkManager se automatski prilagođava Doze Mode-u i App Standby-u, grupišući zadatke u prozore održavanja. Primer jednostavnog Worker-a:

kotlin
class SyncWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result {
        return try {
            val repository =
                Injection.provideRepository(applicationContext)
            repository.syncData()
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Запланировать задачу
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .build()

val syncRequest = OneTimeWorkRequestBuilder<SyncWorker>()
    .setConstraints(constraints)
    .build()

WorkManager.getInstance(context)
    .enqueue(syncRequest)

JobScheduler — stariji API (Android 5+, API 21). Planira zadatke sa navedenim uslovima (mreža, punjenje, neaktivnost). Ograničenje: ne podržava ponovno pokretanje uređaja (potreban BootReceiver) i nema vidljivo stanje. JobScheduler je pogodan za jednostavne zadatke u zastarelim projektima; za nove projekte koristite WorkManager.

Foreground Service — usluga koju korisnik vidi kroz stalno obaveštenje (ongoing notification). Koristi se za: reprodukciju muzike, GPS praćenje, preuzimanje velikih datoteka. Foreground Service ima visok prioritet — sistem ga neće ubiti pri nedostatku memorije. Od Android-a 13, potrebna je dozvola FOREGROUND_SERVICE_SPECIAL_USE za neke tipove. Alternativa je WorkManager sa ForegroundServiceOption (dugi zadaci).

AlarmManager — za zadatke koji moraju da se izvrše u tačno vreme (alarm, podsetnik). AlarmManager može probuditi uređaj iz Doze Mode-a (setAlarmClock). Ne preporučuje se za redovnu sinhronizaciju zbog visoke potrošnje energije. Za periodične zadatke koristite WorkManager, a AlarmManager samo kada je tačno vreme kritično.

Scenarij iOS Android
Periodično ažuriranje sadržajaBGAppRefreshTask (BGTaskScheduler)WorkManager (PeriodicWorkRequest)
Dugi pozadinski zadatakBGProcessingTaskWorkManager + ForegroundService
Reprodukcija zvukaBackground Audio ModeForeground Service
GPS praćenjeSignificant Location Change / Background LocationForeground Service + FusedLocationProvider
VoIP / PoziviPushKit + CallKitConnectionService + Foreground Service
Tačno vreme (alarm)UNNotificationRequest (calendar)AlarmManager
Obrada push (pozadina)Notification Service ExtensionFirebaseMessagingService (onMessageReceived)

Doze Mode i App Standby

Doze Mode je režim za uštedu energije u Android-u koji utiče na izvršavanje pozadinskih zadataka. Uveden u Android 6.0 (API 23). Kada se uređaj ne puni, ekran je isključen i uređaj je nepokretan, Doze Mode blokira mrežne zahteve, odlaže JobScheduler i WakeLock. Periodično Doze otvara prozore održavanja — kratke intervale kada aplikacije mogu izvršiti odložene zadatke. Od Android 7.0 (API 24) Doze se aktivira kada je ekran isključen, ne samo pri potpunoj nepokretnosti.

App Standby — režim u kome se nekorišćene aplikacije prebacuju u stanje pripravnosti. Ako aplikacija nema aktivno obaveštenje i nije otvarana nekoliko dana, stavlja se u Standby Bucket: aktivna (active), working, frequent, rare. Što se aplikacija ređe koristi, to su ograničenja stroža: mrežni zahtevi se odlažu, sinhronizacija se blokira, JobScheduler se ne pokreće.

WakeLock — mehanizam koji održava uređaj budnim (sprečava ga da zaspi). Koristi se za završavanje važnih operacija. WakeLock se mora osloboditi (release) nakon završetka zadatka, inače će se baterija isprazniti za nekoliko sati. WakeLock ne radi u Doze Mode-u — sistem ga ignoriše. Rad sa WakeLock-om na Android 8+ zahteva dozvolu WAKE_LOCK i pravilno upravljanje životnim ciklusom.

U IT Sectr-u uzimamo u obzir Doze Mode i App Standby u fazi projektovanja. WorkManager automatski obrađuje ove režime, ali za Foreground Service treba planirati pravilno rukovanje prelazima u Doze. Preporučuje se testiranje pozadinskog rada na stvarnim uređajima sa uključenim režimom za uštedu energije i nakon dužih perioda neaktivnosti.

Praktični saveti

Prilikom projektovanja pozadinskih zadataka pridržavajte se sledećih saveta. 1. Uvek koristite WorkManager za nove Android projekte. Rešava probleme kompatibilnosti, Doze Mode-a i ponovnog pokretanja uređaja. 2. Na iOS-u dajte prednost BGTaskScheduler-u umesto Background Fetch-a za iOS 13+. 3. Koristite Foreground Service samo kada zadatak zaista zahteva vidljivo obaveštenje. 4. Ne zloupotrebljavajte WakeLock — to prazni bateriju i može dovesti do odbijanja aplikacije. 5. Testirajte pozadinske zadatke u Doze Mode-u: adb shell dumpsys deviceidle force-idle. 6. Uvek proveravajte završetak zadatka putem logovanja i analitike. 7. Zapamtite ograničenja: iOS daje ~30 sekundi za Background Fetch i ~nekoliko minuta za BGProcessingTask. Android WorkManager ne garantuje tačno vreme izvršavanja.

Često postavljana pitanja

Koja je razlika između Background Service i Foreground Service na Android-u?

Background Service radi bez vidljivog obaveštenja i sistem ga može ubiti u bilo kom trenutku. Foreground Service mora da prikaže stalno obaveštenje (ongoing notification) i ima viši prioritet. Foreground Service se koristi za reprodukciju muzike i GPS praćenje.

Šta je Doze Mode i kako utiče na pozadinske zadatke?

Doze Mode je režim za uštedu energije u Android-u koji onemogućava mrežni pristup i odlaže JobScheduler/WakeLock kada se uređaj ne koristi. WorkManager se prilagođava Doze Mode-u automatski.

Kako izvršiti pozadinski zadatak na iOS-u?

Na iOS-u se pozadinski zadaci izvršavaju putem Background Fetch-a (periodična ažuriranja), BGTaskScheduler-a (odloženi zadaci) ili Background Modes-a (audio, VoIP, BLE, lokacija). BGTaskScheduler je moderni API za iOS 13+, koji zamenjuje Background Fetch.

WorkManager ili JobScheduler: šta izabrati?

WorkManager je Google-ovo preporučeno rešenje za sve pozadinske zadatke na Android-u. JobScheduler je stariji API sa ograničenim mogućnostima. WorkManager podržava lance zadataka, vidljive LiveData/Flow i unazadnu kompatibilnost do API 14.

Šta je App Standby?

App Standby je Android režim u kome se nekorišćene aplikacije prebacuju u stanje pripravnosti: mrežni zahtevi se odlažu, sinhronizacija se pauzira. Ako se aplikacija ne koristi nekoliko dana, Android je stavlja u Standby Bucket (active, working, frequent, rare).

Rezime

  • WorkManager — univerzalno rešenje za pozadinske zadatke na Android-u; automatski se prilagođava Doze Mode-u
  • BGTaskScheduler — moderni API za iOS 13+ (BGAppRefreshTask, BGProcessingTask)
  • Foreground Service — za zadatke vidljive korisniku sa stalnim obaveštenjem
  • Doze Mode i App Standby — obavezni za uzimanje u obzir; WorkManager ih automatski obrađuje
  • JobScheduler i AlarmManager — za zastarele projekte; u novim projektima koristite WorkManager
  • iOS ograničava pozadinski rad strože od Android-a — uzmite ovo u obzir prilikom projektovanja
  • Uvek testirajte pozadinske zadatke na stvarnim uređajima u režimu za uštedu energije

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту