2013-04-05 5 views
-1

Я создал приложение для Android.Как закрыть мое приложение для Android, когда я нажимаю кнопку «Назад» со своего мобильного телефона?

Мне нужно закрыть или закрыть приложение, когда я нажимаю кнопку «Назад» со своего мобильного телефона.

Как я могу это достичь?

+0

Override onBackPressed, а затем завершает текущую деятельность. – Pragnani

+0

@Прагнани, пожалуйста, дайте мне один образец? – prabu

+3

Я думал, что андроид делает это по умолчанию? – JRowan

ответ

5

вы должны обработать функцию кнопки назад

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    finish(); 
} 
2
@Override 
public void onBackPressed() { 
    this.finish(); 
} 

Попробуйте

Скажем, если вы в какой-то внутренней деятельности устанавливается некоторое логическое значение на Application Class и проверьте, что булевы в резюме каждой другой деятельности затем закончить его, если логическое значение установлено

+1

Использование 'this.' здесь не имеет реальной пользы –

3

Когда вы нажимаете кнопку «назад», активность вызывается из стека и уничтожается. Предыдущее действие в стеке фокусируется.

Предположим, что у вас есть 3 мероприятия. A, B и C. Переходите к C. A-B-c. С C вы можете перейти к A, используя приведенный ниже код.

Вы можете отменить нажатие кнопки «Назад» и вызвать finish().

Если вы находитесь в действии A, вы можете просто нажать кнопку «Назад» для выхода.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    onBackPressed(); 

} 

return super.onKeyDown(keyCode, event); 
    } 

public void onBackPressed() { 
Intent myIntent = new Intent(C.this, A.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//clear the backstack 
startActivity(myIntent); 
finish(); 
return; 
    } 

Edit:

Некоторые разработчики и некоторые люди на StackOverflow считают, что кнопка спина должна по крайней мере вернуться к прежней деятельности. Он должен быть таким. Таким образом, переопределение функциональности по умолчанию и очистка стека не могут быть хорошей идеей.

Вы можете также рассмотреть возможность использования панели навигации

http://developer.android.com/design/patterns/navigation.html

Также проверьте этот

Is quitting an application frowned upon?

-1

Попробуйте это.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 

     finish(); 
    } 
    return false; 
} 
+0

@prabu см. Мой отредактированный ответ. – Yugesh

1

Вам не нужно использовать какой-либо метод для закрытия приложения; Android позаботится об этом. Всякий раз, когда вы нажимаете кнопку «Назад», finish() вызывается на этом Activity, и действие уничтожается. Вы не спрашиваете о Service? Поскольку служба работает в фоновом режиме, и вам необходимо позаботиться о закрытии службы в соответствии с вашими потребностями.

1

Pleeeease этот ответ на CommonsWare: Is quitting an application frowned upon?

Это очень хороший пробой, почему это не хороший подход для разработки Android приложений ,Заключительное:

Точно так же, я посоветовал бы вам от попыток к порту вашего приложения к сети Интернет, так как некоторые из тех же проблем, которые Вы имеете сообщили с Android вы найдете в Интернете не приложения, а также (например, не "завершение"). Или, наоборот, когда-нибудь, если вы разместите приложение на веб-сайте , вы можете обнаружить, что поток веб-приложения может быть лучше для Android, и вы можете повторно посетить порт Android в то время.

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