6

Có cách nào để biết liệu chương trình phát thanh LocalBroadcastManager đã được nhận chưa? Hoặc đang được lắng nghe?Có cách nào để biết liệu các chương trình phát sóng LocalBroadcastManager đã được nhận chưa?

Về cơ bản tôi có nghe IntentService cho Google Cloud Messages. Khi nó được một tôi cần phải hiển thị một thông báo HOẶC cảnh báo Dịch vụ chính của tôi rằng đã có một tin nhắn mới - chủ yếu là tôi không muốn cả hai! Vì vậy, tôi cần biết liệu thông điệp đó có được dịch vụ chính của tôi xử lý hay không ...

Rõ ràng nó có thể được thực hiện với sendOrderedBroadcast và BroadcastReceiver nhưng dường như quá mức cho các yêu cầu nội bộ riêng tư đơn giản của tôi.

+0

Tại sao bạn cần hai dịch vụ ngay từ đầu? – CommonsWare

+2

@CommonsWare - vì chúng có mục đích khác nhau và vòng đời khác nhau và do đó cải thiện kiến ​​trúc ứng dụng của tôi để tách chúng ra. Một là IntentService và một là một dịch vụ ràng buộc. – ostergaard

Trả lời

25

Có cách nào để biết liệu chương trình phát sóng LocalBroadcastManager đã được nhận chưa? Hoặc đang được lắng nghe?

sendBroadcast() trả về true nếu có 1+ người nhận, false nếu không. Đó không phải là tài liệu, nhưng đó là dựa trên việc thực hiện hiện tại. Tôi đã nộp an issue to get that documented.

Do đó, IntentService của bạn có thể sử dụng sendBroadcast() để cố gửi tin nhắn đến số Service đang chạy của bạn, nếu có. Nếu có, sendBroadcast() phải trả lại trueIntentService biết rằng thư phải được xử lý ở đó. Nếu sendBroadcast() trả lại false, bạn có thể tăng số Notification.

+1

DUH! Tôi thậm chí còn thấy kết quả boolean và chỉ nghĩ rằng nó có nghĩa là chương trình phát sóng được phát sóng tốt. Cảm ơn. – ostergaard

+0

Thật là một 'điều mặc khải' và nhẹ nhõm rằng nó thực sự là giả định của tôi! Cảm ơn @CommonsWare! –

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