Giải quyết các vấn đề thường gặp về hiệu suất

Để mang đến trải nghiệm mượt mà, ổn định và tiết kiệm pin cho ứng dụng, bạn cần xác định và giải quyết các điểm nghẽn hiệu suất thường gặp về độ ổn định, kết xuất giao diện người dùng, mức tiêu thụ bộ nhớ, hoạt động ở chế độ nền, độ trễ khi khởi động và tối ưu hoá bản dựng.

Các hướng dẫn trong phần này giải thích hành vi cơ bản của nền tảng Android đối với từng loại vấn đề, đồng thời hướng dẫn cách chẩn đoán, phân tích tài nguyên và khắc phục các vấn đề đó bằng các công cụ như Trình phân tích tài nguyên Android Studio, Perfetto, Logcat và ApplicationExitInfo.

Độ ổn định

  • Lỗi ANR: Chẩn đoán và khắc phục lỗi Application Not Responding (ANR) do luồng giao diện người dùng bị chặn, I/O luồng chính, tranh chấp khoá hoặc broadcast receiver chậm.
  • Sự cố: Đọc dấu vết ngăn xếp, kiểm tra đầu ra Logcat, đồng thời ngăn chặn các ngoại lệ chưa được xử lý và tín hiệu gốc.

Kết xuất và khởi động

  • Kết xuất chậm: Xác định và khắc phục các khung hình giao diện người dùng bị bỏ qua hoặc bị treo (>16ms>700ms) do bố cục tốn nhiều tài nguyên, các lượt truyền liên kết hoặc tình trạng tắc nghẽn luồng chính.
  • Phiên chậm (chỉ dành cho trò chơi): Đo tốc độ khung hình bằng SurfaceFlinger và tối ưu hoá tốc độ khung hình của trò chơi bằng Android Frame Pacing (Swappy), Vulkan và Android Dynamic Performance Framework (ADPF).
  • Thời gian khởi động ứng dụng: Tìm hiểu nội dung bên trong của quy trình khởi động nguội, khởi động ấm và khởi động nóng, đo lường Thời gian hiển thị khung hình đầu tiên (TTID) và Thời gian hiển thị khung hình đầu tiên với nội dung đầy đủ (TTFD), đồng thời tối ưu hoá quy trình khởi động.

Quản lý bộ nhớ

Pin và hoạt động chạy trong nền

Quyền và tối ưu hoá bản dựng

  • Từ chối cấp quyền: Yêu cầu quyền khi bắt đầu chạy trong bối cảnh và giải thích rõ ràng cho người dùng về lý do yêu cầu cấp quyền.
  • Tối ưu hoá mã DEX: Định cấu hình các quy tắc rút gọn, làm rối mã nguồn và tối ưu hoá R8 để giảm kích thước DEX và cải thiện hiệu suất thời gian chạy.