Tôi muốn phát hiện khi nào ứng dụng của tôi được gửi tới nền. Có rất nhiều câu hỏi về việc móc khóa HOME - tôi hiểu điều này chỉ có thể bằng cách đăng ký làm ứng dụng trình chạy.Tự động đăng xuất Android khi ứng dụng chuyển sang nền
... NHƯNG ... vì luôn có khách hàng muốn có hành vi nhất định ...
Chúng tôi có một ứng dụng có yêu cầu bảo mật cao. Khách hàng muốn ứng dụng đăng xuất khỏi máy chủ bất cứ khi nào ứng dụng chạy vào nền vì bất kỳ lý do gì (gọi điện thoại, khóa HOME, quay lại hoạt động cuối cùng) (* * để làm rõ ý tôi là khi Hoạt động trước trên màn hình không phải là một trong các hoạt động của ứng dụng của tôi * *).
Vì vậy, nếu tôi không thể móc phím HOME, có các tùy chọn nào khác không? Rõ ràng chỉ cần hooking onPause()
sẽ không hữu ích, bởi vì đó là Activity
-specific.
Điều "tốt nhất" mà chúng tôi đã đưa ra là giữ một mảng tham chiếu Hoạt động trong lớp Ứng dụng của chúng tôi. Trong mỗi Hoạt động của onResume()
, chúng tôi thêm nó vào mảng này. Trong onPause()
, chúng tôi sẽ xóa nó. Cũng trong onPause()
chúng tôi liệt kê thông qua mảng này để tìm hiểu xem có bất kỳ hoạt động nào đã đăng ký ở phía trước hay không. Nếu không tìm thấy hoạt động tiền cảnh, người dùng sẽ bị đăng xuất.
Tôi không hài lòng với điều này như một giải pháp và hy vọng tìm được cách tốt hơn.
Tôi vừa thêm một bình luận mới cho chủ đề này, nơi tôi cho thấy một phương pháp tốt hơn (theo ý kiến của tôi) bằng cách sử dụng Application.ActivityLifecycleCallbacks cũng như phương thức @peceps. Xem câu trả lời của tôi cho chủ đề: http://stackoverflow.com/a/13996042/327386 – RPM
+1 giải pháp tuyệt vời cho API 14+ –