2017-02-16 5 views
0

Можно ли очистить все задние стеки без использования намерений?Очистить все задние стеки без намерения

У меня возникла ситуация, когда необходимо очистить все задние стеки, если пользователь что-то делает в текущей деятельности, поэтому, когда нажатие кнопки «Назад» должно закрыться.

ответ

1

Я не думаю, что вы можете просто очистить задний стоп.

У меня есть ситуации нужно очистить все обратно стеки, если пользователь делает что-то в текущей деятельности, так, когда кнопка нажата назад приложение следует закрыть.

вы можете установить некоторые переменные boolean флаг в true, когда пользователь может делать что-то в этой деятельности, а затем переопределить onBackPressed() и в onBackPressed() чек на этот флаг, если true на вызов System.exit(0); .

+0

покрытие() закрывает только текущую деятельность и предыдущую деятельность в задней стеке будет показано. – farhang67

+0

Да, вы правы, извините, я отредактировал свой ответ –

+0

use 'System.exit (0);' –

3

Вы можете использовать FinishAffinity

Из документации:

Завершить эту активность, и пытается завершить все мероприятия сразу ниже в текущей задачи, которые имеют такое же сродство.

в вашей Currnet активность: перезапись onBackPressed()

@Override 
public void onBackPressed() { 
    if(condition) 
     finishAffinity(); //closes application 
} 

Требуется SDK> 16

0

Если вы знаете, что деятельность должна быть только один в данный момент вы начинаете его, вы можете использовать FLAG_ACTIVITY_CLEAR_TASK. Из документации:

Если установлено в намерениях передается Context.startActivity(), этот флаг будет вызвать любую существующую задачу, которая была бы связана с деятельностью в быть очищены перед началом деятельности. То есть, активность становится новым корнем пустой задачи, и все старые операции завершены. Это можно использовать только в сочетании с FLAG_ACTIVITY_NEW_TASK.

В этом случае, вы должны начать свою деятельность так:

Intent i = new Intent(OldActivity.this, NewActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(i);