Điều này đã khiến tôi phát điên trong một thời gian.
Có cách nào để phát hiện một cách đáng tin cậy nếu nút trang chủ đã được nhấn trong ứng dụng Android không?
Không đạt được điều đó, có cách nào hiệu quả để cho biết điều gì đã khiến một hoạt động chuyển sang trạng thái Tạm dừng không? tức là Chúng tôi có thể phát hiện xem nó có phải là do một hoạt động mới khởi chạy hay do nhấn back / home.
Một gợi ý mà tôi đã thấy là ghi đè onPause () và gọi isFinishing () nhưng điều này sẽ trả về false khi nhấn nút home giống như khi một hoạt động mới đang bắt đầu, vì vậy điều này không thể phân biệt giữa hai.
Bất kỳ giúp đỡ nhiều đánh giá cao.
** Cập nhật **: Cảm ơn @ android-đói về liên kết này: https://nishandroid.blogspot.com/
Đánh giá cao phương pháp sau:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Sau đó, sự kiện sau SẼ được kích hoạt cho các lần nhấn nút trang chủ:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Tôi không chắc liệu có bất kỳ tác dụng phụ nào với dòng này hay không:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Vì vậy, có vẻ như trái với suy nghĩ thông thường, trên thực tế, bạn có thể nghe thấy phím home. Đáng lo ngại là bạn có thể trả về false và không cần dùng phím home.
Cập nhật : Đúng như dự kiến, có một số ảnh hưởng từ phía này - có vẻ như video được nhúng và bản đồ google không hiển thị khi bật chế độ này.
Cập nhật : Được cho là bản hack này không còn hoạt động kể từ Android 4.0 trở đi
Activity.onUserLeaveHint()
.