Android: выход из приложения

#android

#Android

Вопрос:

Я задавал разные вопросы, связанные с этой темой, и у меня все еще есть несколько сомнений.

Вопрос первый: в моем приложении у меня есть несколько действий A-> B-> C

A-> B2-> C2.. A-B3-C3…

это поток. У меня есть кнопки «назад» и «домой» для каждого действия, чтобы перейти к предыдущему действию и соответственно.

Изначально я запускал каждое из них как «одиночную задачу», и все оказалось хорошо.

Теперь я хотел обработать условие ошибки, и, таким образом, приложение exit появилось на картинке. ИТАК, из моего чтения я понимаю, что не «хорошо» запускать каждое действие как отдельную задачу (я не очень понимаю причину или я ошибаюсь), ПОЭТОМУ я изменил режим запуска всех действий как стандартный, поэтому я заметил одну вещь: переключение между действиями через «назад» или «домой» происходит медленночем раньше. ИТАК, я все делаю правильно

Вопрос второй: теперь у меня есть мой код

     if (some error)
    {
        this.finish()       
    }

    code line;
  

это находится в моем корневом действии A и будет проверено перед запуском любого другого действия
Но я вижу, что выполняется завершение, но перед тем, как приложение действительно завершит работу, выполняется строка кода, приводящая к некоторому исключению. Мое ожидаемое поведение — это когда я вызываю finish , это похоже на возврат из этого действия, и здесь больше не выполняется код

Вопрос 3: теперь, когда мы завершаем корневую активность, кто на самом деле будет ее обрабатывать.

Комментарии:

1. вы можете использовать: intent.setFlags (намерение. FLAG_ACTIVITY_CLEAR_TOP); перед вызовом домашней активности.

2. как я могу установить флаг намерения для домашней активности. Есть ли способ указать это в androidmanifest. Также каждый раз, когда я нажимаю «домой», все мои действия в стеке будут удалены?

3. из другого действия, которое вы можете использовать: Намерение намерение = новое намерение (контекст, Home.class ); intent.setFlags (Намерение. FLAG_ACTIVITY_CLEAR_TOP); context.startActivity (намерение);

4. Лучше использовать try{} catch{}

5. Выполняете ли вы какой-либо вызов службы или асинхронную задачу перед вызовом функции finish() ?

Ответ №1:

 Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
ListActivity.this.startActivity(i); 
finish();   
  

Комментарии:

1. выйдите из своего приложения … скопируйте код, чтобы вставить в Onclick… попробуйте это… Надеюсь, это поможет!

2. @Android Я думаю, он просит вас объяснить, что делает этот код и как он работает. прита, я не читал твой код, но ты искал эти методы Intent в API? developer.android.com/reference/android/content /…

3. завершите текущую операцию и выйдите из приложения.

Ответ №2:

Закройте все предыдущие действия следующим образом:

     Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("Exit me", true);
    startActivity(intent);
    finish();
  

Затем в методе MainActivity onCreate() добавьте это, чтобы завершить MainActivity

     setContentView(R.layout.main_layout);

    if( getIntent().getBooleanExtra("Exit me", false)){
        finish();
        return; // add this to prevent from doing unnecessary stuffs
    }