Как убить процесс, нажав кнопку «Назад» в Android?

Я сделал приложение в Android. Это приложение, связанное с таймером. Теперь я много пытался поместить управление на кнопку «Назад» на устройстве Android, чтобы при ее нажатии процесс должен быть убит и напрямую отображать главное меню ... Пожалуйста помогите мне... Заранее спасибо..!введите здесь описание изображения


person jimmy cool    schedule 01.01.2013    source источник
comment
что вы имеете в виду под главным меню? Главное меню вашего приложения или главное меню устройства?   -  person Usman Kurd    schedule 01.01.2013
comment
какой процесс? Что вы имеете в виду под главным меню?   -  person Paresh Mayani    schedule 01.01.2013


Ответы (8)


Попробуйте этот код

@Override
public void onBackPressed() {
   yourActivity.this.finish;
}
person Priya    schedule 01.01.2013
comment
@Priya-но не могли бы вы сказать мне .. если я хочу, чтобы это произошло со всеми действиями в моем приложении. Должен ли я добавить этот код ко всем действиям? - person jimmy cool; 02.01.2013
comment
@jimmycool вы можете добавить ко всем действиям, это завершит действие нажатием кнопки «Назад». - person Rahul Baradia; 02.01.2013
comment
@Priya-NO NO, ты меня не понял. получить мою проблему сейчас??? - person jimmy cool; 02.01.2013
comment
вы можете использовать этот код для перехода на главный экран onBackPressed. Намерение намерение = новое намерение (Intent.ACTION_MAIN); намерение.addCategory (намерение.CATEGORY_HOME); startActivity(намерение); - person Priya; 02.01.2013
comment
@Priya-u до сих пор не понял меня... я говорю о главном экране устройства, а не о приложении... и он не работает... :( - person jimmy cool; 03.01.2013
comment
@jimmycool- вы можете использовать этот код, чтобы перейти на главный экран вашего устройства---- finish(); переместитьTaskToBack (истина); Система.выход(0); - person Shiv; 04.02.2013

переопределите onBackPressed() в своей деятельности и добавьте туда необходимые коды

onBackPressed

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

person Renjith    schedule 01.01.2013

вы можете сделать так: нажмите кнопку "Назад".

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
         finish();// call finish() on click of back button
    }
    return super.onKeyDown(keyCode, event);
}

например: при переходе от действия A к действию B с помощью startActivity(newintent(...)); не завершайте и не убивайте действие A, оно останется в стеке.So when you click on back button in B activity you can go back to A activity, which is already in stack.

когда вы хотите вернуться в главное меню, вызывайте finish() для каждого действия при переходе к следующему действию.

например: при переходе от действия A к действию B с помощью startActivity(newintent(...)); вызовите finish(), чтобы убить действие A.So when you click on back button in B activity you can go back to Main Menu coz every activity ll be killed.

фрагмент здесь:

startActivity(new intent(A.this, B.class));
finish(); // when you click back button on B activity, directly you can go to main menu

Обновлено: Другой способ убить приложение, используя приведенный ниже код при нажатии кнопки «Назад». Но не рекомендуется

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
         android.os.Process.killProcess(android.os.Process.myPid());// Kill the app on click of back button.
    }
    return super.onKeyDown(keyCode, event);
}

надеюсь, что это может помочь вам понять концепцию.

person Rahul Baradia    schedule 01.01.2013
comment
Сэр...спасибо....за это...но я хочу, чтобы при любом действии в проекте, когда я нажимаю кнопку "Назад", процесс завершался и сразу переходил в главное меню...не могли бы вы помочь мне в этом? ? Спасибо, сэр..! - person jimmy cool; 02.01.2013
comment
просто.. когда вы переходите к следующему действию, вызовите finish(), поэтому он будет удален из стека - person Rahul Baradia; 02.01.2013
comment
НЕТ, НЕТ, вы не понимаете, что я говорю... Я хочу, чтобы на любом этапе запуска приложения, если я нажму кнопку "Назад", процесс должен быть остановлен, а элемент управления должен перейти непосредственно в главное меню, а не на предыдущую страницу..! - person jimmy cool; 02.01.2013
comment
точно, вы вызываете finish() для каждого действия. поэтому, когда вы нажмете кнопку «Назад», вы попадете в главное меню. - person Rahul Baradia; 02.01.2013
comment
@TechEnd-u не получает ..bro..mainmenu означает главный экран устройства ... теперь вы поняли мою проблему? пожалуйста, помогите мне .. - person jimmy cool; 02.01.2013
comment
У меня есть ваша проблема ... в соответствии с этим я обновил свой ответ ... пробовали ли вы вышеуказанные решения, которые я дал ... сколько у вас активности ?? - person Rahul Baradia; 02.01.2013
comment
@TechEnd-у меня будет 4 действия... в моем приложении. - person jimmy cool; 02.01.2013
comment
@jimmycool, как ты переходишь от одного занятия к другому? - person Rahul Baradia; 02.01.2013
comment
@TechEnd-Используя намерение ..! - person jimmy cool; 02.01.2013
comment
@Techend-public void onClick(View v) { // TODO Автоматически сгенерированный метод-заглушка Намерение намерение = новое намерение (ListActivity.this, NewProject.class); startActivity(намерение); финиш(); } }); - person jimmy cool; 02.01.2013
comment
вы выполняете или вызываете этот метод finish(); во всех действиях ?? - person Rahul Baradia; 02.01.2013
comment
затем, наконец, вызовите onKeyDown(...) в каждом действии, которое будет работать - person Rahul Baradia; 02.01.2013
comment
@TechEnd-Доброе утро, сэр... сэр, я пробовал... но он не переходит на главный экран эмулятора, а просто переходит на предыдущую страницу..! когда я нажимаю кнопку "Назад"... сэр, я добавил скриншоты ... так что вы можете лучше решить мою проблему .. спасибо - person jimmy cool; 03.01.2013
comment
@jimmycool -- очень хорошо, мрнг... сделай одну вещь... добавь последний фрагмент, который я дал в ответе, добавь ко всему файлу... - person Rahul Baradia; 03.01.2013

Просто очистите историю активности, чтобы ваше приложение закрылось. И вызовите finsh(); послеstartActivity();

  <activity
        android:name="com.example.abcd.Your_Acitivty"
        android:noHistory="true">
  </activity>

Удачного кодирования!

person Gowtham Kumar    schedule 03.10.2013
comment
я думаю, что этот не работает. Он продолжает использовать память, даже когда я использую noHistory и вызываю finish(). - person Arsen Sench; 13.10.2016

хорошо Джимми, вы можете использовать этот код, чтобы перейти на главный экран вашего устройства-

    finish();
    moveTaskToBack(true);
     System.exit(0);    

Метод finish() закрывает только текущую активность.

moveTasktoBack скроет ваше приложение, и вы также можете быстро закрыть приложение с помощью android.os.Process.killProcess(android.os.Process.myPid()), если хотите.

person Shiv    schedule 04.02.2013

В манифесте вы можете попробовать добавить это

<activity
    android:name=".MainActivity"
    android:finishOnCloseSystemDialogs="true"
</activity>

У меня была аналогичная проблема, и это решило ее для меня.

person Caleb Hunyadi    schedule 25.04.2013

Я решил это, переопределив onBackPress() и onStop()

@Override
protected void onStop() {
    super.onStop();
    System.exit(0); //kill the app

}

@Override
public void onBackPressed() { //here I capture the event onBackPress 
    super.onBackPressed(); 
    onStop(); //call onStop
}
person guardezi    schedule 11.02.2014

person    schedule
comment
это даже не завершает текущую деятельность - она ​​только скрывает ее. - person andr; 20.03.2013