Pergunta

Esta é a estrutura da minha aplicação:

A atividade A é uma ListViewActivity com um botão para iniciar a atividade B.

Na atividade B, após preencher um formulário, existe um botão para iniciar a atividade C.

A atividade C salva a configuração e cria um novo registro para mostrar na atividade A.A atividade Button save in C inicia a atividade A.

Se o usuário seguir este procedimento mais de uma vez ao pressionar o botão Voltar da atividade A retorne na B (sem passar pela C porque quando comecei configurei FLAG_ACTIVITY_NO_HISTORY) e na segunda vez ele pressiona voltar para A novamente, e isso se repete um número de vezes igual ao número de registros criados.

Fechar o aplicativo com o botão Voltar tornou-se um processo longo.

eu gostaria que onBackPressed da atividade A sempre feche o aplicativo.

Inglês não é minha língua, espero ter sido claro.

Foi útil?

Solução

Sempre inicie sua atividade A como abaixo

    Intent intent = new Intent(current_activity_context, A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();

Outras dicas

O método finish() fará isso.Algo assim

Intent intent = new Intent(getApplicationContext(),
                Activity B.class);
        Activity A.this.startActivity(intent);

        finish();

Você deve substituir o método OnBackPressed

@Override
public void OnBackPressed(){
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    super.onBackPressed();//Optional
 }

Espero que ajude.

tente isso

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top