2010-06-01 51 views
4

我在想如何在本地服务和主要活动之间进行同步。本地服务与线程和活动之间的同步

本地服务有,

  • 与随时可能接收数据的套接字连接线。
  • 包含数据的列表/数组。
  • 套接字在任何时候都可以接收数据并将其添加到列表中。

该活动需要显示此数据。所以当活动启动时,它需要附加或启动本地服务并获取列表。如果列表更新,还需要通知他们。

我想我需要以某种方式同步我的列表,因此本地服务不会向该服务添加新条目,而活动在连接到服务时获取列表。

任何想法?

谢谢。

回答

5

我回答了一个有点类似的问题here。在这个答案中,是柏林droidconf上由mark brady举办的演示文稿的链接。在他的slides中,他描述了一个管理这种事情的框架。他还在github上提供了此源。

他提出以下解决方案。构建一个处于自定义应用程序类范围内的控制器对象。控制器启动服务或一个简单的工作者线程,并通知UI,如果服务通知某些事情发生了变化。如果不是绝对必要的,他建议不要使用AIDL。

android文档还提供了关于如何启动本地进程的example

3

在活动和服务之间建立连接并在它们之间共享数据有很多方法。您可以使用以下解决方案进行通信:

  • 意图。您可以发送(通过sendBroadcast (Intent intent))并接收(通过BroadcastReceiver)Intent。示例情景:开机时您的活动发送广播“GIVE_ME_ALL_DATA”,服务发送响应,如果该服务有新数据,则还会广播“HEY_I_HAVE_NEW_DATA”
  • ContentProvider。服务和活动的读取和写入是并行的,您可以将观察者附加到特定的数据url,这样每个监听者都会得到有关更改的通知如果您使用CursorAdapter将数据绑定到UI组件,用户界面将会自动更新
  • AIDL这是一个android'a IPC,你定义了接触到服务的接口,客户端在开始时:建立与服务的连接,请求数据,注册回调,如果服务有新数据,它会调用由客户注册的回叫。
相关问题