Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn Khởi động

Khởi động nguội trong Flutter: đo khoảng thời gian trước frame đầu tiên

“App mở mất ba giây” là một lời phàn nàn, không phải một phép đo. Ba giây tính từ đâu — từ cú chạm, từ lúc tiến trình sinh ra, từ lúc engine dựng lên, hay từ khoảnh khắc main() của bạn chạy? Mỗi mốc là một vấn đề khác nhau với cách sửa khác nhau, và tối ưu nhầm chỗ chính là cách một đội tiêu cả sprint để đưa thời gian khởi động từ 2,9 giây xuống 2,8 giây. Khởi động nguội của ứng dụng Flutter có bốn giai đoạn, và chúng tách bạch được. Bốn giai đoạn 1. Khởi tạo tiến trình. Hệ điều hành tạo tiến trình, nạp file thực thi cùng các thư viện chia sẻ, rồi trao quyền cho phần runner của nền tảng. Không có gì trong code Dart của bạn ảnh hưởng tới giai đoạn này. Thứ có ảnh hưởng là kích thước binary (xem bài về kích thước ứng dụng) và, trên Android, số thư viện phải liên kết. 2. Khởi tạo engine. Engine Flutter khởi động, Dart VM dựng lên, và — ở bản release — snapshot AOT được ánh xạ vào bộ nhớ. Việc đăng ký plugin ở phía nền tảng diễn ra tại đây. 3. Từ main() của Dart tới runApp() . Co...