Tổng quan nhanh về việc cần làm

Task Snapshots (Bản tổng quan nhanh về tác vụ) là cơ sở hạ tầng ra mắt trong Android 8.0, kết hợp ảnh chụp màn hình cho Hình thu nhỏ gần đây cũng như Các nền tảng đã lưu từ Trình quản lý cửa sổ. Hình thu nhỏ gần đây thể hiện trạng thái cuối cùng của một nhiệm vụ trong chế độ xem Recents (Gần đây).

Khi một hoạt động chuyển sang trạng thái dừng, Trình quản lý cửa sổ đã không huỷ bỏ nền tảng của hoạt động miễn là hoạt động đó nằm ở đầu tác vụ. Nếu hoạt động này phải được hiển thị lại, Trình quản lý cửa sổ có thể bắt đầu mà không cần đợi hoạt động vẽ xong khung đầu tiên, như có thể sử dụng Bề mặt đã lưu này.

Kiến trúc

Hai khái niệm Hình thu nhỏ gần đây và Nền tảng đã lưu thống nhất với Nhiệm vụ Bản tổng quan nhanh. Khi một tác vụ chuyển sang chạy trong nền, Trình quản lý cửa sổ sẽ đặt ảnh chụp màn hình của tác vụ này vào GraphicBuffer. Miễn là ứng dụng hàng đầu hoạt động của tác vụ vẫn còn trong bộ nhớ, GraphicBuffer này sẽ được giữ lại trong bộ nhớ. Bây giờ, khi cùng một hoạt động được đưa lên phía trước một lần nữa, Cửa sổ Trình quản lý sẽ tạo một cửa sổ bắt đầu (TaskSnapshotSurface) và đính kèm GraphicBuffer không sao chép bất kỳ bộ nhớ nào vào hàng đợi bộ đệm của phần khởi động cửa sổ. Ngay khi hoạt động vẽ khung đầu tiên, báo cáo Tổng quan nhanh về tác vụ cửa sổ khởi động sẽ mờ dần như màn hình chờ thông thường.

Cùng một GraphicBuffer cũng được gửi qua Binder đến SystemUI để dùng để vẽ trạng thái xem trước của một công việc trong khung hiển thị Gần đây. Vì đây chỉ là tài liệu tham khảo vào vùng đệm, việc gửi nó qua liên kết sẽ tốn ít tài nguyên. Khi GraphicBuffer đến SystemUI, phần này được gói vào Bitmap phần cứng rồi sau đó vẽ lên màn hình mà không tải bất kỳ bộ nhớ nào lên bộ nhớ đồ hoạ.

Lợi ích

Có ba lợi ích chính đối với cấu trúc mới này:

  • Nếu ảnh chụp nhanh tác vụ được dùng làm cửa sổ bắt đầu, sẽ có một hiệu ứng chuyển đổi bắt mắt giữa ảnh chụp nhanh và nội dung thực.
  • Khi tạo bản tổng quan nhanh về tác vụ trong SystemUI, bạn có thể thực hiện việc này mà không cần bất kỳ sao chép. Trước đây, bitmap phải được sao chép vào Ashmem rồi vào đồ hoạ bộ nhớ. Do phương thức này lưu trữ ảnh chụp nhanh trực tiếp trong bộ nhớ đồ hoạ, nên không cần sao chép.
  • Trạng thái bạn thấy trong mục Gần đây luôn khớp với trạng thái bạn thấy lần đầu khi đang mở lại ứng dụng. Việc có cùng bộ đệm ở đây cũng giúp tiết kiệm nhiều bộ nhớ. Đó là lý do ứng dụng Gần đây có thể hiển thị những hình ảnh này ở độ phân giải đầy đủ. Trước đây, hệ thống đã giảm tần suất lấy mẫu xuống 64% để tiết kiệm bộ nhớ.

Triển khai

Tính năng này tồn tại hoàn toàn trên nền tảng Android. Không có tích hợp nào là và không hỗ trợ tuỳ chỉnh. Tuy nhiên, nhà sản xuất thiết bị có thể tắt hoàn toàn tính năng Ảnh chụp nhanh tác vụ.

Để tắt tính năng này, hãy sửa đổi chức năng này:

frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java#215

Lưu ý rằng nếu tính năng này bị tắt, chế độ xem Gần đây sẽ không hiển thị bất kỳ bất kỳ hình thu nhỏ nào.

Ảnh chụp nhanh có độ phân giải cao và độ phân giải thấp

Ảnh chụp nhanh công việc được ghi vào ổ đĩa ở 2 tỷ lệ. Khi khôi phục một việc cần làm từ ổ đĩa, các ảnh chụp nhanh có độ phân giải thấp sẽ được đọc trước, sau đó được thay thế bằng phiên bản có độ phân giải cao. Tính năng tối ưu hoá này cải thiện thời gian tải hình ảnh. Nếu không, có thể có đôi chút chậm trễ khi đọc tệp ảnh chụp nhanh từ ổ đĩa và người dùng sẽ thấy một thẻ tác vụ trống cho đến khi có hình ảnh. Bạn có thể định cấu hình tỷ lệ trong tệp cấu hình lớp phủ thiết bị overlay/frameworks/base/core/res/res/values/config.xml theo chế độ cài đặt config_highResTaskSnapshotScaleconfig_lowResTaskSnapshotScale. Theo mặc định, các giá trị này được đặt thành 1.0 và 0,5 lần lượt. Tắt ảnh chụp nhanh có độ phân giải thấp bằng cách cài đặt config_lowResTaskSnapshotScale thành 0.0.

Ví dụ và nguồn

Tìm phần còn lại của mã cho tính năng này trong các tệp TaskSnapshot* trong:

frameworks/base/+/main/services/core/java/com/android/server/wm/