Execução em segundo plano no desenvolvimento mobile — essência, limitações e princípios de funcionamento

Autor: IT Sectr Publicado: 2026-03-26 Tempo de leitura: 9 min

Background Execution é um mecanismo que permite executar código de um aplicativo móvel quando ele não está em primeiro plano. Sem esse mecanismo, o sistema suspende o aplicativo ao minimizá-lo. De acordo com a Apple, 2026, o iOS limita o tempo em segundo plano a 30 segundos, enquanto o Android oferece cenários mais flexíveis através do WorkManager e Foreground Service.

Principais Pontos

  • Background Execution — execução do código do aplicativo quando ele está minimizado ou inativo.
  • iOS — limites rígidos: 30 segundos para tarefas, Background Modes e App Refresh rigorosos.
  • Android — WorkManager, Foreground Service, Scheduling e modo Doze com diferentes restrições.
  • Consumo de energia — a principal razão das limitações: processos em segundo plano reduzem a vida útil da bateria.
  • Privacidade — a partir do Android 8 e iOS 13, os sistemas exigem permissões explícitas para trabalho em segundo plano.

O que é execução em segundo plano em aplicativos móveis?

Background Execution é a capacidade de um aplicativo continuar executando código após o usuário tê-lo minimizado ou alternado para outro aplicativo. Sem mecanismos especiais, o SO móvel coloca o aplicativo no estado Suspenso (Suspended) poucos segundos depois de ir para segundo plano, liberando CPU e memória para aplicativos ativos.

Estados do aplicativo em segundo plano

Um aplicativo móvel passa por vários estados do ciclo de vida: Foreground (ativo), Background (em segundo plano), Suspended (suspenso) e Terminated (encerrado). Background é o único estado em que o aplicativo pode executar código sem uma interface visível. iOS e Android definem a duração e as operações disponíveis neste estado de forma diferente.

Principais casos de uso

A execução em segundo plano é necessária para sincronização de dados, download de conteúdo, processamento de notificações Push, geolocalização em segundo plano e reprodução de áudio. A sincronização é o cenário mais comum: o aplicativo envia dados ao servidor ou baixa atualizações sem intervenção do usuário.

  • Sincronização — upload e download de dados quando o estado da rede muda.
  • Geolocalização — rastreamento de localização em rastreadores fitness e navegadores.
  • Mídia — reprodução de áudio e vídeo em segundo plano (música, podcasts).
  • Notificações — processamento de notificações Push e locais.
  • Download — download de arquivos grandes (podcasts, vídeos) em segundo plano.

Por que os SOs móveis limitam a execução em segundo plano

As limitações da execução em segundo plano são devidas a três fatores: consumo de energia, desempenho do dispositivo e privacidade do usuário. A CPU e os módulos de rádio (Wi-Fi, dados celulares) consomem mais energia — cada processo em segundo plano reduz a vida útil da bateria.

Consumo de energia e autonomia

Estudos do Google mostram que aplicativos que executam tarefas em segundo plano a cada 5 minutos reduzem a vida útil da bateria do dispositivo em 20–30% ao dia. Mesmo operações otimizadas em segundo plano com frequência de uma vez por hora têm um impacto notável se houver mais de dois desses aplicativos.

RAM e desempenho

Cada aplicativo em segundo plano ocupa RAM. Com falta de RAM, o sistema descarrega aplicativos da memória, causando uma reinicialização quando o usuário retorna. iOS usa o algoritmo Jetsam — um mecanismo de encerramento forçado de processos em segundo plano quando o limite de memória é excedido. O Android usa LMK (Low Memory Killer) com princípio semelhante.

Privacidade do usuário

A partir do Android 10 e iOS 13, o sistema exige que os aplicativos declarem o propósito do trabalho em segundo plano. O Android introduziu restrições à execução de Broadcast Receivers em segundo plano. O iOS exige especificar o Background Mode nas Capabilities do projeto. O usuário pode desativar a execução em segundo plano para qualquer aplicativo nas configurações.

SOVersãoRestriçãoImpacto
Android8.0IMPLICIT_BROADCAST proibido67% dos Broadcasts em segundo plano quebrados
Android9.0Doze melhoradoChamadas de rede restritas
Android12+Foreground Service restritoInicialização em segundo plano proibida
iOS7+Background App RefreshJanelas de atualização periódicas
iOS13+BGTaskSchedulerAgendamento em vez de execução

Execução em segundo plano no Android: WorkManager e Foreground Service

O Android fornece vários mecanismos para execução em segundo plano, cada um resolvendo uma categoria diferente de tarefas. WorkManager é a API recomendada para tarefas adiadas e periódicas. Foreground Service é para execução imediata com uma notificação visível. JobScheduler é uma alternativa de baixo nível ao WorkManager.

WorkManager — Solução universal

WorkManager faz parte do Android Jetpack, fornecendo execução de tarefas em segundo plano com garantia de conclusão mesmo após reinicialização do dispositivo. A API escolhe o momento ideal de execução considerando o estado da rede, nível da bateria e modo Doze. WorkManager é compatível com API 14+ e substitui os obsoletos AlarmManager e JobScheduler.

Foreground Service — Para operações prolongadas

Quando um aplicativo precisa executar uma tarefa visível ao usuário (reprodução de música, gravação de geolocalização), usa-se Foreground Service. O serviço mostra uma notificação persistente na barra de status e tem prioridade mais alta — o sistema não o encerrará até a tarefa terminar. A partir do Android 13, é necessária a permissão POST_NOTIFICATIONS.

Modo Doze e otimização de bateria

A partir do Android 6.0, o dispositivo entra em modo Doze quando ocioso. Neste modo, operações de rede, sincronização e JobScheduler são adiadas. WorkManager se adapta automaticamente ao Doze — as tarefas são executadas durante a próxima Maintenance Window quando o dispositivo acorda do sono para manutenção.

Execução em segundo plano no iOS: Background Tasks e App Refresh

O iOS usa uma abordagem mais rigorosa para execução em segundo plano. Background App Refresh é o mecanismo principal para atualização periódica de dados. BGTaskScheduler é a API para agendar tarefas com base no estado do sistema. Para operações prolongadas, Background Modes estão disponíveis: audio, location, voip, fetch e processing.

Background App Refresh

Background App Refresh permite que o aplicativo acorde a cada 15–30 minutos para sincronizar dados. O tempo de ativação depende do comportamento do usuário — o sistema analisa com que frequência ele abre o aplicativo. Os usuários podem desativar esse recurso para aplicativos individuais em Ajustes — Geral — Background App Refresh.

BGTaskScheduler — Abordagem moderna

A partir do iOS 13, o BGTaskScheduler substituiu os obsoletos performFetch e beginBackgroundTask. O aplicativo registra tarefas com um identificador e intervalo mínimo, e o sistema determina o momento ideal de execução. As tarefas são divididas em dois tipos: BGProcessingTask (longas, 10+ minutos) e BGAppRefreshTask (curtas, até 30 segundos).

Limites de tempo de execução

O iOS aloca tempo limitado para execução de tarefas em segundo plano — até 30 segundos para BGAppRefreshTask e até 10 minutos para BGProcessingTask. Quando o limite é excedido, o sistema encerra a tarefa à força. O desenvolvedor deve chamar o manipulador de expiração (expiration handler) para salvar resultados intermediários.

Exemplos de código: Android WorkManager

Vamos ver uma implementação prática da execução em segundo plano no Android usando WorkManager. Um exemplo de sincronização de dados a cada 8 horas com conhecimento do estado da rede. WorkManager garante a execução da tarefa mesmo após reinicialização do dispositivo.

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

// Executar tarefa periódica a cada 8 horas
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 com notificação

Para operações prolongadas visíveis ao usuário, use Foreground Service. Um exemplo de download de arquivo com progresso na notificação. O serviço chama startForeground() com uma notificação que não pode ser descartada. Quando o download é concluído — 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("Baixar arquivo")
            .setSmallIcon(android.R.drawable.ic_download)
            .build()
    }
}

Exemplos de código: iOS BGTaskScheduler

No iOS, a execução em segundo plano é configurada através do BGTaskScheduler. Um exemplo de registro e execução de uma tarefa de atualização de conteúdo. O aplicativo deve registrar o identificador da tarefa no Info.plist e chamar submit quando a tarefa deve ser agendada.

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 = {
        // Salvar dados intermediários
        cacheCurrentState()
    }
    fetchLatestData {
        task.setTaskCompleted(success: true)
    }
}

Background Processing Task

Para operações prolongadas (limpeza de cache, processamento de dados), use BGProcessingTask. O sistema concede até 10 minutos para execução. Só é executado quando o dispositivo está carregando e conectado ao Wi-Fi. Requer um identificador separado no Info.plist e registro via 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)
}

Comparação das abordagens Android e iOS

Android e iOS diferem fundamentalmente em sua filosofia de execução em segundo plano. Android oferece ferramentas flexíveis com maior controle, mas exige que o desenvolvedor escolha a API correta. iOS limita as capacidades, mas garante desempenho estável e autonomia para o usuário.

CritérioAndroidiOS
API recomendadaWorkManagerBGTaskScheduler
Tempo máximo de tarefaIlimitado (Foreground Service)30 s / 10 min (processing)
Tarefas periódicasSim, via PeriodicWorkRequestSim, via BGAppRefreshTask
Garantia de execuçãoSim, mesmo após reinicializaçãoNão — o sistema decide quando
Acesso à rede em segundo planoLimitado pelo modo DozeVia URLSession com background config
Geolocalização em segundo planoForeground Service + permissãoBackground Mode location + NSLocation
Áudio em segundo planoForeground Service com notificação de mídiaBackground Mode audio + AVAudioSession

Quando escolher Android WorkManager

WorkManager é ideal para tarefas que devem ser concluídas independentemente do estado do aplicativo: sincronização de dados, envio de análises, processamento de filas. A API garante execução mesmo após desligar o dispositivo — a tarefa é reagendada após a inicialização.

Quando escolher iOS BGTaskScheduler

BGTaskScheduler é adequado para tarefas que o sistema pode realizar em qualquer momento conveniente: baixar novo conteúdo, atualizar widgets, limpar cache. Não é adequado para operações urgentes — o sistema atrasa a tarefa se o dispositivo estiver em Doze ou com pouca bateria.

Perguntas Frequentes

Qual a diferença entre Background Execution e Background Modes?

Background Execution é um conceito geral que descreve qualquer código executado em segundo plano. Background Modes é um mecanismo específico do iOS que permite a um aplicativo realizar certos tipos de operações em segundo plano: áudio, geolocalização, VoIP, fetch. O Android usa uma abordagem semelhante através de tipos de Foreground Service.

Por que meu aplicativo termina após 30 segundos em segundo plano?

No iOS, este é o limite padrão para BGAppRefreshTask. O sistema encerra à força a tarefa quando o limite é atingido. No Android, uma situação semelhante ocorre quando o aplicativo não usa WorkManager ou Foreground Service — um Service comum é encerrado pelo sistema após ir para segundo plano.

Como garantir a execução de tarefas em ambas as plataformas?

No Android, use WorkManager — ele garante execução mesmo após reinicialização. No iOS, a execução não pode ser garantida — o sistema decide quando executar a tarefa. A única maneira de garantir a execução é usar Background Modes (audio, location) com um indicador visível para o usuário.

Como verificar se a execução em segundo plano é permitida?

No iOS, chame UIApplication.shared.backgroundRefreshStatus — status .available, .denied ou .restricted. No Android, use PowerManager.isIgnoringBatteryOptimizations() para verificar isenção de otimização de bateria. Para WorkManager, nenhuma verificação é necessária — a API lida com as restrições do sistema por si só.

Quais alternativas à execução em segundo plano existem?

Notificações Push são o mecanismo principal para acionar ações sem código em segundo plano. No iOS, PushKit está disponível para VoIP e Silent Push para atualização de dados. No Android — High Priority FCM e Notification Trampoline. WebSockets através de Foreground Service é uma alternativa para aplicativos em tempo real.

Resumo

  • Background Execution — mecanismo para executar código quando o aplicativo está minimizado, crucial para sincronização, download e notificações.
  • Android oferece WorkManager (execução garantida), Foreground Service (tarefas visíveis prolongadas) e restrições do modo Doze.
  • iOS usa BGTaskScheduler (agendamento), Background App Refresh (atualizações periódicas) e Background Modes para mídia e geolocalização.
  • Consumo de energia — a principal razão das limitações: processos em segundo plano não otimizados reduzem a vida útil da bateria em 20–30%.
  • Privacidade — ambas as plataformas exigem permissões explícitas (Android POST_NOTIFICATIONS, iOS Background Modes) e notificação ao usuário.
  • WorkManager é a única API com garantia de execução após reinicialização; BGTaskScheduler depende das decisões do sistema.
  • Use Foreground Service no Android e Background Modes no iOS para operações prolongadas visíveis ao usuário na barra de status.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também