在多个活动需要连接到服务时在Android中使用的设计方法

时间:2012-03-28 12:43:13

标签: android service broadcastreceiver android-pendingintent

我有一个启动蓝牙读取线程的类,另一个接收/解码从该端口读取的内容,并根据读取的信息生成一些输出日志。

在我的设计中,这两个组件构成了我的应用程序(多个活动)的服务,我希望从中开始/停止连续获取输出日志(典型频率为每秒2-3个日志)。

我的问题:

1)我应该从Service或IntentService派生。该文档说明了IntentService:“如果您不要求您的服务同时处理多个请求,那么这是最佳选择”。这可能是我的情况,因为主要活动将开始/停止服务......

2)捕获服务事件的适当方法是什么? BroadcastReceiver是否适合此类通信?

3)我可能需要偶尔将一些东西发送到蓝牙端口。所以,我必须将我的应用程序中的信息传递给服务。是否应该使用PendingIntent?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

我应该从Service还是IntentService派生

IntentService是为离散任务而设计的,而不是在用户手动停止之前无限期运行的东西。我会使用Service

  

捕获服务事件的适当方法是什么? BroadcastReceiver是否适合此类通信?

这当然是一种方法。您可以使用Android支持包中的LocalBroadcastManager来减少开销并将所有内容保密。让您的活动在onResume()中注册接收者,并在onPause()中将其删除。然后,前台活动将被通知事件。

  

我可能需要偶尔将一些内容发送到蓝牙端口。所以,我必须将我的应用程序中的信息传递给服务。是否应该使用PendingIntent?

不,我希望活动只需通过startService()向服务发送命令,并将要传递的数据包含在Intent的附加内容中。如果您有无法打包为额外内容的数据,您可能需要考虑绑定到该服务,这样您就可以获得更丰富的API,但这会使配置更改更加烦人。