Background Execution sa mobile development — esensya, limitasyon at mga prinsipyo ng paggana

May-akda: IT Sectr Nai-publish: 2026-03-26 Oras ng pagbabasa: 9 min

Background Execution — mekanismo ng pagpapatakbo ng code ng mobile app kapag wala ito sa foreground. Kung wala ang mekanismong ito, ang app ay isa-suspend ng system kapag na-minimize. Ayon sa Apple, 2026, nililimitahan ng iOS ang oras sa background hanggang 30 segundo, samantalang ang Android ay nagbibigay-daan sa mas flexible na mga senaryo sa pamamagitan ng WorkManager at Foreground Service.

Mga Pangunahing

  • Background Execution — pagpapatakbo ng code ng app kapag ito ay naka-minimize o hindi aktibo.
  • iOS — mahigpit na limitasyon: 30 segundo para sa mga gawain, striktong Background Modes at App Refresh.
  • Android — WorkManager, Foreground Service, Scheduling at Doze mode na may iba't ibang limitasyon.
  • Pagkonsumo ng enerhiya — pangunahing dahilan ng mga limitasyon: ang mga background process ay nagpapababa ng oras ng paggana ng device.
  • Privacy — simula Android 8 at iOS 13, ang mga system ay nangangailangan ng malinaw na pahintulot para sa background work.

Ano ang Background Execution sa mga mobile app?

Background Execution — kakayahan ng app na magpatuloy sa pagpapatakbo ng code matapos i-minimize ng user o lumipat sa ibang app. Kung walang mga espesyal na mekanismo, inililipat ng mobile OS ang app sa status na Suspended (naka-suspend) pagkalipas ng ilang segundo ng pagpasok sa background, pinalalaya ang processor at memory para sa mga aktibong app.

Mga status ng app sa background

Ang mobile app ay dumadaan sa ilang status ng life cycle: Foreground (aktibo), Background (nasa background), Suspended (naka-suspend) at Terminated (natapos). Background — ang tanging status kung saan ang app ay maaaring magpatakbo ng code nang walang nakikitang interface. Iba-ibang tinutukoy ng iOS at Android ang tagal at pinapayagang operasyon sa status na ito.

Mga pangunahing senaryo ng paggamit

Ang background execution ay kinakailangan para sa mga gawain tulad ng pag-sync ng data, pag-download ng content, pagproseso ng Push notification, geolocation sa background at pag-play ng audio. Pag-sync — ang pinakakaraniwang senaryo: ang app ay nagpapadala ng data sa server o nagda-download ng mga update nang walang partisipasyon ng user.

  • Pag-sync — pag-upload at pag-download ng data kapag nagbago ang network.
  • Geolocation — pagsubaybay ng lokasyon sa fitness tracker at navigator.
  • Media — pag-play ng audio at video sa background (musika, podcast).
  • Mga notification — pagproseso ng Push at lokal na notification.
  • Pag-download — pag-download ng malalaking file (podcast, video) sa background.

Bakit nililimitahan ng mga mobile OS ang background execution

Mga limitasyon ng background execution ay dulot ng tatlong factor: pagkonsumo ng enerhiya, performance ng device at privacy ng user. Ang processor at radio modules (Wi-Fi, mobile data) ay kumokonsumo ng pinakamaraming enerhiya — bawat background process ay nagpapababa ng oras ng baterya.

Pagkonsumo ng enerhiya at autonomy

Ipinapakita ng pananaliksik ng Google na ang mga app na nagpapatakbo ng background tasks bawat 5 minuto ay nagpapababa ng oras ng paggana ng device ng 20–30% bawat araw. Kahit ang optimized na background operations na may frequency na isang beses kada oras ay may kapansin-pansing epekto kung may higit sa dalawang ganoong app.

RAM memory at performance

Bawat background app ay gumagamit ng RAM memory. Kapag kulang ang memory, inaalis ng system ang mga app mula sa memory, na nagiging sanhi ng restart kapag bumalik ang user. iOS ay gumagamit ng Jetsam algorithm — mekanismo ng sapilitang pagtatapos ng background process kapag lumampas sa limitasyon ng memory. Android ay gumagamit ng LMK (Low Memory Killer) na may katulad na prinsipyo.

Privacy ng user

Simula Android 10 at iOS 13, ang system ay nangangailangan ng mga app na ideklara ang layunin ng background work. Nilimitahan ng Android ang paglunsad ng Broadcast Receiver sa background. iOS ay nangangailangan ng pagtukoy ng Background Mode sa Capabilities ng proyekto. Maaaring i-off ng user ang background execution para sa anumang app sa mga setting.

OSBersyonLimitasyonEpekto
Android8.0IMPLICIT_BROADCAST bawal67% ng background Broadcast sira
Android9.0Doze pinagbutiPaglimit ng network calls
Android12+Foreground Service limitadoBawal maglunsad mula sa background
iOS7+Background App RefreshPana-panahong window ng update
iOS13+BGTaskSchedulerPagpaplano sa halip ng pagpapatakbo

Background Execution sa Android: WorkManager at Foreground Service

Ang Android ay nagbibigay ng ilang mekanismo para sa background execution, bawat isa ay lumulutas ng sarili nitong kategorya ng mga gawain. WorkManager — ang inirerekomendang API para sa mga naantalang at pana-panahong gawain. Foreground Service — para sa agarang pagpapatakbo na may nakikitang notification. JobScheduler — low-level na analog ng WorkManager.

WorkManager — unibersal na solusyon

WorkManager — bahagi ng Android Jetpack, tinitiyak ang pagpapatakbo ng background tasks na may garantiya ng pagkumpleto kahit matapos i-restart ang device. Pinipili ng API ang optimal na oras ng pagpapatakbo na isinasaalang-alang ang status ng network, antas ng baterya at Doze mode. Ang WorkManager ay compatible sa API 14+ at pinapalitan ang lumang AlarmManager at JobScheduler.

Foreground Service — para sa mahabang operasyon

Kapag ang app ay kailangang magpatakbo ng gawaing nakikita ng user (pag-play ng musika, pag-record ng geolocation), ginagamit ang Foreground Service. Ang serbisyo ay nagpapakita ng permanenteng notification sa status bar at may mas mataas na priority — hindi ito tatapusin ng system hanggang matapos ang gawain. Simula Android 13, kailangan ang pahintulot na POST_NOTIFICATIONS.

Doze Mode at battery optimization

Simula Android 6.0, ang device ay pumapasok sa Doze mode kapag hindi ginagamit. Sa mode na ito, ang network operations, pag-sync at JobScheduler ay naaantala. Ang WorkManager ay awtomatikong umaangkop sa Doze — ang mga gawain ay isinasagawa sa pinakamalapit na Maintenance Window kapag ang device ay lumabas mula sa sleep para sa maintenance.

Background Execution sa iOS: Background Tasks at App Refresh

Ang iOS ay gumagamit ng mas striktong approach sa background execution. Background App Refresh — pangunahing mekanismo ng pana-panahong pag-update ng data. BGTaskScheduler — API para sa pagpaplano ng mga gawain na isinasaalang-alang ang system status. Para sa mahabang operasyon, available ang Background Modes: audio, location, voip, fetch at processing.

Background App Refresh

Background App Refresh ay nagpapahintulot sa app na gumising tuwing 15–30 minuto para sa pag-sync ng data. Ang oras ng paggising ay depende sa pag-uugali ng user — sinusuri ng system kung gaano kadalas niya binubuksan ang app. Maaaring i-off ng user ang function na ito para sa mga indibidwal na app sa Settings — General — Background App Refresh.

BGTaskScheduler — modernong approach

Simula iOS 13, pinalitan ng BGTaskScheduler ang lumang performFetch at beginBackgroundTask. Ang app ay nagrerehistro ng mga gawain na may identifier at minimum interval, at ang system mismo ang tumutukoy ng optimal na oras ng pagpapatakbo. Ang mga gawain ay nahahati sa dalawang uri: BGProcessingTask (mahaba, 10+ minuto) at BGAppRefreshTask (maikli, hanggang 30 segundo).

Limitasyon ng oras ng pagpapatakbo

Ang iOS ay naglalaan ng limitadong oras sa app para sa pagpapatakbo ng background task — hanggang 30 segundo para sa BGAppRefreshTask at hanggang 10 minuto para sa BGProcessingTask. Pagkalampas ng limitasyon, sapilitang tinatapos ng system ang gawain. Dapat tawagan ng developer ang expiration handler para i-save ang pansamantalang resulta.

Mga halimbawa ng code: Android WorkManager

Tingnan natin ang praktikal na implementasyon ng background execution sa Android gamit ang WorkManager. Halimbawa ng pag-sync ng data tuwing 8 oras na isinasaalang-alang ang network status. Ginagarantiyahan ng WorkManager ang pagpapatakbo ng gawain kahit matapos i-restart ang device.

kotlin
class SyncWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        return try {
            syncDataToServer()
            Log.d("Sync", "Naka-sync ang data")
            Result.success()
        } catch (e: Exception) {
            Result.retry()
        }
    }
}

// Pagpapatakbo ng pana-panahong gawain bawat 8 oras
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)

Foreground Service na may notification

Para sa mahabang operasyon na nakikita ng user, gamitin ang Foreground Service. Halimbawa ng pag-download ng file na may progreso sa notification. Ang serbisyo ay tumatawag ng startForeground() na may notification na hindi maaaring i-dismiss. Matapos ang download — 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("Pag-download ng file")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Mga halimbawa ng code: iOS BGTaskScheduler

Sa iOS, ang background execution ay naka-configure sa pamamagitan ng BGTaskScheduler. Halimbawa ng pagrehistro at pagpapatakbo ng content update task. Dapat irehistro ng app ang identifier ng gawain sa Info.plist at tawagan ang submit kapag ang gawain ay dapat na i-schedule.

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 = {
        // I-save ang pansamantalang data
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Para sa mahabang operasyon (paglilinis ng cache, pagproseso ng data) gamitin ang BGProcessingTask. Ang system ay nagbibigay ng hanggang 10 minuto para sa pagpapatakbo. Tatakbo lamang kapag ang device ay naka-charge at naka-konekta sa Wi-Fi. Nangangailangan ng hiwalay na identifier sa Info.plist at pagrehistro sa pamamagitan ng register(forTaskWithIdentifier:).

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)
}

Paghahambing ng mga approach ng Android at iOS

Ang Android at iOS ay magkaiba nang malaki sa pilosopiya ng background execution. Android ay nagbibigay ng flexible na mga tool na may malaking kontrol, ngunit nangangailangan ng tamang pagpili ng API mula sa developer. iOS ay nililimitahan ang mga kakayahan, ngunit ginagarantiyahan ang stable na performance at autonomy para sa user.

KriterionAndroidiOS
Inirerekomendang APIWorkManagerBGTaskScheduler
Max. oras ng gawainWalang limitasyon (Foreground Service)30 segundo / 10 minuto (processing)
Pana-panahong gawainOo, sa pamamagitan ng PeriodicWorkRequestOo, sa pamamagitan ng BGAppRefreshTask
Garantiya ng pagpapatakboOo, kahit matapos ang restartHindi — system ang nagdedesisyon kung kailan
Access sa network sa backgroundNilimitahan ng Doze modeSa pamamagitan ng URLSession na may background config
Geolocation sa backgroundForeground Service + pahintulotBackground Mode location + NSLocation
Audio sa backgroundForeground Service na may media notificationBackground Mode audio + AVAudioSession

Kailan pumili ng Android WorkManager

Ang WorkManager ay optimal para sa mga gawaing dapat isagawa anuman ang status ng app: pag-sync ng data, pagpapadala ng analytics, pagproseso ng mga queue. Ginagarantiyahan ng API ang pagpapatakbo kahit matapos i-off ang device — ang gawain ay nire-reschedule pagkatapos mag-boot.

Kailan pumili ng iOS BGTaskScheduler

Ang BGTaskScheduler ay angkop para sa mga gawaing maaaring isagawa ng system anumang oras: pag-download ng bagong content, pag-update ng widgets, paglilinis ng cache. Hindi angkop para sa mga agarang operasyon — inaantala ng system ang gawain kung ang device ay nasa Doze o mababa ang baterya.

Mga Madalas Itanong

Ano ang pagkakaiba ng Background Execution at Background Modes?

Background Execution — pangkalahatang konsepto na naglalarawan ng anumang code na tumatakbo sa background. Background Modes — tiyak na mekanismo ng iOS na nagpapahintulot sa app na magpatakbo ng ilang uri ng background operations: audio, geolocation, VoIP, fetch. Android ay gumagamit ng katulad na approach sa pamamagitan ng mga uri ng Foreground Service.

Bakit humihinto ang aking app pagkatapos ng 30 segundo sa background?

Sa iOS ito ang standard na limitasyon para sa BGAppRefreshTask. Sapilitang tinatapos ng system ang gawain pagkalampas ng limitasyon. Sa Android, ang katulad na sitwasyon ay nangyayari kapag ang app ay hindi gumagamit ng WorkManager o Foreground Service — ang regular na Service ay tinatapos ng system pagkatapos pumasok sa background.

Paano garantisadong maisasagawa ang gawain sa parehong platform?

Sa Android gamitin ang WorkManager — ginagarantiyahan ang pagpapatakbo kahit matapos ang restart. Sa iOS hindi maaaring garantisado ang pagpapatakbo — system mismo ang nagdedesisyon kung kailan isasagawa ang gawain. Ang tanging paraan para garantisado ito — paggamit ng Background Modes (audio, location) na may nakikitang indicator para sa user.

Paano suriin kung pinapayagan ang background execution?

Sa iOS tawagan ang UIApplication.shared.backgroundRefreshStatus — status .available, .denied o .restricted. Sa Android gamitin ang PowerManager.isIgnoringBatteryOptimizations() para suriin ang exception mula sa battery optimization. Para sa WorkManager hindi kailangan ang pagsusuri — API mismo ang humahawak ng mga limitasyon ng system.

Anong mga alternatibo ang mayroon para sa background execution?

Push notification — pangunahing mekanismo para sa pag-trigger ng mga aksyon nang walang background code. Sa iOS available ang PushKit para sa VoIP at Silent Push para sa pag-update ng data. Sa Android — High Priority FCM at Notification Trampoline. WebSockets sa pamamagitan ng Foreground Service — alternatibo para sa real-time na mga app.

Buod

  • Background Execution — mekanismo ng pagpapatakbo ng code kapag naka-minimize ang app, kritikal para sa pag-sync, pag-download at mga notification.
  • Android ay nag-aalok ng WorkManager (garantisadong pagpapatakbo), Foreground Service (mahahabang nakikitang gawain) at mga limitasyon ng Doze mode.
  • iOS ay gumagamit ng BGTaskScheduler (pagpaplano), Background App Refresh (pana-panahong update) at Background Modes para sa media at geolocation.
  • Pagkonsumo ng enerhiya — pangunahing dahilan ng mga limitasyon: ang hindi optimized na background process ay nagpapababa ng oras ng baterya ng 20–30%.
  • Privacy — parehong platform ay nangangailangan ng malinaw na pahintulot (Android POST_NOTIFICATIONS, iOS Background Modes) at notipikasyon ng user.
  • WorkManager — tanging API na may garantiya ng pagpapatakbo pagkatapos ng restart ng device, ang BGTaskScheduler ay umaasa sa desisyon ng system.
  • Gamitin ang Foreground Service sa Android at Background Modes sa iOS para sa mahahabang operasyon na nakikita sa status bar.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din