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 — 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.
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.
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.
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.
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.
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.
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.
| OS | Bersyon | Limitasyon | Epekto |
|---|---|---|---|
| Android | 8.0 | IMPLICIT_BROADCAST bawal | 67% ng background Broadcast sira |
| Android | 9.0 | Doze pinagbuti | Paglimit ng network calls |
| Android | 12+ | Foreground Service limitado | Bawal maglunsad mula sa background |
| iOS | 7+ | Background App Refresh | Pana-panahong window ng update |
| iOS | 13+ | BGTaskScheduler | Pagpaplano sa halip ng pagpapatakbo |
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 — 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.
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.
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.
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 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.
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).
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.
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.
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)
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).
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()
}
}
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.
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)
}
}
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:).
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)
}
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.
| Kriterion | Android | iOS |
|---|---|---|
| Inirerekomendang API | WorkManager | BGTaskScheduler |
| Max. oras ng gawain | Walang limitasyon (Foreground Service) | 30 segundo / 10 minuto (processing) |
| Pana-panahong gawain | Oo, sa pamamagitan ng PeriodicWorkRequest | Oo, sa pamamagitan ng BGAppRefreshTask |
| Garantiya ng pagpapatakbo | Oo, kahit matapos ang restart | Hindi — system ang nagdedesisyon kung kailan |
| Access sa network sa background | Nilimitahan ng Doze mode | Sa pamamagitan ng URLSession na may background config |
| Geolocation sa background | Foreground Service + pahintulot | Background Mode location + NSLocation |
| Audio sa background | Foreground Service na may media notification | Background Mode audio + AVAudioSession |
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.
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
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.
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.
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.
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.
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
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.
Basahin din