2012-08-25 31 views
10

Tôi đã có Chế độ xem được tăng tốc phần cứng trên nhiều thiết bị. Trong Chế độ xem đó tôi cần có thể kiểm tra xem tăng tốc phần cứng có được sử dụng hay không. According to Android SDK documentation, việc này được thực hiện bằng cách sử dụng View.isHardwareAccelerated(). Điều thú vị là khi thử nghiệm trên các thiết bị hỗ trợ tăng tốc phần cứng, phương pháp này luôn trả về false, mặc dù chính Chế độ xem thực sự đang được tăng tốc phần cứng. (Tôi đã xác nhận một cách dứt khoát điều này) Nó trở nên khó hiểu hơn:View.isHardwareAccelerated() luôn là false

Nếu tôi thực hiện cuộc gọi đến View.getLayerType() Tôi thấy rằng nó luôn được đặt thành View.LAYER_TYPE_NONE. Nếu tôi gọi tới số , tôi có thể vô hiệu hóa khả năng tăng tốc phần cứng một cách hiệu quả. Tôi có thể bật lại bằng cách gọi số View.setLayerType(View.LAYER_TYPE_HARDWARE) HOẶC View.setLayerType(View.LAYER_TYPE_NONE). Tại sao View.LAYER_TYPE_NONE cho phép tăng tốc phần cứng ???

Di chuyển trên, đối với thiết bị hỗ trợ tăng tốc hw, có vẻ như tôi chỉ có thể kiểm tra trạng thái bằng cách kiểm tra xem có hay không View.LAYER_TYPE_SOFTWARE được đặt, tuy nhiên tôi nghi ngờ rằng phương pháp này sẽ không hoạt động trên các thiết bị không hỗ trợ tăng tốc hw. Tôi muốn biết liệu tôi có đang lạm dụng View.isHardwareAccelerated() hay không đơn giản là nó bị hỏng.

EDIT: Tôi nghĩ rằng tôi gần hơn một chút để hiểu sự cố. Câu hỏi này cũng là hữu ích:

Detect Hardware Acceleration at Runtime: Android

lý thuyết làm việc của tôi là Xem doesnt chưa biết cho dù đó là phần cứng tăng tốc hay không khi nó constructor được gọi, đó là nơi tôi đang làm kiểm tra của tôi. Nếu đây là trường hợp, tôi tự hỏi những gì tôi có thể ghi đè trong lớp học của tôi mà mở rộng Xem mà sẽ cho phép tôi kiểm tra thành công tăng tốc phần cứng. Tôi nghi ngờ rằng View.onSizeChanged(...) sẽ hoạt động, nhưng tôi muốn tránh sử dụng thứ gì đó có khả năng có thể được gọi nhiều lần.

EDIT # 2: Có vẻ như vậy. Tôi đã chuyển séc của mình vào View.onSizeChanged() và giờ đây báo cáo chính xác. Tôi vẫn tự hỏi nếu có một nơi tốt hơn trong View của tôi rằng tôi có thể di chuyển kiểm tra này mặc dù.

+0

Tôi tò mò, bạn đã tìm ra sự khác biệt giữa LAYER_TYPE_HARDWARE, LAYER_TYPE_SOFTWARE và LAYER_TYPE_NONE chưa? –

Trả lời

2

Tôi đã cân nhắc điều này một thời gian. Rất vui được thấy bạn đã tìm ra vấn đề là gì. Tài liệu này mô tả chính xác điều này nhưng không rõ ràng lắm. "Returns: True nếu xem được gắn đến một cửa sổ và cửa sổ là phần cứng tăng tốc"

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