Bất cứ ai có thể giải thích lý do tại sao một người nào đó nên sử dụng tính năng Android Looper để tạo ra một "luồng đường ống" thay vì tạo một luồng bình thường để kéo nhiệm vụ từ một BlockingQueue? Trên bề mặt, có vẻ như hai cách để làm điều tương tự.Android Looper vs BlockingQueue?
9
A
Trả lời
4
Chặn Queue cho phép bạn có nhiều người tiêu dùng và nhà sản xuất trong khi cơ chế Looper cho phép bạn có nhiều nhà sản xuất nhưng chỉ có một người tiêu dùng.
Vì vậy, trong chuỗi Looper bạn chỉ thực hiện một tác vụ (runnable) tại một thời điểm. Cơ chế looper được tạo ra để bạn có thể dễ dàng thực thi các runnables (các nhiệm vụ được đóng gói dưới dạng các thông điệp) trên chuỗi giao diện người dùng (chạy dưới dạng một chuỗi đơn lẻ để nghĩ về nó như là một người tiêu dùng duy nhất)
Looper/Handler cũng cung cấp chức năng hoãn lại exection của nhiệm vụ mà BlockingQueue ra khỏi hộp không. Một lần nữa điều này rất quan trọng trong bối cảnh của bộ công cụ UI.