2015-04-15 4 views
0

У меня есть основное действие и второе действие. Я не использую переопределение finish() при вызове второго действия. У меня есть кнопка во втором действии onClick, из которого мне нужно убить приложение. Есть ли способ очистить весь задний стек нажатием кнопки?Убейте приложение на задней кнопке от второго действия

+0

Вы хотите убить заявление или деятельность? – Cookster

ответ

0

Вы можете добавить флаг намерение при запуске второй активности ..

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
0

Вы не можете убить все приложения на Android дизайна. И единственный способ очистить всю заднюю часть - начать новую операцию с обязательными флагами.

Если вы хотите сделать это ТОЛЬКО при нажатии кнопки, а НЕ во время запуска второй активности, я думаю, что это только одно решение.

Вы должны на этой кнопке Нажмите назвать третью активность (пустая, только заглушка), с необходимыми флагами:

Intent intent = new Intent(this, MockActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); //clear backstack 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); //user will not notice activity appear, instead of default animation, which look like starting other app. 
startActivity(intent); 

И в этом ThirdActivity, в OnCreate() методы, просто вызовите finish();

Что вы будете получить результат? После нажатия кнопки «Пользователь» все приложение будет закрыто, без истории backstack. Вы также должны добавить к этому ThirdActivity в Manifest android:noHistory="true", чтобы он также не появлялся в истории.

+1

Дополнительная финиш() не нужна, поскольку это подразумевается флагами. По моему опыту, вы действительно вводите потенциальную проблему пользовательского интерфейса, явно выходя из текущей деятельности до того, как она началась. Думайте о слоях - вы хотите гарантировать, что новый вид появится перед тем, как старый уйдет. Имея этот последний финиш(), вы теряете эту гарантию. На старых устройствах вы можете ожидать, чтобы вспышка backstack перед появлением нового представления. Пример. Рабочий экран может мигать в течение 1 секунды, прежде чем появится новое представление. – Cookster

+0

Спасибо, ты прав, я не был уверен в добавлении его. Я удалил его из кода. – VadymVL

0

Вы можете попробовать кнопку бросить курить,

addQuitButtonListener(); 

    private void addQuitButtonListener(){ 
    Button appbtn = (Button) findViewById(R.id.quit); 
    appbtn.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
    System.exit(0); 
    }});} 
0

Вы также могли бы начать вторую деятельность с startActivityForResult проверки Wetherby первым также должна быть закончена, когда вы закончите 2-й один

Смежные вопросы