Background Execution dalam pengembangan mobile — esensi, batasan dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-03-26 Waktu membaca: 9 mnt

Background Execution — mekanisme eksekusi kode aplikasi mobile saat aplikasi tidak berada di latar depan. Tanpa mekanisme ini, aplikasi akan dihentikan oleh sistem saat diminimalkan. Menurut Apple, 2026, iOS membatasi waktu latar belakang hingga 30 detik, sedangkan Android memungkinkan skenario yang lebih fleksibel melalui WorkManager dan Foreground Service.

Utama

  • Background Execution — eksekusi kode aplikasi saat diminimalkan atau tidak aktif.
  • iOS — batasan ketat: 30 detik untuk tugas, Background Modes dan App Refresh yang ketat.
  • Android — WorkManager, Foreground Service, Scheduling dan Doze mode dengan batasan berbeda.
  • Konsumsi daya — penyebab utama pembatasan: proses latar belakang memperpendek masa pakai baterai perangkat.
  • Privasi — mulai Android 8 dan iOS 13, sistem memerlukan izin eksplisit untuk kerja latar belakang.

Apa itu Background Execution di aplikasi mobile?

Background Execution — kemampuan aplikasi untuk melanjutkan eksekusi kode setelah pengguna meminimalkannya atau beralih ke aplikasi lain. Tanpa mekanisme khusus, OS mobile mengalihkan aplikasi ke status Suspended (ditangguhkan) dalam beberapa detik setelah masuk ke latar belakang, membebaskan prosesor dan memori untuk aplikasi aktif.

Status aplikasi di latar belakang

Aplikasi mobile melewati beberapa status siklus hidup: Foreground (aktif), Background (latar belakang), Suspended (ditangguhkan) dan Terminated (diakhiri). Background — satu-satunya status di mana aplikasi dapat mengeksekusi kode tanpa antarmuka yang terlihat. iOS dan Android menentukan durasi dan operasi yang diizinkan secara berbeda dalam status ini.

Skenario penggunaan utama

Eksekusi latar belakang diperlukan untuk tugas sinkronisasi data, unduh konten, pemrosesan notifikasi Push, geolokasi di latar belakang dan pemutaran audio. Sinkronisasi — skenario paling umum: aplikasi mengirim data ke server atau mengunduh pembaruan tanpa partisipasi pengguna.

  • Sinkronisasi — unggah dan unduh data saat jaringan berubah.
  • Geolokasi — pelacakan lokasi di pelacak kebugaran dan navigator.
  • Media — pemutaran audio dan video di latar belakang (musik, podcast).
  • Notifikasi — pemrosesan notifikasi Push dan lokal.
  • Unduh — mengunduh file besar (podcast, video) di latar belakang.

Mengapa OS mobile membatasi eksekusi latar belakang

Batasan eksekusi latar belakang disebabkan oleh tiga faktor: konsumsi daya, kinerja perangkat dan privasi pengguna. Prosesor dan modul radio (Wi-Fi, data seluler) mengonsumsi daya paling banyak — setiap proses latar belakang memperpendek masa pakai baterai.

Konsumsi daya dan otonomi

Penelitian Google menunjukkan bahwa aplikasi yang menjalankan tugas latar belakang setiap 5 minutes memperpendek masa pakai baterai perangkat sebesar 20–30% per hari. Bahkan operasi latar belakang yang dioptimalkan dengan frekuensi satu kali per jam memiliki dampak yang nyata jika ada lebih dari dua aplikasi semacam itu.

Memori RAM dan kinerja

Setiap aplikasi latar belakang memenuhi memori RAM. Saat memori tidak mencukupi, sistem membongkar aplikasi dari memori, yang menyebabkan restart saat pengguna kembali. iOS menggunakan algoritma Jetsam — mekanisme penghentian paksa proses latar belakang saat melebihi batas memori. Android menggunakan LMK (Low Memory Killer) dengan prinsip serupa.

Privasi pengguna

Mulai Android 10 dan iOS 13, sistem meminta aplikasi untuk mendeklarasikan tujuan kerja latar belakang. Android membatasi peluncuran Broadcast Receiver di latar belakang. iOS memerlukan penentuan Background Mode di Capabilities proyek. Pengguna dapat menonaktifkan eksekusi latar belakang untuk aplikasi apa pun di pengaturan.

OSVersiBatasanDampak
Android8.0IMPLICIT_BROADCAST dilarang67% Broadcast latar belakang rusak
Android9.0Doze ditingkatkanPembatasan panggilan jaringan
Android12+Foreground Service dibatasiLarangan peluncuran dari latar belakang
iOS7+Background App RefreshJendela pembaruan berkala
iOS13+BGTaskSchedulerPerencanaan alih-alih eksekusi

Background Execution di Android: WorkManager dan Foreground Service

Android menyediakan beberapa mekanisme untuk eksekusi latar belakang, masing-masing menyelesaikan kategori tugasnya sendiri. WorkManager — API yang direkomendasikan untuk tugas yang ditunda dan berkala. Foreground Service — untuk eksekusi segera dengan notifikasi yang terlihat. JobScheduler — analog tingkat rendah dari WorkManager.

WorkManager — solusi universal

WorkManager — bagian dari Android Jetpack, memastikan eksekusi tugas latar belakang dengan jaminan penyelesaian bahkan setelah perangkat di-restart. API memilih waktu eksekusi optimal dengan mempertimbangkan status jaringan, level baterai dan mode Doze. WorkManager kompatibel dengan API 14+ dan menggantikan AlarmManager serta JobScheduler yang sudah usang.

Foreground Service — untuk operasi panjang

Ketika aplikasi perlu menjalankan tugas yang terlihat oleh pengguna (memutar musik, merekam geolokasi), digunakan Foreground Service. Layanan menampilkan notifikasi permanen di bilah status dan memiliki prioritas lebih tinggi — sistem tidak akan menghentikannya hingga tugas selesai. Mulai Android 13, izin POST_NOTIFICATIONS diperlukan.

Mode Doze dan optimasi baterai

Mulai Android 6.0, perangkat masuk ke mode Doze saat tidak aktif. Dalam mode ini, operasi jaringan, sinkronisasi dan JobScheduler ditunda. WorkManager secara otomatis beradaptasi dengan Doze — tugas dijalankan di Maintenance Window terdekat saat perangkat keluar dari tidur untuk pemeliharaan.

Background Execution di iOS: Background Tasks dan App Refresh

iOS menggunakan pendekatan yang lebih ketat terhadap eksekusi latar belakang. Background App Refresh — mekanisme utama pembaruan data berkala. BGTaskScheduler — API untuk perencanaan tugas dengan mempertimbangkan status sistem. Untuk operasi panjang, tersedia Background Modes: audio, location, voip, fetch dan processing.

Background App Refresh

Background App Refresh memungkinkan aplikasi untuk bangun setiap 15–30 menit untuk sinkronisasi data. Waktu bangun tergantung pada perilaku pengguna — sistem menganalisis seberapa sering ia membuka aplikasi. Pengguna dapat menonaktifkan fungsi ini untuk aplikasi individual di Settings — General — Background App Refresh.

BGTaskScheduler — pendekatan modern

Mulai iOS 13, BGTaskScheduler menggantikan performFetch dan beginBackgroundTask yang sudah usang. Aplikasi mendaftarkan tugas dengan identifier dan interval minimum, dan sistem sendiri menentukan waktu eksekusi optimal. Tugas dibagi menjadi dua jenis: BGProcessingTask (panjang, 10+ menit) dan BGAppRefreshTask (pendek, hingga 30 detik).

Batasan waktu eksekusi

iOS mengalokasikan waktu terbatas untuk aplikasi menjalankan tugas latar belakang — hingga 30 detik untuk BGAppRefreshTask dan hingga 10 menit untuk BGProcessingTask. Setelah batas terlampaui, sistem secara paksa menghentikan tugas. Pengembang harus memanggil expiration handler untuk menyimpan hasil sementara.

Contoh kode: Android WorkManager

Mari kita lihat implementasi praktis eksekusi latar belakang di Android menggunakan WorkManager. Contoh sinkronisasi data setiap 8 jam dengan mempertimbangkan status jaringan. WorkManager menjamin eksekusi tugas bahkan setelah perangkat di-restart.

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

// Menjalankan tugas periodik setiap 8 jam
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 dengan notifikasi

Untuk operasi panjang yang terlihat oleh pengguna, gunakan Foreground Service. Contoh mengunduh file dengan progres di notifikasi. Layanan memanggil startForeground() dengan notifikasi yang tidak dapat diabaikan. Setelah unduhan selesai — 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("Mengunduh file")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Contoh kode: iOS BGTaskScheduler

Di iOS, eksekusi latar belakang dikonfigurasi melalui BGTaskScheduler. Contoh pendaftaran dan eksekusi tugas pembaruan konten. Aplikasi harus mendaftarkan identifier tugas di Info.plist dan memanggil submit saat tugas harus dijadwalkan.

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 = {
        // Simpan data sementara
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Untuk operasi panjang (membersihkan cache, memproses data) gunakan BGProcessingTask. Sistem memberikan hingga 10 menit untuk eksekusi. Hanya dijalankan saat perangkat diisi daya dan terhubung ke Wi-Fi. Memerlukan identifier terpisah di Info.plist dan pendaftaran melalui 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)
}

Perbandingan pendekatan Android dan iOS

Android dan iOS sangat berbeda dalam filosofi eksekusi latar belakang. Android menyediakan alat yang fleksibel dengan kontrol yang besar, tetapi membutuhkan pengembang untuk memilih API yang tepat. iOS membatasi kemampuan, tetapi menjamin kinerja yang stabil dan otonomi bagi pengguna.

KriteriaAndroidiOS
API yang direkomendasikanWorkManagerBGTaskScheduler
Waktu maks. tugasTidak terbatas (Foreground Service)30 detik / 10 menit (processing)
Tugas berkalaYa, melalui PeriodicWorkRequestYa, melalui BGAppRefreshTask
Jaminan eksekusiYa, bahkan setelah restartTidak — sistem memutuskan kapan
Akses jaringan di latar belakangDibatasi oleh mode DozeMelalui URLSession dengan background config
Geolokasi di latar belakangForeground Service + izinBackground Mode location + NSLocation
Audio di latar belakangForeground Service dengan notifikasi mediaBackground Mode audio + AVAudioSession

Kapan memilih Android WorkManager

WorkManager optimal untuk tugas yang harus dijalankan terlepas dari status aplikasi: sinkronisasi data, pengiriman analytics, pemrosesan antrian. API menjamin eksekusi bahkan setelah perangkat dimatikan — tugas dijadwalkan ulang setelah boot.

Kapan memilih iOS BGTaskScheduler

BGTaskScheduler cocok untuk tugas yang dapat dijalankan sistem kapan saja: mengunduh konten baru, memperbarui widget, membersihkan cache. Tidak cocok untuk operasi mendesak — sistem menunda tugas jika perangkat dalam mode Doze atau baterai rendah.

Pertanyaan yang sering diajukan

Apa perbedaan antara Background Execution dan Background Modes?

Background Execution — konsep umum yang menggambarkan kode apa pun yang dijalankan di latar belakang. Background Modes — mekanisme khusus iOS yang memungkinkan aplikasi menjalankan jenis operasi latar belakang tertentu: audio, geolokasi, VoIP, fetch. Android menggunakan pendekatan serupa melalui jenis-jenis Foreground Service.

Mengapa aplikasi saya berhenti setelah 30 detik di latar belakang?

Di iOS ini adalah batasan standar untuk BGAppRefreshTask. Sistem secara paksa menghentikan tugas setelah batas terlampaui. Di Android situasi serupa terjadi ketika aplikasi tidak menggunakan WorkManager atau Foreground Service — Service biasa dihentikan oleh sistem setelah masuk ke latar belakang.

Bagaimana menjamin eksekusi tugas di kedua platform?

Di Android gunakan WorkManager — menjamin eksekusi bahkan setelah restart. Di iOS eksekusi tidak dapat dijamin — sistem sendiri memutuskan kapan akan menjalankan tugas. Satu-satunya cara untuk menjaminnya — menggunakan Background Modes (audio, location) dengan indikator yang terlihat bagi pengguna.

Bagaimana cara memeriksa apakah eksekusi latar belakang diizinkan?

Di iOS panggil UIApplication.shared.backgroundRefreshStatus — status .available, .denied atau .restricted. Di Android gunakan PowerManager.isIgnoringBatteryOptimizations() untuk memeriksa pengecualian dari optimasi baterai. Untuk WorkManager pemeriksaan tidak diperlukan — API menangani sendiri batasan sistem.

Apa alternatif untuk eksekusi latar belakang?

Notifikasi Push — mekanisme utama untuk memicu tindakan tanpa kode latar belakang. Di iOS tersedia PushKit untuk VoIP dan Silent Push untuk pembaruan data. Di Android — High Priority FCM dan Notification Trampoline. WebSockets melalui Foreground Service — alternatif untuk aplikasi real-time.

Kesimpulan

  • Background Execution — mekanisme eksekusi kode saat aplikasi diminimalkan, penting untuk sinkronisasi, unduhan dan notifikasi.
  • Android menawarkan WorkManager (eksekusi terjamin), Foreground Service (tugas panjang terlihat) dan batasan mode Doze.
  • iOS menggunakan BGTaskScheduler (perencanaan), Background App Refresh (pembaruan berkala) dan Background Modes untuk media dan geolokasi.
  • Konsumsi daya — penyebab utama pembatasan: proses latar belakang tanpa optimasi memperpendek masa pakai baterai sebesar 20–30%.
  • Privasi — kedua platform memerlukan izin eksplisit (Android POST_NOTIFICATIONS, iOS Background Modes) dan pemberitahuan pengguna.
  • WorkManager — satu-satunya API dengan jaminan eksekusi setelah restart perangkat, BGTaskScheduler bergantung pada keputusan sistem.
  • Gunakan Foreground Service di Android dan Background Modes di iOS untuk operasi panjang yang terlihat di bilah status.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga