Tất cả các hoạt động trong ứng dụng của tôi yêu cầu người dùng phải đăng nhập để xem. Người dùng có thể đăng xuất khỏi hầu hết mọi hoạt động. Đây là một yêu cầu của ứng dụng. Tại bất kỳ thời điểm nào nếu người dùng đăng xuất, tôi muốn gửi người dùng đến Đăng nhập Activity
. Tại thời điểm này, tôi muốn hoạt động này ở dưới cùng của ngăn xếp lịch sử để nhấn nút "quay lại" sẽ đưa người dùng về màn hình chính của Android.
Tôi đã thấy câu hỏi này hỏi một vài nơi khác nhau, tất cả đều trả lời với câu trả lời tương tự (mà tôi phác thảo ở đây), nhưng tôi muốn đặt nó ở đây để thu thập phản hồi.
Tôi đã thử mở hoạt động Đăng nhập bằng cách đặt các Intent
cờ của nó FLAG_ACTIVITY_CLEAR_TOP
có vẻ như được nêu trong tài liệu, nhưng không đạt được mục tiêu của tôi là đặt hoạt động Đăng nhập ở dưới cùng của ngăn xếp lịch sử và ngăn người dùng điều hướng trở lại cho các hoạt động đăng nhập đã thấy trước đó. Tôi cũng đã thử sử dụng android:launchMode="singleTop"
cho hoạt động Đăng nhập trong tệp kê khai, nhưng điều này cũng không hoàn thành mục tiêu của tôi (và dường như không có tác dụng nào).
Tôi tin rằng tôi cần phải xóa ngăn xếp lịch sử hoặc hoàn thành tất cả các hoạt động đã mở trước đó.
Một tùy chọn là để onCreate
kiểm tra trạng thái đăng nhập của từng hoạt động và finish()
nếu không đăng nhập. Tôi không thích tùy chọn này, vì nút quay lại vẫn sẽ có sẵn để sử dụng, điều hướng trở lại khi các hoạt động tự đóng lại.
Tùy chọn tiếp theo là duy trì một LinkedList
tham chiếu cho tất cả các hoạt động mở có thể truy cập tĩnh từ mọi nơi (có thể sử dụng các tham chiếu yếu). Khi đăng xuất, tôi sẽ truy cập danh sách này và lặp lại tất cả các hoạt động đã mở trước đó, gọi finish()
từng hoạt động . Có lẽ tôi sẽ bắt đầu thực hiện phương pháp này sớm.
Tôi muốn sử dụng một số Intent
thủ thuật cờ để thực hiện điều này, tuy nhiên. Tôi rất vui khi thấy rằng tôi có thể đáp ứng các yêu cầu của ứng dụng của mình mà không phải sử dụng một trong hai phương pháp mà tôi đã nêu ở trên.
Có cách nào để thực hiện điều này bằng cách sử dụng Intent
hoặc cài đặt bảng kê khai, hoặc là tùy chọn thứ hai của tôi, duy trì một LinkedList
hoạt động mở là lựa chọn tốt nhất? Hoặc có một lựa chọn khác mà tôi hoàn toàn nhìn ra?