Processamento em Segundo Plano com WorkManager e Notificações
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 17.1 — Criação de CoroutineWorker para Tarefas em Background
Contexto: Criação de CoroutineWorker para Tarefas em Background no contexto de Processamento em Segundo Plano com WorkManager e Notificações.
Requisitos de Execução:
- Implementar classe estendendo
CoroutineWorkerexecutando rotina de limpeza de cache.
Resultado Esperado
Trabalhador de background executando tarefas assíncronas de forma garantida.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_1_SeuNome - Envie na tarefa:
Atividade Cap 17 - Processamento em Segundo Plano com WorkManager e Notificações
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.workers
import android.content.Context
import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters
class SincronizacaoWorker(
appContext: Context,
workerParams: WorkerParameters
) : CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {
println("Executando sincronizacao de dados em background...")
return Result.success()
}
}
🔍 Nível 2: Prática
Problema 17.2 — Agendamento de Trabalho com Constraints (Rede, Bateria)
Contexto: Agendamento de Trabalho com Constraints (Rede, Bateria) no contexto de Processamento em Segundo Plano com WorkManager e Notificações.
Requisitos de Execução:
- Configurar
OneTimeWorkRequestBuilderexigindo conexão Wi-Fi e bateria não descarregada.
Resultado Esperado
Trabalho agendado condicionado a restrições de conectividade e energia.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_2_SeuNome - Envie na tarefa:
Atividade Cap 17 - Processamento em Segundo Plano com WorkManager e Notificações
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.workers
import androidx.work.Constraints
import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequestBuilder
fun agendarTrabalhoComRestricoes() {
val restricoes = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.setRequiresBatteryNotLow(true)
.build()
val request = OneTimeWorkRequestBuilder<SincronizacaoWorker>()
.setConstraints(restricoes)
.build()
println("Request WorkManager criado com ID: ${request.id}")
}
⚡ Nível 3: Integração
Problema 17.3 — Notificações no Android 13+ com NotificationManager e Canais (Channels)
Contexto: Notificações no Android 13+ com NotificationManager e Canais (Channels) no contexto de Processamento em Segundo Plano com WorkManager e Notificações.
Requisitos de Execução:
- Criar
NotificationChannelcom prioridade alta e emitir notificação push local.
Resultado Esperado
Canal de notificação criado respeitando as diretrizes do Android 13+.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_3_SeuNome - Envie na tarefa:
Atividade Cap 17 - Processamento em Segundo Plano com WorkManager e Notificações
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.notifications
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.os.Build
fun criarCanalNotificacoes(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val canal = NotificationChannel(
"canal_alertas",
"Alertas Corporativos",
NotificationManager.IMPORTANCE_HIGH
).apply { description = "Notificacoes urgentes de seguranca e sistema" }
val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
manager.createNotificationChannel(canal)
}
}
🏆 Nível 4: Desafio Corporativo
Problema 17.4 — Encadeamento de Tarefas Únicas (Work Chains) com BeginUniqueWork
Contexto: Encadeamento de Tarefas Únicas (Work Chains) com BeginUniqueWork no contexto de Processamento em Segundo Plano com WorkManager e Notificações.
Requisitos de Execução:
- Encadear pipeline: Baixar Arquivo -> Processar Dados -> Emitir Notificação Final.
Resultado Esperado
Pipeline encadeado de processamento em segundo plano homologado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_4_SeuNome - Envie na tarefa:
Atividade Cap 17 - Processamento em Segundo Plano com WorkManager e Notificações
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.workers
import android.content.Context
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
fun executarPipelineBackground(context: Context) {
val w1 = OneTimeWorkRequest.from(SincronizacaoWorker::class.java)
val w2 = OneTimeWorkRequest.from(SincronizacaoWorker::class.java)
WorkManager.getInstance(context)
.beginUniqueWork("PipelineDados", ExistingWorkPolicy.KEEP, w1)
.then(w2)
.enqueue()
println("Pipeline de background disparado com sucesso.")
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |