Trong dự án của tôi, tôi đang sử dụng BroadcastReceiver
s làm cuộc gọi lại từ chuỗi đang chạy dài (ví dụ: thông báo cho hoạt động tải xuống đã hoàn tất và gửi một số dữ liệu phản hồi từ Công nhân Thread
để hoạt động có thể hiển thị thông báo thích hợp cho người dùng ..). Để sử dụng BroadcastReceiver
s, tôi phải cẩn thận đăng ký và hủy đăng ký người nhận phát mỗi khi tôi sử dụng và cũng phải quan tâm đến những thông điệp nào cần gửi khi tôi sử dụng phương pháp này để thực hiện các hành động khác nhau (như tải xuống, tạo WebService) cuộc gọi, v.v.). Và cũng để gửi các đối tượng tùy chỉnh thông qua mục đích của Broadcast tôi cũng cần phải làm cho các đối tượng Parcelable
.Android BroadcastReceiver hoặc phương thức gọi lại đơn giản?
Không giống như cách tiếp cận này, tôi cũng đã thấy cách tiếp cận phương thức gọi lại dường như đơn giản hơn phương pháp tôi sử dụng. Các phương thức gọi lại là thực hiện các phương thức Giao diện đơn giản có thể được sử dụng để đạt được hiệu ứng tương tự như tin nhắn ứng dụng của BroadcastRecaiver. Cách tiếp cận này không cần thực thi Parcelable để trả về các đối tượng phức tạp và nó không sử dụng các phím như BroadcastReceiver
.. Tôi nghĩ rằng phần xấu là tôi cần kiểm tra đối tượng gọi lại cho giá trị null trước khi tôi muốn gọi phương thức gọi lại. Và cũng để đảm bảo rằng tôi đang chạy mã từ việc triển khai trên chuỗi giao diện người dùng để tôi có thể cập nhật giao diện người dùng mà không có lỗi.
Ok, tôi hy vọng bạn hiểu ý tôi muốn nói :).
Bây giờ câu hỏi là bạn có nghĩ rằng phương pháp gọi lại là tốt hơn (nhẹ hơn, sạch hơn, nhanh hơn ..) so với phương pháp BroadcastReceiver
khi được sử dụng ngay bên trong một ứng dụng đơn lẻ? (Lưu ý rằng tôi không sử dụng Android Service
để làm việc nền .. chỉ cần AsyncTask
và Thread
s)
Cảm ơn bạn!
Tôi đã trao giải thưởng này như một câu trả lời và cho nó tiền thưởng vì đó là câu trả lời hoàn chỉnh nhất .. Cảm ơn tất cả vì những suy nghĩ của bạn! – Cata
Câu trả lời hay. Tôi là một fan hâm mộ của mẫu gọi lại/giao diện nhưng tôi thường kế thừa các dự án với việc sử dụng rộng rãi mô hình mục đích phát sóng và tôi thường tự hỏi liệu tôi có đang đi sai hướng về nó hay không. Thật tuyệt khi biết rằng đó thực sự là vấn đề về sở thích thiết kế hơn là thực hành tốt nhất. Tôi thích loại an toàn và mã rõ ràng được cung cấp bởi giao diện và có lẽ tôi sẽ gắn bó với chúng bây giờ –
ý kiến rất thú vị và chi tiết +1 – Jorgesys