Мое приложение для Android не закрывается при нажатии

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

` Экран 1 --> Экран 2 --> Экран 3 --> Экран 1 ---> Экран 2 -- > Экран 1 --> необходимо закрыть приложение


person Madhu    schedule 07.05.2014    source источник
comment
что вам нужно закрыть все действия?   -  person Biraj Zalavadia    schedule 07.05.2014
comment
Да, мне нужно закрыть приложение, а не переходить на screen2, как на мой вопрос.   -  person Madhu    schedule 07.05.2014
comment
system.exit(0) куда вы хотите выйти   -  person Sree    schedule 07.05.2014
comment
когда вы переходите на следующие экраны, вы уничтожаете предыдущие экраны? я имею в виду с finish(), тогда только system.exit(0) в последнем действии закроет все ваше приложение   -  person Fahad    schedule 07.05.2014
comment
Нет, на самом деле стек должен быть нужен, пока он не перейдет на screen1,   -  person Madhu    schedule 07.05.2014
comment
проверьте это stackoverflow.com/a/14209182/1665507   -  person Spring Breaker    schedule 07.05.2014


Ответы (3)


Нет прямого способа сделать это, я сделал это так, надеюсь, это поможет вам.

Попробуйте, у меня отлично работает

// clear whole activity stack

    Intent intent = new Intent("clearStackActivity");
    intent.setType("text/plain");
    sendBroadcast(intent);

// start your new activity
Intent intent = new Intent(OrderComplete.this,
                    MainActivity.class);
startActivity(intent);

Шаг : 1

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

private KillReceiver clearActivityStack;
clearActivityStack = new KillReceiver();
        registerReceiver(clearActivityStack, IntentFilter.create("clearStackActivity", "text/plain"));

Шаг : 2

Поместите этот класс в свою базовую активность

private final class KillReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    }

Пояснение:

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

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

person Biraj Zalavadia    schedule 07.05.2014
comment
Что произойдет, если это запустит Intent mind = new Intent(OrderComplete.this, MainActivity.class); startActivity(намерение); создаст ли он новую пустую активность - person Madhu; 07.05.2014

если вы уничтожаете предыдущие действия, когда переходите к следующим действиям, тогда

system.exit(0);

в последнем действии закроет все ваше приложение

иначе

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

startActivity(new Intent (this,Act_finish.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));

Act_finish

public class Act_finish extends Activity
 {

  @Override
  protected void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    System.exit(0);
  }

}
person Fahad    schedule 07.05.2014

Вам действительно нужны эти новые экземпляры экрана 1 и экрана 2?

Я предлагаю, когда вы хотите перейти к экрану 1 с экрана 2 или экрана 3, вы начинаете действие с намерением с флагом ACTIVITY_FLAG_CLEAR_TOP

который удалит все действия из вашего стека и перейдет к экрану 1

person elmorabea    schedule 07.05.2014