2011-12-19 2 views
2

Я хочу закрыть все свое приложение, когда нажимаю кнопку «Назад» устройства. Как я могу это сделать? Пожалуйста, помогите мне.Как закрыть наше приложение в кнопке «Назад» в android

спасибо

+2

Почему вы хотите, чтобы закрыть все приложения? Это то, что не относится к жизненному циклу Android. Пожалуйста, пересмотрите свой дизайн, потому что он очень плохо пахнет: http://developer.android.com/reference/android/app/Activity.html – schlingel

+1

Возможный дубликат [Выход из приложения - это нахмурившийся?] (Http: // stackoverflow .com/questions/2033914/quitting-an-application-is-that-frowned-on) – CommonsWare

ответ

0
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     finish(); 
     return true; //not sure this is needed 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+3

-1 finish() только закрывает текущую активность, но не все приложение. – schlingel

0

Вы можете позвонить закончить(); в задних кнопках

+0

-1 finish() только закрывает текущую активность, но не все приложение. – schlingel

+0

Фактически перед ним поток работает, значит, фоновая активность вызовет, когда я закончу, активность не закончится, он снова откроется. – user1061793

+0

hmm он закроет текущую активность. – user1061793

0

всякий раз, когда вы начинаете деятельность просто положить

отделки();

перед тем

startActivity (намерение);

Это способ закрыть приложение с помощью кнопки «Назад».

+0

Это не так, как он предназначен для работы. – schlingel

+0

Я не могу понять, чего вы точно хотите? –

+0

, тогда другие ответы также правы. –

2

Это одно из самых бесполезных желаний начинающих разработчиков Android, и, к сожалению, оно очень популярно. Как вы определяете «закрыть» приложение для Android? Скрыть свой пользовательский интерфейс? Прерывать фоновые работы? Прекратить обработку трансляций?

Приложения для Android представляют собой набор модулей, входящих в комплект .apk и подвергающихся воздействию системы через AndroidManifest.xml. Действия могут быть организованы и перегруппированы с помощью разных стеков задач, а финиш() или любое другое перемещение от одного действия может означать совершенно разные вещи в разных ситуациях. Одно приложение может запускаться внутри нескольких процессов, поэтому нет необходимости убивать один процесс, так как код приложения не будет работать. И, наконец, BroadcastReceivers могут быть вызваны системой в любое время, воссоздавая необходимые процессы, если они не запущены.

Главное, что вам не нужно останавливать/убивать/закрывать/независимо от вашего приложения через одну строку кода. Это означает, что вы пропустили какой-то важный момент в разработке Android. Если по какой-то причудливой причине вам нужно это сделать, вам нужно закончить() все действия, остановить все службы и отключить все BroadcastReceivers, объявленные в AndroidManifest.xml. Это не одна строка кода, и, возможно, запуск Activity, который удаляет ваше собственное приложение, улучшит работу.

+0

finish() закрывает только одно действие, а не все приложение. System.exit (0) нормально, но не очень хорошо. –

+0

@YugandharBabu no, вызывающий System.exit * не * ok. Это не соответствует жизненному циклу активности Android. – Craigy

+0

Приложение открывается, обнаруживает, что в веб-службу нет входа и запускается новое действие с запросом учетных данных. Пользователь возвращается. Приложение обнаруживает отсутствие учетных данных и сразу же запускает активность с запросом учетных данных для входа. Таким образом, возможно, в диалоговом окне учетных данных для входа необходимо, чтобы НЕ разрешить приложению вернуться на главный экран, чтобы завершить работу. Таким образом, существуют случаи, когда это необходимо. Одним из способов является использование общего предпочтения, которое хранит тот факт, что вы хотите закрыть приложение, и убедитесь, что в onResume на основном мероприятии. –

1

Я думаю, что его невозможно закрыть для всего приложения. см. эти ссылки, которые могут вам помочь.

Close Application

How to exit an Android Application

Это может помочь вам проверить его.

android.os.Process.killProcess(android.os.Process.myPid()) 
1

вызов метода moveTaskToBack() внутри onKeyDown.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
0

В этом случае, я использую этот код:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     android.os.Process.killProcess(android.os.Process.myPid()); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Это работает для меня.

0

Добавить этот код в свою активность. При нажатии кнопки андроидальной кнопки приложение закрыто, но работает в фоновом режиме!Вы можете добавить отделку() и System.exit (0)

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    moveTaskToBack(true); 
} 
+0

Было бы хорошо, если бы вы добавили описание. – Chitrang

+0

Это сработало отлично для меня :) –

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