Độ trễ khi khởi động là một chỉ số quan trọng để giữ chân người dùng hoạt động hằng ngày và đảm bảo trải nghiệm người dùng liền mạch ngay từ lượt tương tác đầu tiên. Điều này đặc biệt đúng trong các môi trường có mức RAM thấp, nơi có thể phải cân nhắc đánh đổi hiệu năng. Tuy nhiên, trước khi bắt đầu cải thiện quá trình khởi động ứng dụng, bạn cần hiểu rõ các khía cạnh đằng sau ảnh hưởng đến quá trình khởi động.
Các phương pháp hay nhất
Cài sẵn Hồ sơ cơ sở
Hồ sơ cơ sở cải thiện tốc độ thực thi mã khoảng 30% kể từ lần khởi chạy đầu tiên bằng cách tránh các bước diễn giải và các bước biên dịch trong khi thực thi (JIT) cho các đường dẫn mã đi kèm. Bằng cách cài sẵn Hồ sơ cơ sở trong một ứng dụng, Android Runtime (ART) có thể tối ưu hoá các đường dẫn mã được đưa vào thông qua tính năng biên dịch trước khi thực thi (AOT), cung cấp các tính năng nâng cao hiệu suất cho mỗi người dùng mới và trong mỗi bản cập nhật ứng dụng.
Tránh khởi chạy sớm
Tránh thực hiện sớm các tác vụ có thể không cần thiết trong quá trình khởi động của ứng dụng.
Tình huống phổ biến nhất để ứng dụng của bạn bắt đầu một quá trình nào đó là thông qua việc khởi chạy ứng dụng. Tuy nhiên, WorkManager, JobScheduler, BroadcastReceiver, các dịch vụ ràng buộc và thư viện khởi động AndroidX cũng có thể bắt đầu các quy trình ứng dụng ở chế độ nền. Nếu có thể, hãy tránh khởi chạy sớm mọi thứ một cách không cần thiết trong lớp Application
. Nhiều thư viện cung cấp tính năng khởi chạy theo nhu cầu, cho phép bạn gọi những tài nguyên này chỉ khi cần.
Di chuyển các tác vụ từ luồng giao diện người dùng sang luồng nền
Nếu có các tác vụ tốn nhiều thời gian hơn và chặn luồng chính, hãy chuyển các tác vụ đó sang luồng nền hoặc sử dụng WorkManager để đảm bảo hiệu quả. Xác định các tác vụ chiếm những khung thời gian lớn hoặc tốn nhiều thời gian hơn dự kiến. Độ trễ khi khởi động có thể cải thiện đáng kể nếu tối ưu hoá được những tác vụ này.
Phân tích và khắc phục tình trạng tranh chấp nghiêm trọng khi đọc ổ đĩa
StrictMode là một công cụ dành cho nhà phát triển, có thể giúp phát hiện việc vô tình sử dụng quyền truy cập ổ đĩa hoặc mạng trên luồng chính của ứng dụng, nơi nhận các thao tác giao diện người dùng và diễn ra ảnh động. Khi công cụ này phát hiện một khía cạnh có thể cải thiện, bạn có thể tự động chấm dứt ứng dụng hoặc ghi trường hợp vi phạm vào nhật ký để kiểm tra thêm sau này.
Tránh các IPC đồng bộ
Thông thường, nguyên nhân gây ra những khoảng thời gian tạm dừng dài trong quá trình thực thi của ứng dụng là do các lệnh gọi liên kết, cơ chế giao tiếp giữa các quá trình (IPC) trên Android. Trên các phiên bản Android gần đây, đó là một trong những lý do phổ biến nhất khiến luồng giao diện người dùng ngừng chạy. Nói chung, cách khắc phục là tránh dùng các hàm thực hiện lệnh gọi liên kết. Nếu không thể tránh khỏi, bạn nên lưu giá trị vào bộ nhớ đệm hoặc di chuyển tác vụ sang luồng nền. Để biết thêm thông tin, hãy xem phần Tạm hoãn lên lịch trong luồng.