我有一个启动蓝牙读取线程的类,另一个接收/解码从该端口读取的内容,并根据读取的信息生成一些输出日志。
在我的设计中,这两个组件构成了我的应用程序(多个活动)的服务,我希望从中开始/停止连续获取输出日志(典型频率为每秒2-3个日志)。
我的问题:
1)我应该从Service或IntentService派生。该文档说明了IntentService:“如果您不要求您的服务同时处理多个请求,那么这是最佳选择”。这可能是我的情况,因为主要活动将开始/停止服务......
2)捕获服务事件的适当方法是什么? BroadcastReceiver是否适合此类通信?
3)我可能需要偶尔将一些东西发送到蓝牙端口。所以,我必须将我的应用程序中的信息传递给服务。是否应该使用PendingIntent?
谢谢!
答案 0 :(得分:1)
我应该从Service还是IntentService派生
IntentService
是为离散任务而设计的,而不是在用户手动停止之前无限期运行的东西。我会使用Service
。
捕获服务事件的适当方法是什么? BroadcastReceiver是否适合此类通信?
这当然是一种方法。您可以使用Android支持包中的LocalBroadcastManager
来减少开销并将所有内容保密。让您的活动在onResume()
中注册接收者,并在onPause()
中将其删除。然后,前台活动将被通知事件。
我可能需要偶尔将一些内容发送到蓝牙端口。所以,我必须将我的应用程序中的信息传递给服务。是否应该使用PendingIntent?
不,我希望活动只需通过startService()
向服务发送命令,并将要传递的数据包含在Intent
的附加内容中。如果您有无法打包为额外内容的数据,您可能需要考虑绑定到该服务,这样您就可以获得更丰富的API,但这会使配置更改更加烦人。