2012-10-02 39 views
6

Thông thường, các cuộc gọi Android trên số Activity của bạn khi nó bắt đầu bị che khuất hoặc bị ẩn, tiếp theo là onStop khi nó không còn hiển thị nữa. Trong trò chơi của tôi, tôi tạm dừng trò chơi trong , vì vậy người dùng không mất trò chơi trong khi tìm kiếm ở nơi khác.Cách thông báo hoạt động đã được khu vực thông báo bao trả?

Tuy nhiên, khi người dùng kéo xuống thanh thông báo, nó bao gồm Activity của tôi, nhưng không được gọi cũng không phải onStop. Điều này dường như không được đề cập trong tài liệu. Các trò chơi đánh dấu đi trong nền với không ai nhìn vào nó. Có cách nào khác để cho biết số Activity của tôi đã bị che khuất khi điều này xảy ra, vì vậy tôi có thể tạm dừng trò chơi trước khi người dùng mất? Tôi không thể tìm thấy bất kỳ điều gì về điều này trên trang web dành cho nhà phát triển Android.

Trả lời

3

StatusBarManager không phải là một phần của API chính thức, tôi thấy khó có khả năng phát hiện ra nó. Ngay cả khi sử dụng sự phản chiếu, không có lớp trạng thái nào dường như có móc cho người nghe.

Nếu khả thi, bạn có thể deactivate the statusbar. Nếu không, tôi nghĩ rằng bạn đang trên may mắn :(

+0

Không sao cả. 'onWindowFocusChanged' được kích hoạt trong Activity khi thông báo được kéo xuống. –

8

Các onWindowFocusChanged(boolean hasFocus) của Activity nên phục vụ mục đích yêu cầu. Nó được gọi với false khi vùng thông báo được kéo xuống, và với true khi khu vực này được kéo trở lại. Các tương ứng Android documentation khẳng định rằng phương pháp này "là chỉ số tốt nhất cho dù hoạt động này được hiển thị cho người sử dụng". Nó cũng tuyên bố rõ ràng rằng callback được kích hoạt khi "thanh trạng thái bảng thông báo" được hiển thị.

Điều quan trọng cần lưu ý là phương pháp này cũng được gọi trong các tình huống khác. là màn hình hiển thị của AlertDialog. onWindowFocusChanged thậm chí còn được gọi khi bản thân hoạt động hiển thị số AlertDialog. Điều này có thể yêu cầu xem xét, tùy thuộc vào nếu trò chơi của bạn sử dụng AlertDialogs hoặc cái gì khác gây ra thay đổi tập trung.

Trong trường hợp tương tự như kịch bản được mô tả trong câu hỏi này, chúng tôi đã sử dụng thành công phương pháp onWindowFocesChanged, ví dụ: trên Nexus 5 với Android 4.4 hoặc Sony Xperia Tablet với Android 4.1.

Các vấn đề liên quan