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

Выход/завершение приложения/действия - андроид

У меня есть 4 действия: Act1, Act2, Act3 и Act4. Кнопка в Act1 открывает Act2, кнопка Act2 открывает Act3, кнопка Act3 открывает Act4.

Я хочу сделать две вещи:

  • У меня есть кнопка в Act4, которая направляет пользователя к Act1, проблема в том, когда пользователь нажимает на Act1, я хочу закрыть приложение, а не открывать Act4.

  • У меня есть опция в меню "exit" во всех действиях, когда пользователь ее выбирает, я хочу закрыть приложение, а не возвращаться к предыдущему действию.

Пробовал использовать finish();, но он не соответствовал моим требованиям.

4b9b3361

Ответ 1

Используйте код ниже в Act4 'th Menu.xml кнопку выхода -

Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

И в вашем первом действии onCreate() метод просто поместил ниже код -

if (getIntent().getBooleanExtra("EXIT", false)) 
{
        finish();
}

Это приведет к выходу из вашего приложения.

Ответ 2

Проверьте эту ссылку:

Нажмите здесь

Вы можете использовать:

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

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

Ответ 3

Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Сбросьте флаг перед тем, как перейти к предыдущему действию. Это может помочь вам.

Ответ 4

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

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

И напишите ниже код на кнопке выхода. Нажмите событие во всех действиях.

finish();

Ответ 5

Подход, который я использую, - начать все дочерние действия с помощью startActivityForResult. Затем я могу putExtra ( "STATE" , some_value) при выходе из любого дочернего элемента и использовать значение состояния, чтобы определить, что делать с родителями.

Если я хочу выйти из приложения из глубокого дочернего элемента, "STATE" будет "exit" , и каждый дочерний элемент в иерархии просто получит StringExtra для "exit" , выполните putExtra ( "STATE" , "exit" , ) и call finish(), а затем приложение в конце вызовет финиш(). Вы можете использовать это для достижения любого желаемого состояния.

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

Ответ 6

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

Однако функция возврата также предполагает удаление текущей активности из стека активности приложения.

По моему опыту, очень ненадежно полагаться на действия в фоновом стеке (в стеке активности приложения). Из-за этого я использовал, чтобы выйти из каждого действия, когда я пойду глубже.

В вашем случае:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

Вышеуказанный метод выйдет из всех действий.

Однако, если вы хотите запустить некоторый код в фоновом режиме, лучше полагаться на "Сервис", а не на "Активность". Вы можете оставить выход "Сервис" после выполнения назначенной работы.

Ответ 7

Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>

Ответ 8

Я использую этот метод:
1. Создайте статическую активность в первом действии, которое закроет   оставшаяся активность (ы).
2. Затем вызовите его в статическом методе, подобном этому, он закроет приложение из того места, где вы его называете.

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 

Ответ 9

Используйте android:noHistory = "true" в вашем файле AndroidManifest.xml

    <activity
        android:name=".Act1"
        android:noHistory="true" />
    <activity
        android:name=".Act2"
        android:noHistory="true" />
    <activity
        android:name=".Act3"
        android:noHistory="true" />
    <activity
        android:name=".Act4"
        android:noHistory="true" />

Ответ 10

поместите этот код в свое приложение...

            moveTaskToBack(true);
            android.os.Process.killProcess(Process.myPid());
            System.exit(1);

Ответ 11

Лоток этот

Intent intent =new Intent(MainActivity.this, ClassName.class);
  finish
startActivity(intent);

Ответ 12

Запустите Activity1 с помощью намерения и попробуйте позвонить finishAffinity() в onBackPressed() из Activity1.