Android: очистите все действия backstack, а затем завершите текущую деятельность
У меня есть различные действия в моем приложении, и поток очень сложен. Что я хочу сделать, так это, как только usb-устройство будет подключено, я хочу очистить и завершить работу с обратным стеком, а затем завершить текущую деятельность и систему.выход (0) для закрытия приложения.
Я уже реализовал прослушиватель usb-устройств. Я хочу знать, как очистить и завершить операции обратного стека(если таковые имеются, то они не будут выполняться каждый раз), а затем завершить текущий стек. один.
Также, если мое действие A находится сверху,и у него есть 2 действия (B, C) в заднем стеке. Теперь, если activity a работает в фоновом режиме и подключен usb, только Activity A будет слушать его правильно? (У меня есть USB-приемник, реализованный в каждом действии.)
Как добиться этого без сбоя приложения?
Спасибо
2 ответа:
Есть
finishAffinity()
Метод, который завершит текущую деятельность и все родительские действия, но он работает только в Android 4.1 или выше
finishAffinity()
завершит это действие, а также все действия непосредственно под ним в текущей задаче, которые имеют одинаковое сродствоЕсли вы хотите для всех уровней API
в одном из ваших занятийIntent intent = new Intent(this, YourActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack intent.putExtra("Exit me", true); startActivity(intent); finish();
Затем в методе youractivity onCreate () добавьте это для завершения деятельность
setContentView(R.layout.your_layout); if( getIntent().getBooleanExtra("Exit me", false)){ finish(); return; // add this to prevent from doing unnecessary stuffs }
В приложении, которое я сделал, я поставил:
if(Globals.isExit){ finish(); }
В каждом методе onResume() в каждом действии.
Globals-это класс, который объявлен как an в манифесте.XML. Глобальный класс имеет логическое значение exit.
В меню опции все действия включите опцию выхода, которая устанавливает глобалы.выход в true, и вызывает finish ()
Тогда все действия, оставшиеся незавершенными, будут завершены.
Не уверен, Нужно ли использовать намерение, чтобы очистить backstack, или если завершение очищает его для вас. Извините, если я ошибаюсь в этом кусочке.
Извините за плохой набор текста, я разговариваю по телефону.