2015-02-03 13 views
26

Gần đây tôi đã chạy một phiên truy tìm phương pháp trong quá trình mở một FragmentActivity mất khoảng 750-1000ms để mở từ hoạt động trước đó và có một ListView mà nó tải lô dữ liệu ban đầu của nó trong thời gian khác nhau ("thấp") là 1500 mili giây lên tới 5000 mili giây. Sau khi phân loại theo "thời gian độc quyền", tôi nhận thấy rằng một phương pháp có tên là android.os.MessageQueue.next đang chiếm đa số thời gian.android.os.MessageQueue.next chiếm đa số thời gian độc quyền - hành vi này có bình thường không?

Chế độ xem tất cả chuỗi chính sau phiên truy tìm phương pháp. Chú ý android.os.MessageQueue.next là lần đầu tiên trong danh sách:

A view of all the threads after a method tracing session

Bây giờ, câu hỏi của tôi là như vậy: là quy trình thao tác chuẩn này trong một ứng dụng Android - đó là, không android.os.MessageQueue.next tham khảo các hàng đợi chính chờ đợi cho các hoạt động khác ? Hoặc, luân phiên, điều này có thể chỉ ra một số loại bế tắc tạm thời không?

Tôi có nên lo lắng không?

+1

Bạn đã tạo ra bất kỳ handlerthread bên trong mã của bạn và sử dụng nó trong giai đoạn ban đầu? – 7383

+0

Có, tôi đang sử dụng thư viện. @ 7383 – Karim

Trả lời

1

Nếu bạn đang sử dụng một chuỗi xử lý, hy vọng có điều gì đó không ổn. Tôi có thể thấy những dòng này trong mã nguồn của phương thức tiếp theo của MessageQueue. Có một cái nhìn nó có thể giúp bạn hiểu.

** Thông báo tiếp theo() {// Quay lại đây nếu vòng lặp tin nhắn đã thoát và được xử lý. // Điều này có thể xảy ra nếu ứng dụng cố gắng khởi động lại một looper sau khi thoát // không được hỗ trợ. **

Source code

+1

Điều gì có thể xảy ra? Tôi gặp vấn đề tương tự –

Các vấn đề liên quan