首先我可以说我知道有很多资源处理服务和活动之间的通信,我还阅读了android开发者指南中与服务相关的部分。但是,我仍然不确定在我的情况下最好的方法。
当涉及到服务和其他组件(如活动)之间的通信时,绑定服务在大多数情况下被描述为解决方案。但据我所知,绑定服务的使用总是会导致请求/响应模型 - 活动调用服务上的方法(请求)并获得返回值(响应)。android 开发指南将此称为客户端/服务器模型。
在我的场景中,服务会定期生成 POJO 列表,但并不完全可预测(假设每 1.5 - 2 秒)。每次发生这种情况时,都应该将列表转移到一个活动中,以便在屏幕上显示它。在我看来,绑定服务不是这里的解决方案,因为我的场景与请求/响应模型不匹配。事实上,活动是被动的,并没有真正意识到服务。当然,我可以将轮询策略与绑定服务一起使用,但恕我直言,这不是我的最佳方法。
你会推荐什么?我在活动中找到了使用 BroadcastReceiver 的解决方案(服务充当发送者),这是唯一的方法还是有其他方法?还是我对绑定服务的理解有误,它们不仅限于请求/响应场景?
编辑:
正如我已经提到的,服务每 1.5-2 秒生成一个新列表 (java.util),并应立即传递给活动。这样的列表包含 20-25 个代表模型对象的 POJO;它们分别包含 5 个字符串和 3 个整数。只是为了让您感受一下复杂性。
BroadcastReceiver 是否足以满足这种数据量和频率?