>> Tecnologia Eletrônica >  >> Celulares e Acessórios >> Smartphones

Como Criar Botão de Sair (Exit) em App Android (Desenvolvimento)

No desenvolvimento Android, não se deve criar botão "Sair" / "Exit" que chama finish() ou System.exit(0). O Android gerencia ciclo de vida de Activities e processos automaticamente. Usuário sai pressionando "Voltar" (Back), "Início" (Home) ou "Recentes" e deslizando. Forçar fechamento vai contra guidelines (Material Design), causa vazamentos, impede estado salvo, quebra navegação "Up", afeta recents.

Por Que NÃO Fazer Botão Exit

  • Android mata processo quando precisa de RAM (LRU cache). finish() só finaliza Activity atual, não o processo.
  • System.exit(0) / Process.killProcess() mata processo abruptamente: não salva estado (onSaveInstanceState), não executa onDestroy limpo, corrompe preferências/banco, falha no Jetpack Lifecycle, WorkManager, Foreground Service.
  • Usuário espera navegação consistente: Back = voltar tela anterior / fechar app se na raiz. Home = minimizar (preserva estado).
  • Play Store pode rejeitar apps com "Exit button" explícito (política de UX).

Padrão Correto: Navegação Natural

  1. Back press: onBackPressedDispatcher (Activity/Fragment) → Navega para destino anterior no grafo de navegação (Navigation Component) ou finish() se raiz.
  2. Home/Recents: App vai para background → onStop() → onSaveInstanceState() → Processo cached. Sistema mata se precisar.
  3. Foreground Service: Para tarefas longas (download, música, localização) — Notificação persistente, usuário pode cancelar.

Se Precisa Mesmo (Casos Raros: Kiosk, Launcher, Segurança)

// Kotlin - Activity
binding.btnExit.setOnClickListener {
    // Opção 1: Fechar task (remove de recents) - API 21+
    finishAndRemoveTask() 
    
    // Opção 2: Apenas finish() esta activity (padrão)
    // finish()
    
    // Opção 3: Matar processo (EVITE - último recurso)
    // Process.killProcess(Process.myPid())
    // System.exit(0)
}

// No Manifest, se for launcher/kiosk:
<activity
    android:name=".MainActivity"
    android:excludeFromRecents="true"
    android:autoRemoveFromRecents="true"
    android:finishOnTaskLaunch="true" />

Teste no Android Studio

  • Execute no emulador/dispositivo → Teste navegação Back/Home/Recents.
  • Use Layout Inspector, Profiler (Memory, CPU, Energy), Logcat para verificar vazamentos, crashes, ciclo de vida.
  • Teste "Don't keep activities" (Opções dev) → App deve restaurar estado corretamente.