Bagaimana cara membunuh aktivitas Android ketika meninggalkannya sehingga tidak dapat diakses dari tombol kembali?


130

Dalam aktivitas Android tertentu, saya ingin memulai aktivitas baru untuk pengguna di beberapa titik. Begitu mereka meninggalkan aktivitas pertama dan tiba di aktivitas kedua, aktivitas pertama sudah basi dan saya ingin menghapusnya sepenuhnya sehingga tidak dapat diakses lagi dari tombol kembali.

Bagaimana cara terbaik untuk mencapai ini? Bagaimana cara saya membunuh atau menghancurkan aktivitas ini segera setelah pengguna meluncurkan aktivitas baru?


Lihat jawaban ini , itu berguna bagi saya.
Daniyar

Jawaban:


234

Anda hanya perlu menelepon finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

Terima kasih. Untuk mengambil satu langkah lebih jauh, saya memulai aktivitas baru dari jendela dialog - apakah kode bekerja dengan cara yang sama?
JohnRock

@CaseyB terima kasih untuk ini..tapi saya ingin tahu, dapatkah saya memanggil metode ini dari Layanan jika ya lalu bagaimana?
swiftBoy

1
Layanan tidak memiliki Kegiatan yang berarti bahwa mereka tidak akan berada di tumpukan aktivitas untuk kembali ke. Jika Anda ingin mematikan beberapa aktivitas dari layanan Anda, Anda harus dapat memanggil myActivity.finish ();
CaseyB

3
Jawabannya adalah 7 tahun, namun masih berlaku untuk Android M dan N.
zeeshan

1
@juztcode onDestroyadalah metode siklus hidup yang hanya dimaksudkan untuk dipanggil dari kerangka kerja Android.
CaseyB

106

Menyetel android:noHistory="true"aktivitas di manifes Anda akan menghapus aktivitas dari tumpukan kapan pun ia dinavigasi. lihat di sini



8

Anda juga dapat menambahkan tag android:noHistory="true"Anda Activitydi AndroidManifest.xml.

<activity
            ...
            android:noHistory="true">
</activity>

7

Ya, yang perlu Anda lakukan adalah panggilan selesai () dalam Aktivitas apa pun yang ingin Anda tutup.


4

Tulis ini di setiap "aktivitas baru" setelah Anda menginisialisasi niat baru Anda->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

Akhirnya, saya mendapat solusi!

Konteks saya adalah : - Saya ingin memutuskan koneksi soket ketika aktivitas hancur, saya mencoba untuk menyelesaikan () aktivitas tetapi tidak berhasil , koneksi tetap di suatu tempat.

jadi saya menggunakan android.os.Process.killProcess(android.os.Process.myPid()); kill aktivitas saya dan saya gunakan android:excludeFromRecents="true" untuk menghapus dari aktivitas terbaru.


1
Solusi ini berfungsi untuk saya tetapi sayangnya menunjukkan halaman kosong dan untuk menutup koneksi soket Anda dapat menggunakan socket.close (); .
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())membunuh proses aplikasi dan tidak hanya aktivitas. Ini berarti bahwa setiap layanan yang sedang berlangsung (latar belakang atau latar depan) akan dihentikan juga.
Wrichik Basu


0

Anda hanya perlu menggunakan kode di bawah ini ketika meluncurkan aktivitas baru.

startActivity(new Intent(this, newactivity.class));
finish();
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.