Подтвердить что ты не робот

Как выйти при нажатии кнопки назад?

Когда пользователь нажимает кнопку "Назад" на намерение, приложение должно выйти. Как я могу гарантировать, что приложение завершает работу при нажатии кнопки "Назад"?

4b9b3361

Ответ 1

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

ИЗМЕНИТЬ Что касается вашего комментария:

Что вы предлагаете, это не так, как обычно работает поток приложений Android, и как пользователи ожидают его работы. Что вы можете сделать, если хотите, чтобы убедиться, что каждый startActivity, предшествующий этому действию, является startActivityForResult и имеет прослушиватель onActivityResult, который проверяет код выхода и возвращает пузыри обратно. Вы можете узнать больше об этом здесь. В принципе, используйте setResult до завершения действия, чтобы установить код выхода по вашему выбору, и если ваш родительский актив получает этот код выхода, вы установите его в этом действии и завершите его, и т.д.

Ответ 2

В моей домашней деятельности я переопределяю "onBackPressed" на:

@Override
public void onBackPressed() {
   Intent intent = new Intent(Intent.ACTION_MAIN);
   intent.addCategory(Intent.CATEGORY_HOME);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(intent);
 }

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

Я взял код из Переход к главному экрану Programmatically

Ответ 3

Лучший пользовательский интерфейс:

/**
 * Back button listener.
 * Will close the application if the back button pressed twice.
 */
@Override
public void onBackPressed()
{
    if(backButtonCount >= 1)
    {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
    else
    {
        Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
        backButtonCount++;
    }
}

Ответ 4

Почему бы пользователю не просто нажать кнопку "домой"? Затем они могут выйти из вашего приложения из любых ваших действий, а не только из определенного.

Если вы обеспокоены тем, что ваше приложение продолжает делать что-то в фоновом режиме. Обязательно остановите его в соответствующих командах onPause и onStop (которые будут активироваться при нажатии пользователем Home).

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

Ответ 5

Приложение будет завершено только в том случае, если в заднем стеке нет действий. SO добавьте эту строку в ваш манифест android: noHistory = "true" ко всем действиям, которые вы не хотите возвращать в стек. И затем, чтобы закрыть вызов приложения finish() в OnBackPressed

<activity android:name=".activities.DemoActivity"
            android:screenOrientation="portrait"
            **android:noHistory="true"**
            />

Ответ 6

Использовать метод onBackPressed

@Override
public void onBackPressed() {
    finish();
    super.onBackPressed();
}

Это решит вашу проблему.

Ответ 7

Прежде всего, Android не рекомендует вам делать это в кнопке "Назад", а скорее использует предоставленные методы жизненного цикла. Кнопка "Назад" не должна уничтожать действие.

Действия добавляются в стек, доступные из Обзор (квадратная кнопка, поскольку они ввели конструкцию материала в 5.0), когда кнопка возврата нажата на последнем оставшемся мероприятии из стека пользовательского интерфейса. Если пользователь хочет закрыть приложение, он должен удалить его (закрыть) в меню "Обзор".

Ваше приложение несет ответственность, чтобы остановить любые фоновые задачи и задания, которые вы не хотите запускать, в методах жизненного цикла onPause(), onStop() и onDestroy(). Подробнее о жизненных циклах и их правильной реализации читайте здесь: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

Но чтобы ответить на ваш вопрос, вы можете делать хаки для реализации точного поведения, которое вы хотите, , но, как я уже сказал, не рекомендуется:

@Override
 public void onBackPressed() {

// make sure you have this outcommented
// super.onBackPressed();
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
}

Ответ 8

Чтобы выйти из приложения Android, просто используйте. в своей основной деятельности, или вы можете использовать файл манифеста Android для установки

android:noHistory="true"

Ответ 9

завершите свой current_activity с помощью метода finish() onBack method of your current_activity

а затем добавьте ниже строки в onDestroy текущего_активности для удаления Force close

@Override
public void onDestroy()
{
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onDestroy();
}

Ответ 10

Я изменил ответ @Vlad_Spays, чтобы кнопка "Назад" работала нормально, если только она не является последним элементом в стеке, а затем запрашивает пользователя перед выходом из приложения.

@Override
public void onBackPressed(){
    if (isTaskRoot()){
        if (backButtonCount >= 1){
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }else{
            Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
            backButtonCount++;
        }
    }else{
        super.onBackPressed();
    }
}