30/09/2018, 19:34
So sánh giữa Observer và Broadcast Receiver
Bà con cho mình hỏi sự khác biệt giữa Observer và Broadcast Receiver trong Android ?
Mình thấy 2 cái này cũng tương tự nhau trong quá trình nhận và gởi broadcast.
Bài liên quan
Broadcast có thể hoạt động ngay cả khi app chưa chạy vì nó đăng kí với hdh, method onReceive của đối tượng broadcast luôn được hệ thống gọi ở main thread (không tính tự bạn gọi đâu nhé). Observer chỉ là nói chung về 1 design pattern dạng thông báo sự kiện thôi
Như vậy ý bạn nói là BroadcastReceiver chính là 1 dạng hiện thực hóa của mô hình Observer
Mình đính chính lại tí nhé :
Từ Android 3.0 , các broadcast receiver đăng kí ở manifest chỉ dc active khi app đc chạy ít nhất 1 lần. Nếu chỉ cài đặt mà chưa sử dụng thì receiver vẫn chưa dc active bạn nhé .
Làm sao để so sánh khi mà Broadcast Receiver là một thành phần trong Android được triển khai dựa trên pattern Observer?
Đúng là không thể so sánh được vì mô hình Broadcast Receiver được triển khai dựa trên pattern Observer. Tuy nhiên, ở một nghĩa hẹp thì có thể có 1 số điểm sau:
Có 1 số ưu nhược điểm của 2 cái này:
Ngoài ra, Android cũng support kiểu mô hình này trong nội bộ app qua LocalBroadcastManager (đỡ phải dùng Observer truyền thống). Tuy nhiên, tùy context mà bạn chọn dùng hay không dùng (cần tight decoupling thì dùng Observer truyền thống, còn loose decoupling thì dùng BroadcastReceiver)
Thế có so sánh thêm EventBus vào được không nhỉ, vì mình nghĩ no cũng là 1 Pattern của Observer