Mục lục bài viết
Máy lên nguồn bình thường, qua được logo hãng, nhưng dừng lại ở màn hình “Đang tối ưu hoá ứng dụng X trên Y” kèm thanh tiến trình gần như không nhúc nhích trong nhiều chục phút. Khác với treo logo hay bootloop, đây là dấu hiệu cho thấy nhân hệ điều hành đã tải xong và đang chạy một tác vụ có thể theo dõi tiến độ — vấn đề là xác định khi nào là bình thường cần thời gian, khi nào đã bị kẹt vĩnh viễn.
Bản chất bước tối ưu hoá ứng dụng sau cập nhật hệ thống
Màn hình này xuất hiện chủ yếu sau khi cập nhật Android hoặc khôi phục firmware, khi hệ thống chạy công cụ biên dịch trước (ART – Android Runtime) để chuyển bytecode từng ứng dụng đã cài sang mã máy tối ưu cho đúng phần cứng, giúp ứng dụng mở nhanh hơn sau này thay vì biên dịch lại mỗi lần mở. Số lượng ứng dụng cần xử lý tỷ lệ thuận với thời gian chờ — máy cài 200 ứng dụng mất thời gian lâu hơn hẳn máy chỉ cài 20, đây là hành vi thiết kế bình thường, không phải lỗi.
Thời gian chờ hợp lý theo số lượng ứng dụng và cấu hình chip
Trên chip tầm trung, tốc độ tối ưu mỗi ứng dụng dao động vài giây đến nửa phút, nghĩa là máy cài nhiều ứng dụng có thể cần 30-45 phút là bình thường sau bản cập nhật lớn. Dấu hiệu phân biệt: quan sát số thứ tự ứng dụng hiển thị (ví dụ “Đang tối ưu hoá ứng dụng 45 trên 210”) có tăng dần hay không, dù chậm. Đứng yên hoàn toàn quá 15-20 phút không nhích thêm, khả năng cao tiến trình đã thực sự kẹt.
Nguyên nhân khiến tiến trình tối ưu hoá bị kẹt thật sự
Kẹt tiến trình thường xảy ra khi ứng dụng đang xử lý có file cài đặt (APK) hỏng hoặc dữ liệu không còn tương thích sau cập nhật, khiến ART gặp lỗi không xử lý được nhưng cũng không có cơ chế bỏ qua để chuyển sang ứng dụng kế tiếp. Nguyên nhân khác là bộ nhớ trong gần cạn, không đủ chỗ trống tạm thời để ART ghi ra mã đã biên dịch, khiến tiến trình treo lặng lẽ mà không hiển thị thông báo lỗi nào.
Vì sao không nên tắt nguồn giữa lúc đang tối ưu hoá
Ngắt nguồn đột ngột trong lúc ART đang ghi dữ liệu biên dịch có nguy cơ làm hỏng thêm chính ứng dụng đang xử lý dở dang, đôi khi lan sang cache biên dịch của các ứng dụng đã xong trước đó. Nếu buộc phải can thiệp vì đã chờ quá lâu và số thứ tự thực sự đứng yên, nên ưu tiên khởi động vào Safe Mode trước — chế độ này bỏ qua bước tối ưu hoá của ứng dụng bên thứ ba, cho phép vào màn hình chính để gỡ ứng dụng nghi ngờ.
Khác biệt so với bootloop và treo logo ở khả năng phục hồi
Điểm khác quan trọng nhất so với bootloop hay treo logo cứng là máy đã chứng minh toàn bộ chuỗi khởi động cấp thấp hoạt động hoàn toàn bình thường — chỉ riêng bước biên dịch ứng dụng bị vướng. Khả năng phục hồi không cần xoá dữ liệu vì vậy cao hơn hẳn, có thể can thiệp chọn lọc (gỡ đúng ứng dụng gây lỗi qua Safe Mode hoặc ADB) thay vì phải flash lại toàn bộ firmware như lỗi ở tầng kernel.
Hiểu nhầm thường gặp
Nhiều người thấy màn hình “Đang tối ưu hoá ứng dụng” liền cho rằng máy đang bị treo giống treo logo và lập tức rút pin hoặc giữ nút nguồn ép tắt máy. Ép tắt quá sớm trong khi tiến trình vẫn chạy bình thường (chỉ chậm do số lượng ứng dụng lớn) là nguyên nhân khiến máy từ chỗ chỉ cần chờ thêm biến thành lỗi phân vùng dữ liệu ứng dụng thật, phải xoá dữ liệu hoặc cài lại máy.
Xem thêm
Bài viết thuộc cụm Sập nguồn & treo logo — tổng hợp bài viết. Nếu máy từng sập nguồn ngay giữa lúc cập nhật phần mềm dở dang trước khi rơi vào trạng thái tối ưu hoá kéo dài này, đọc thêm bài Máy sập nguồn giữa lúc cập nhật phần mềm dở dang: cách xử lý an toàn, tránh hỏng thêm. Thông tin kỹ thuật chi tiết hơn được công bố tại trang hỗ trợ Android chính thức của Google.
