Làm cách nào để tắt một hoạt động Android khi rời khỏi nó để không thể truy cập nó từ nút quay lại?


130

Trong một hoạt động Android nhất định, tôi muốn bắt đầu một hoạt động mới cho người dùng tại một số điểm. Khi họ rời khỏi hoạt động đầu tiên và đến lần thứ hai, hoạt động đầu tiên đã cũ và tôi muốn xóa hoàn toàn để không thể truy cập lại từ nút quay lại.

Làm thế nào là cách tốt nhất để thực hiện điều này? Làm cách nào để giết hoặc hủy hoạt động này ngay lập tức sau khi người dùng đã khởi chạy hoạt động mới?


Kiểm tra câu trả lời này , nó rất hữu ích cho tôi.
Daniyar

Câu trả lời:


234

Bạn chỉ cần gọi finish()

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

Cảm ơn bạn. Để tiến thêm một bước, tôi đang bắt đầu hoạt động mới từ cửa sổ đối thoại - mã có hoạt động theo cách tương tự không?
JohnRock

@CaseyB cảm ơn vì điều này..nhưng tôi muốn biết, tôi có thể gọi phương thức này từ một Dịch vụ không nếu có thì thế nào?
swiftBoy

1
Các dịch vụ không có Hoạt động nghĩa là chúng sẽ không nằm trong ngăn xếp hoạt động để quay lại. Nếu bạn muốn hủy một số hoạt động từ dịch vụ của mình, bạn có thể gọi myActivity.finish ();
CaseyB

3
Đó là một câu trả lời 7 năm, nhưng vẫn còn hiệu lực cho Android M và N.
zeeshan 22/03/2017

1
@juztcode onDestroylà một phương thức vòng đời chỉ được gọi từ khung Android.
CaseyB

106

Cài đặt android:noHistory="true"hoạt động trong tệp kê khai của bạn sẽ xóa một hoạt động khỏi ngăn xếp bất cứ khi nào nó được điều hướng khỏi. xem ở đây



8

Bạn cũng có thể thêm android:noHistory="true"vào Activitythẻ của bạn trong AndroidManifest.xml.

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

7

Có, tất cả những gì bạn cần làm là kết thúc cuộc gọi () trong bất kỳ Hoạt động nào bạn muốn đóng.


4

Viết điều này trong mỗi "hoạt động mới" sau khi bạn khởi tạo ý định mới của mình->

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

2

Cuối cùng, tôi đã có một giải pháp!

Bối cảnh của tôi là : - Tôi muốn ngắt kết nối ổ cắm khi hoạt động bị phá hủy, tôi đã cố gắng kết thúc hoạt động () nhưng nó không hoạt động với tôi , nó vẫn giữ kết nối trực tiếp ở đâu đó.

Vì vậy, tôi sử dụng android.os.Process.killProcess(android.os.Process.myPid()); nó giết hoạt động của tôi và tôi đã sử dụng android:excludeFromRecents="true" để loại bỏ khỏi hoạt động gần đây.


1
Giải pháp này hiệu quả với tôi nhưng không may hiển thị một trang trống và để đóng kết nối ổ cắm, bạn có thể sử dụng socket.close (); .
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())giết chết quá trình ứng dụng và không chỉ hoạt động. Điều này có nghĩa là mọi dịch vụ đang diễn ra (nền hoặc tiền cảnh) cũng sẽ bị dừng.
Wrichik Basu


0

Bạn chỉ cần sử dụng mã dưới đây khi khởi chạy hoạt động mới.

startActivity(new Intent(this, newactivity.class));
finish();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.