Mga gawain sa background sa mobile development: ano ang mga ito, mga uri at kung paano gumagana

May-akda: IT Sectr Nai-publish: 2026-03-22 Oras ng pagbabasa: 10 min

Pag-load ng data, pag-sync ng nilalaman, pagpapadala ng analytics — maraming gawain ang hindi nangangailangan ng aktibong partisipasyon ng user. Gayunpaman, nililimitahan ng mga mobile device ang background work para makatipid ng baterya at mapanatili ang performance. Ang mga gawain sa background (background tasks) ay mga mekanismo na nagpapahintulot sa isang app na mag-execute ng code kapag hindi ito nakikita ng user. Sa artikulong ito, tatalakayin natin ang WorkManager, BGTaskScheduler, Foreground Service at ang mga katangian ng Doze Mode. Para sa karagdagang detalye, tingnan ang opisyal na dokumentasyon ng WorkManager.

Mga Pangunahing Punto

  • WorkManager — ang pamantayan para sa mga gawain sa background sa Android (Jetpack)
  • BGTaskScheduler — ang modernong API para sa mga gawain sa background sa iOS (iOS 13+)
  • Foreground Service — para sa mga gawain na nakikita ng user (musika, GPS)
  • Doze Mode at App Standby — mga mode ng pagtitipid ng enerhiya na naglilimita sa background work
  • Sa parehong platform, nililimitahan ng system ang background execution; dapat piliin ng developer ang tamang API
  • JobScheduler — legacy API para sa Android 5+; inirerekomenda ang pag-migrate sa WorkManager

Ano ang mga gawain sa background?

Ang gawain sa background ay anumang code na tumatakbo kapag ang app ay wala sa foreground (aktibong screen). Maaaring kabilang dito ang: pana-panahong pag-sync ng data sa server, pag-download ng malalaking file, pag-process ng mga push notification, pagsubaybay sa geolocation, pag-update ng mga widget. Ang bawat platform ay may sariling mga paghihigpit sa background work: ang iOS ay mas mahigpit (10–30 minuto ng oras ng background), ang Android ay mas maluwag ngunit pinahigpit ang mga patakaran mula sa bersyon 9.

Ang arkitektura ng mga gawain sa background ay binuo sa tatlong antas: (1) agarang gawain — isinasagawa agad (Foreground Service); (2) ipinagpaliban na gawain — isinasagawa sa angkop na mga kondisyon (WorkManager, BGTaskScheduler); (3) pana-panahong gawain — nauulit sa itinakdang agwat. Ang pagpili ng tamang antas ay tumutukoy kung ang gawain ay makukumpleto sa oras at kung ito ay hahantong sa pagtanggi ng app sa tindahan.

Sa parehong platform, mahigpit na inirerekomenda ng Google/Apple ang paggamit ng declarative API sa halip na direktang pamamahala ng mga thread sa background. Ang WorkManager sa Android at BGTaskScheduler sa iOS ay nagpapahintulot sa system na ma-optimize ang pamamahagi ng background work sa pagitan ng mga app, na nag-grupo ng mga gawain upang makatipid ng enerhiya. Sa IT Sectr, palagi naming sinisimulan ang pagdidisenyo ng background architecture sa pamamagitan ng pagsusuri ng mga kinakailangan sa dalas at pagkaapurahan ng mga update.

Mga gawain sa background sa iOS (Background Fetch, BGTaskScheduler)

Ang iOS ay nagbibigay ng ilang mga mekanismo para sa background work. Background Fetch — pana-panahong pag-update ng nilalaman na may agwat na tinutukoy ng system (hindi ng developer). Ang app ay makakakuha ng ~30 segundong window para mag-download ng bagong data. Ang Background Fetch ay naa-activate sa pamamagitan ng Capabilities → Background Modes → Background Fetch at ipinapatupad sa AppDelegate: application(_:performFetchWithCompletionHandler:).

Ang BGTaskScheduler ay ang modernong API para sa iOS 13+, na pumapalit sa Background Fetch. Ang developer ay nagrehistro ng isang gawain na may identifier, at ang system ay nagpapatakbo nito sa ilalim ng angkop na mga kondisyon. BGAppRefreshTask — para sa maiikling pag-update ng nilalaman; BGProcessingTask — para sa mahabang gawain (paglilinis ng cache, pag-sync ng database). Ang mga gawain ay nirerehistro sa paglunsad ng app, at ang system ay nag-iskedyul ng kanilang pagpapatupad na isinasaalang-alang ang estado ng baterya, network, at aktibidad ng user.

Background Modes — isang listahan ng mga mode na nagpapahintulot sa background work para sa mga partikular na sitwasyon: Audio (pag-playback sa background), Location (pagsubaybay sa GPS), VoIP (mga tawag sa pamamagitan ng PushKit), BLE (koneksyon sa mga Bluetooth device), Processing (mahabang gawain sa pamamagitan ng BGTaskScheduler). Ang bawat mode ay nangangailangan ng pagbibigay-katwiran sa panahon ng pagsusuri ng App Store. Ang paggamit ng mga mode nang walang tunay na pangangailangan ay karaniwang dahilan ng pagtanggi ng app.

Significant Location Change — isang mekanismo para sa mga app na hindi nangangailangan ng patuloy na geolocation ngunit kailangang malaman ang tungkol sa makabuluhang paggalaw ng user (higit sa 500 metro). Ginigising ng system ang app kapag nagbago ang cellular tower. Ang mekanismong ito ay malaki ang natitipid sa baterya kumpara sa patuloy na pagsubaybay sa GPS.

Mga gawain sa background sa Android (WorkManager, JobScheduler, Foreground Service)

Ang Android ay nag-aalok ng pinakamayamang set ng API para sa mga gawain sa background, ngunit mula sa bersyon 8.0 (API 26) ang mga patakaran ay naging mas mahigpit. WorkManager ay ang inirerekomendang solusyon mula sa Google para sa lahat ng uri ng mga gawain sa background. Ginagarantiyahan ng WorkManager ang pagpapatupad ng gawain kahit na matapos i-restart ang device (sa pamamagitan ng BootReceiver) at sumusuporta sa mga chain ng gawain, napapansing LiveData/Flow at backward compatibility hanggang API 14.

Gumagamit ang WorkManager ng Worker — isang base class na may paraang doWork(). Tinutukoy ng Constraints ang mga kundisyon ng pagpapatupad: NetworkType.CONNECTED, BatteryNotLow, StorageNotLow. PeriodicWorkRequest — para sa pana-panahong gawain na may minimum na agwat na 15 minuto. Ang WorkManager ay awtomatikong umaangkop sa Doze Mode at App Standby, nag-grupo ng mga gawain sa mga window ng maintenance. Halimbawa ng isang simpleng Worker:

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 — isang mas lumang API (Android 5+, API 21). Nag-iskedyul ng mga gawain na may tinukoy na mga kundisyon (network, pag-charge, idle). Limitasyon: hindi sumusuporta sa pag-restart ng device (kailangan ng BootReceiver) at walang napapansing estado. Ang JobScheduler ay angkop para sa mga simpleng gawain sa legacy na proyekto; para sa mga bagong proyekto, gamitin ang WorkManager.

Foreground Service — isang serbisyo na nakikita ng user sa pamamagitan ng patuloy na notification (ongoing notification). Ginagamit para sa: pag-playback ng musika, pagsubaybay sa GPS, pag-download ng malalaking file. Ang Foreground Service ay may mataas na prayoridad — hindi ito papatayin ng system kapag mababa ang memory. Simula sa Android 13, kinakailangan ang pahintulot ng FOREGROUND_SERVICE_SPECIAL_USE para sa ilang uri. Ang alternatibo ay WorkManager na may ForegroundServiceOption (mahabang gawain).

AlarmManager — para sa mga gawain na dapat tumakbo sa eksaktong oras (alarm, paalala). Maaaring gisingin ng AlarmManager ang device mula sa Doze Mode (setAlarmClock). Hindi inirerekomenda para sa regular na pag-sync dahil sa mataas na konsumo ng kuryente. Para sa pana-panahong gawain, gamitin ang WorkManager, at AlarmManager lamang kapag kritikal ang eksaktong oras.

Scenario iOS Android
Pana-panahong update ng nilalamanBGAppRefreshTask (BGTaskScheduler)WorkManager (PeriodicWorkRequest)
Mahabang gawain sa backgroundBGProcessingTaskWorkManager + ForegroundService
Pag-playback ng audioBackground Audio ModeForeground Service
Pagsubaybay sa GPSSignificant Location Change / Background LocationForeground Service + FusedLocationProvider
VoIP / Mga tawagPushKit + CallKitConnectionService + Foreground Service
Eksaktong oras (alarm)UNNotificationRequest (calendar)AlarmManager
Pag-process ng push (background)Notification Service ExtensionFirebaseMessagingService (onMessageReceived)

Doze Mode at App Standby

Ang Doze Mode ay isang mode ng pagtitipid ng enerhiya sa Android na nakakaapekto sa pagpapatupad ng mga gawain sa background. Ipinakilala sa Android 6.0 (API 23). Kapag hindi nagcha-charge ang device, naka-off ang screen, at hindi gumagalaw ang device, hinaharangan ng Doze Mode ang mga network request, ipinagpapaliban ang JobScheduler at WakeLock. Pana-panahon, nagbubukas ang Doze ng mga window ng maintenance — maiikling agwat kung kailan maaaring mag-execute ang mga app ng mga ipinagpaliban na gawain. Mula sa Android 7.0 (API 24), nag-a-activate ang Doze kapag naka-off ang screen, hindi lamang kapag ganap na hindi gumagalaw.

App Standby — isang mode kung saan ang mga hindi ginagamit na app ay inilalagay sa standby. Kung ang isang app ay walang aktibong notification at hindi nabuksan sa loob ng ilang araw, ito ay inilalagay sa isang Standby Bucket: aktibo (active), working, frequent, rare. Kung gaano kadalas ginagamit ang app, ganoon kahigpit ang mga paghihigpit: ang mga network request ay ipinagpapaliban, ang pag-sync ay hinaharang, ang JobScheduler ay hindi tumatakbo.

WakeLock — isang mekanismo na nagpapanatiling gising sa device (pinipigilan itong matulog). Ginagamit upang makumpleto ang mahahalagang operasyon. Ang WakeLock ay dapat pakawalan (release) pagkatapos makumpleto ang gawain, kung hindi ay mauubos ang baterya sa loob ng ilang oras. Hindi gumagana ang WakeLock sa Doze Mode — binabalewala ito ng system. Ang pagtatrabaho sa WakeLock sa Android 8+ ay nangangailangan ng pahintulot ng WAKE_LOCK at tamang pamamahala sa lifecycle.

Sa IT Sectr, isinasaalang-alang namin ang Doze Mode at App Standby sa yugto ng disenyo. Awtomatikong hinahawakan ng WorkManager ang mga mode na ito, ngunit para sa Foreground Service kailangan planuhin ang tamang paghawak ng mga transition sa Doze. Inirerekomenda ang pagsubok ng background work sa mga totoong device na may naka-enable na power-saving mode at pagkatapos ng mahabang panahon ng idle.

Mga praktikal na tip

Kapag nagdidisenyo ng mga gawain sa background, sundin ang mga tip na ito. 1. Palaging gamitin ang WorkManager para sa mga bagong Android project. Niresolba nito ang mga problema sa compatibility, Doze Mode at pag-restart ng device. 2. Sa iOS, mas piliin ang BGTaskScheduler kaysa Background Fetch para sa iOS 13+. 3. Gamitin ang Foreground Service lamang kapag ang gawain ay talagang nangangailangan ng nakikitang notification. 4. Huwag abusuhin ang WakeLock — nauubos nito ang baterya at maaaring humantong sa pagtanggi ng app. 5. Subukan ang mga gawain sa background sa Doze Mode: adb shell dumpsys deviceidle force-idle. 6. Palaging i-verify ang pagkumpleto ng gawain sa pamamagitan ng pag-log at analytics. 7. Tandaan ang mga limitasyon: ang iOS ay nagbibigay ng ~30 segundo para sa Background Fetch at ~ilang minuto para sa BGProcessingTask. Ang Android WorkManager ay hindi ginagarantiya ang eksaktong oras ng pagpapatupad.

Mga Madalas Itanong

Ano ang pagkakaiba ng Background Service at Foreground Service sa Android?

Ang Background Service ay tumatakbo nang walang nakikitang notification at maaaring patayin ng system anumang oras. Ang Foreground Service ay dapat magpakita ng patuloy na notification (ongoing notification) at may mas mataas na prayoridad. Ang Foreground Service ay ginagamit para sa pag-playback ng musika at pagsubaybay sa GPS.

Ano ang Doze Mode at paano ito nakakaapekto sa mga gawain sa background?

Ang Doze Mode ay isang power-saving mode ng Android na nagdi-disable ng network access at nagpapaliban ng JobScheduler/WakeLock kapag hindi ginagamit ang device. Ang WorkManager ay umaangkop sa Doze Mode nang awtomatiko.

Paano magpatakbo ng gawain sa background sa iOS?

Sa iOS, ang mga gawain sa background ay pinapatakbo sa pamamagitan ng Background Fetch (pana-panahong update), BGTaskScheduler (mga ipinagpaliban na gawain) o Background Modes (audio, VoIP, BLE, lokasyon). Ang BGTaskScheduler ay ang modernong API para sa iOS 13+, na pumapalit sa Background Fetch.

WorkManager o JobScheduler: alin ang pipiliin?

Ang WorkManager ay ang inirerekomendang solusyon ng Google para sa lahat ng gawain sa background sa Android. Ang JobScheduler ay isang mas lumang API na may limitadong kakayahan. Sinusuportahan ng WorkManager ang mga chain ng gawain, napapansing LiveData/Flow at backward compatibility hanggang API 14.

Ano ang App Standby?

Ang App Standby ay isang Android mode kung saan ang mga hindi ginagamit na app ay inilalagay sa standby status: ang mga network request ay ipinagpapaliban, ang pag-sync ay pinipigilan. Kung ang isang app ay hindi ginagamit sa loob ng ilang araw, inilalagay ito ng Android sa isang Standby Bucket (active, working, frequent, rare).

Buod

  • WorkManager — unibersal na solusyon para sa mga gawain sa background sa Android; awtomatikong umaangkop sa Doze Mode
  • BGTaskScheduler — modernong API para sa iOS 13+ (BGAppRefreshTask, BGProcessingTask)
  • Foreground Service — para sa mga gawaing nakikita ng user na may patuloy na notification
  • Doze Mode at App Standby — dapat isaalang-alang; awtomatikong hinahawakan ng WorkManager
  • JobScheduler at AlarmManager — para sa legacy na proyekto; sa bagong proyekto gamitin ang WorkManager
  • Ang iOS ay naglilimita ng background work nang mas mahigpit kaysa Android — isaalang-alang ito sa pagdidisenyo
  • Palaging subukan ang mga gawain sa background sa totoong device sa power-saving mode

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