Các giai đoạn và hiệu suất của Compose

Khi Compose cập nhật một khung, tính năng này sẽ trải qua ba giai đoạn:

  • Thành phần kết hợp: Compose xác định nội dung sẽ hiển thị. Thư viện này chạy các hàm có khả năng kết hợp và xây dựng cây giao diện người dùng.
  • Bố cục: Compose xác định kích thước và vị trí của từng phần tử trong cây giao diện người dùng.
  • Bản vẽ: Compose thực sự hiển thị các thành phần riêng lẻ trên giao diện người dùng.

Compose có thể bỏ qua bất kỳ giai đoạn nào trong số đó một cách thông minh nếu không cần thiết. Ví dụ: hãy giả sử một phần tử đồ hoạ hoán đổi giữa hai biểu tượng có cùng kích thước. Vì phần tử này không thay đổi kích thước và không có phần tử nào trên cây giao diện người dùng được thêm hoặc xoá, nên Compose có thể bỏ qua các giai đoạn thành phần và bố cục cũng như vẽ lại một phần tử này.

Tuy nhiên, lỗi lập trình có thể khiến Compose khó biết được giai đoạn nào có thể bỏ qua một cách an toàn. Trong trường hợp đó, Compose sẽ chạy cả ba giai đoạn, điều này có thể làm chậm giao diện người dùng. Vì vậy, nhiều phương pháp hay nhất về hiệu suất là để giúp Compose bỏ qua các giai đoạn mà nó không cần làm.

Để biết thêm thông tin, hãy xem hướng dẫn về Các giai đoạn trong Jetpack Compose.

Nguyên tắc chung

Có một số nguyên tắc chung mà bạn có thể áp dụng để cải thiện hiệu suất chung:

  • Nếu có thể, hãy di chuyển các phép tính ra khỏi các hàm có khả năng kết hợp. Bạn có thể cần chạy lại các hàm có khả năng kết hợp bất cứ khi nào giao diện người dùng thay đổi. Bất kỳ mã nào bạn đưa vào thành phần kết hợp đều sẽ được thực thi lại, có thể đối với mọi khung hình của ảnh động. Giới hạn mã của thành phần kết hợp chỉ ở những gì cần thiết để tạo giao diện người dùng.
  • Trì hoãn việc đọc trạng thái càng lâu càng tốt. Bằng cách di chuyển đọc trạng thái sang một thành phần kết hợp con hoặc giai đoạn sau, bạn có thể giảm thiểu quá trình kết hợp lại hoặc bỏ qua hoàn toàn giai đoạn kết hợp. Bạn có thể thực hiện việc này bằng cách truyền các hàm lambda thay vì giá trị trạng thái để trạng thái thường xuyên thay đổi, cũng như ưu tiên đối tượng sửa đổi dựa trên lambda khi bạn chuyển ở trạng thái thay đổi thường xuyên. Bạn có thể xem ví dụ về kỹ thuật này trong phần Trì hoãn việc đọc càng lâu càng tốt của bài viết Làm theo các phương pháp hay nhất.

Tài nguyên khác