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:

  1. Implementar classe estendendo CoroutineWorker executando rotina de limpeza de cache.

Resultado Esperado

Trabalhador de background executando tarefas assíncronas de forma garantida.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_17_1_SeuNome
  2. 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:

  1. Configurar OneTimeWorkRequestBuilder exigindo 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)

  1. Salve o arquivo como: Atividade_17_2_SeuNome
  2. 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:

  1. Criar NotificationChannel com 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)

  1. Salve o arquivo como: Atividade_17_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_17_4_SeuNome
  2. 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