W przypadku danego działania na Androidzie chciałbym w pewnym momencie rozpocząć nową aktywność dla użytkownika. Gdy opuszczą pierwsze działanie i dotrą do drugiego, pierwsze działanie jest nieaktualne i chcę je całkowicie usunąć, aby nie można było ponownie uzyskać do niego dostępu za pomocą przycisku Wstecz.
Jak najlepiej to osiągnąć? Jak zabić lub zniszczyć tę aktywność natychmiast po uruchomieniu nowej aktywności przez użytkownika?
Odpowiedzi:
Wystarczy zadzwonić
finish()
Intent intent = new Intent(this, NextActivity.class); startActivity(intent); finish();
źródło
onDestroy
to metoda cyklu życia, która ma być wywoływana tylko ze struktury systemu Android.Ustawienie
android:noHistory="true"
działania w manifeście spowoduje usunięcie działania ze stosu za każdym razem, gdy zostanie ono opuszczone. zobacz tutajźródło
możesz użyć:
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
źródło
Możesz również dodać
android:noHistory="true"
do swojegoActivity
tagu wAndroidManifest.xml
.<activity ... android:noHistory="true"> </activity>
źródło
Tak, wszystko, co musisz zrobić, to wywołać funkcję finish () w dowolnym działaniu, które chcesz zamknąć.
źródło
Napisz to w każdym „nowym działaniu” po zainicjowaniu nowej intencji->
Intent i = new Intent(this, yourClass.class); startActivity(i); finish();
źródło
Wreszcie znalazłem rozwiązanie!
Mój kontekst to : - Chcę rozłączyć połączenie przez gniazdo, gdy aktywność została zniszczona, próbowałem zakończyć () działanie, ale to nie zadziałało , jego utrzymywanie połączenia gdzieś jest na żywo.
więc używam
android.os.Process.killProcess(android.os.Process.myPid());
jego zabicia mojej aktywności i użyłemandroid:excludeFromRecents="true"
do usunięcia z ostatniej aktywności.źródło
android.os.Process.killProcess(android.os.Process.myPid())
zabija proces aplikacji, a nie tylko aktywność. Oznacza to, że wszelkie bieżące usługi (w tle lub na pierwszym planie) również zostaną zatrzymane.Dodaj ten atrybut do swojej aktywności w pliku manifestu. android: noHistory = "true"
źródło
Po uruchomieniu nowej aktywności wystarczy użyć poniższego kodu.
startActivity(new Intent(this, newactivity.class)); finish();
źródło