Pergunta

Eu tenho um aplicativo que consiste em várias atividades. Quando o aplicativo começa, alguns alarmes são agendados usando AlarmManager E alguns serviços são iniciados:

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
a.setInexactRepeating(...)
....

Eu gostaria de saber alguma maneira de Garanta que todos os serviços sejam interrompidos e cada alarme não é programado quando o usuário sai do aplicativo.

O problema é que o usuário pode deixar o aplicativo de diferentes atividades, e eu não gosto da ideia de substituir o onDestroy método em todas as atividades. Existe algum conhecido Intent Eu posso receber quando o aplicativo terminar?

Eu também descobri que um aplicativo Android pode ter uma classe que se estende de Application, com um onTerminate método:

public class MyApplication extends Application { 
    @Override
    public void onTerminate() {
        ...
    }
}

Mas a documentação é muito clara: "Nunca depende desse método chamado; em muitos casos, um processo de aplicação desnecessário será simplesmente morto pelo kernel sem executar nenhum código de aplicativo"

Qualquer sugestão é muito apreciada.

Foi útil?

Solução

Gostaria de saber alguma maneira de garantir que todos os serviços sejam interrompidos e cada alarme não seja programado quando o usuário sair do aplicativo.

Não existe "o usuário sai do aplicativo" no Android.

Existe alguma intenção conhecida que eu possa receber quando o aplicativo termina?

Não.

Também descobri que um aplicativo Android pode ter uma classe que se estende da aplicação, com um método onterminado

Isso será chamado, em muitos casos, algum tempo depois de não haver mais componentes em execução. No seu caso, existem componentes em execução (serviços).

Mas a documentação é muito clara: "Nunca depende desse método chamado; em muitos casos, um processo de aplicação desnecessário será simplesmente morto pelo kernel sem executar nenhum código de aplicativo"

O único caso que conheço quando não será chamado é se o processo estiver sendo encerrado; nesse caso, seu serviço também será eliminado, embora alarmes programados não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top