无需轮询即可将数据从服务发送到活动

时间:2018-05-09 05:46:39

标签: android android-service android-broadcast android-broadcastreceiver android-service-binding

我有一项服务,可以与外部系统保持连接(蓝牙串行端口或TCP连接)。当在连接上接收到数据时,应该将其推送到活动,然后可以解析并显示它。想象一下仪表板上有一些可以实时响应新数据的仪表。

我不希望活动轮询服务以获取数据。我希望服务在到达时将数据“推送”到活动。如何最好地实现这一目标?

我应该从服务广播吗?数据(CSV线流)将连续到达。我不知道广播是否经常被频繁使用 - 比如每秒几次更新。

这是什么标准方法?

1 个答案:

答案 0 :(得分:2)

可以有两种方法:

<强> 1。使用LocalBroadcastReceiver

在您的Activity中注册一个Receiver,它将监听更改并相应地更新UI。

<强> 2。绑定服务并传递监听器接口。

创建并实现一个监听器接口,然后在绑定服务之后,将这个Interface实现传递给服务。每当更新数据时,请调用实现方法。您可以按照此SO进行操作。这对于频繁更新非常理想