Como chamar um método quando um aplicativo Android é fechado ou perde o foco?
Como um aplicativo que estou construindo lidará com dados bastante confidenciais, eu quero sincronizar o banco de dados SQLite com o servidor toda vez que o usuário fizer login e remover o banco de dados dty toda vez que o aplicativo perder o foco (porque o usuário se move para a tela inicial ou outro aplicativo).
Vendoo ciclo de vida da atividade, minha ideia era fazer isso esvaziando o banco de dados no onDestroy de cada Activity. Para testar o ciclo de vida descrito, apenas substituo todos os métodos de ciclo de vida (onCreate, onStart, onResume, onPause, onStop e onDestroy), incluí algumas mensagens de log neles e ativei meu aplicativo.
As mensagens de log estão incluídas na minha SettingsActivity. Quando eu entro no meu aplicativo e movo para as configurações, ele é executado onCreate, onStart e onResume (como esperado). Quando clico em uma configuração e passo para a próxima tela, ela é executada emPause e onStop (ainda como esperado). Para voltar para a tela de configurações, clico no botão Voltar e ele é executado em Iniciar e retomar novamente (ainda como esperado), quando clico novamente no botão Voltar para voltar à tela inicial, (para minha surpresa) é executado emPause, onStop AND onDestroy.
Então minhas perguntas;
Por que destruir a atividade quando o aplicativo não está concluído?E mais importante: como posso executar o meu método CleanUp quando o aplicativo fecha ou perde o foco?