Tệp báo lỗi SurfaceFlinger cung cấp thông tin tổng quan nhanh về SurfaceFlinger tại một thời điểm cụ thể. Dấu vết SurfaceFlinger có một trình tự theo thứ tự thời gian của các trạng thái cung cấp thông tin chi tiết có giá trị về cách một cửa sổ xuất hiện trên màn hình và xác định cửa sổ nào nhận được phản hồi chạm tại các vị trí cụ thể. Thông tin này rất cần thiết để khắc phục các sự cố như ứng dụng không phản hồi thao tác chạm của tôi hoặc Tôi gặp phải hiện tượng nhấp nháy khi xem video.
Trình xem SurfaceFlinger của Winscope hiển thị thông tin này cho các dấu vết được thu thập bằng chế độ đang hoạt động hoặc được tạo từ dấu vết giao dịch khi lấy báo cáo lỗi (theo mặc định, cấu hình Droidfood), cũng như cho tệp báo lỗi.
Hãy xem phần SurfaceFlinger (lớp) để biết thêm thông tin về việc thu thập dấu vết.
Hình 1. Phân tích dấu vết SurfaceFlinger.
Ở bên trái màn hình, bạn sẽ thấy chế độ xem 3D của các lớp. Khung hiển thị rects xem xét các giới hạn lớp, thứ tự z, độ mờ, Z tương đối và các góc bo tròn.
Khối hệ phân cấp
Phần trung tâm của thẻ cho thấy hệ phân cấp lớp với các khối để biết thêm thông tin, chẳng hạn như mối quan hệ mẹ con giữa các lớp, như sau:
- V: Xác định các lớp hiển thị.
- RelZParent: Xác định các lớp có phần tử con RelZ.
- RelZ: Xác định các lớp có RelZParent và được vẽ theo thứ tự z dưới dạng hệ phân cấp.
- HWC: Xác định các lớp do Trình tổng hợp phần cứng tạo.
- GPU: Xác định các lớp do GPU tạo.
Ở bên phải màn hình, bạn sẽ thấy danh sách thuộc tính được tuyển chọn, cũng như tệp báo lỗi proto của tất cả thuộc tính lớp hiện có. Để biết thêm thông tin về các tính năng của phần tệp kết xuất proto, hãy xem phần Thuộc tính.
Cơ sở lưu trú được chọn lọc
Để gỡ lỗi dễ dàng hơn, trình xem SurfaceFlinger cung cấp một danh sách các thuộc tính được tuyển chọn, trình bày thông tin được sử dụng phổ biến nhất theo định dạng có tổ chức hơn:
Hình 2. Thuộc tính SurfaceFlinger.
Danh sách này bao gồm các danh mục sau.
Chế độ hiển thị
Khối này chứa thông tin về chế độ hiển thị của lớp và giải thích lý do lớp không hiển thị. Thư mục này bao gồm:
Cờ: Các cờ này kiểm soát chế độ hiển thị, ví dụ: HIDDEN
và OPAQUE
.
Lý do ẩn: Nội dung giải thích lý do lớp hoặc nền tảng không hiển thị trên màn hình (nếu có), ví dụ: bị ẩn bởi chính lớp hoặc lớp mẹ hoặc không có vùng đệm để vẽ.
Bị che khuất, Bị che khuất một phần hoặc Bị che khuất:
- Bị che khuất: Lớp hiện tại được tính là hiển thị, nhưng một lớp mờ khác được vẽ lên trên lớp đó, khiến lớp hiện tại không hiển thị. Lớp ở phía trên lớp Bị che khuất là lớp mờ, tức là cờ
OPAQUE
của lớp này được đặt hoặc định dạng pixel không chứa alpha hoặc không có alpha được đặt trên lớp. - Một phần bị che khuất: Lớp hiện tại hiển thị một phần vì lớp mờ được vẽ trên lớp đó không che phủ hoàn toàn lớp đó. Lớp phía trên lớp Partially Occluded (Bị che khuất một phần) là lớp mờ, tức là cờ
OPAQUE
được đặt hoặc định dạng pixel không chứa alpha hoặc không có alpha được đặt trên lớp. Được che phủ: Lớp hiện tại được che phủ hoàn toàn hoặc một phần bởi một lớp không mờ và có thể vẫn hiển thị trên màn hình. Lớp phía trên lớp Covered (Được che phủ) không mờ, tức là cờ
OPAQUE
không được đặt hoặc định dạng pixel chứa alpha hoặc alpha được đặt trên lớp. Tuy nhiên, đối với các dấu vết SurfaceFlinger, lớp Covered (Đã che phủ) sẽ hiển thị dưới dạng hiển thị, đối với các lớp bên dưới SurfaceFlinger:Hình 3. Lớp được che trên SurfaceFlinger.
Hình học và hiệu ứng
Phần này mô tả hình học và hiệu ứng được yêu cầu và tính toán cho lớp hiện tại.
Phần Requested (Đã yêu cầu) cho biết các thuộc tính đang được đặt trên lớp. Ngược lại, phần Đã tính toán hiển thị các thuộc tính đang được áp dụng cho lớp. Sự khác biệt này là do hình học và hiệu ứng được truyền xuống hệ phân cấp và kế thừa từ các phần tử mẹ.
Trong Hình 2, lớp yêu cầu đặt Corner Radius (Đường kính góc) thành 0 px. Tuy nhiên, một trong các lớp mẹ của lớp này đặt Corner Radius (Đường kính góc) thành 97,419 px, đây là giá trị được áp dụng:
Vùng đệm
Các thuộc tính sau đây hiển thị thông tin về việc lớp có vùng đệm, kích thước và phép biến đổi hay không.
- Số khung: Số tăng dần bắt đầu khi tạo ứng dụng.
- Khung đích: Dùng để điều chỉnh kích thước vùng đệm theo các giới hạn do khung đích xác định.
Hệ phân cấp
Các thuộc tính sau đây mô tả cách xác định hệ phân cấp của các lớp:
- Thứ tự z: Trong hệ phân cấp lớp, thứ tự z xác định vị trí tương đối của một lớp so với các lớp đồng cấp. Một lớp có giá trị z là 0 được đặt phía trên lớp mẹ. Nếu nhiều lớp có cùng giá trị z, thì lớp có mã lớp cao hơn sẽ được đặt ở trên cùng.
- thành phần mẹ tương đối: Cho biết lớp mẹ tương đối theo thứ tự z. Phần tử con không kế thừa bất kỳ thuộc tính nào từ phần tử mẹ tương đối, ngoại trừ cờ ẩn.
Đầu vào
Các thuộc tính sau đây chứa thông tin về vùng có thể chạm và tiêu điểm:
- Cắt vùng cảm ứng bằng mục: Sử dụng giới hạn lớp để cắt vùng có thể chạm.
- Thay thế vùng cảm ứng bằng vùng cắt: Sử dụng vùng cắt lớp hiện tại làm vùng có thể chạm.