#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
}