与后台服务线程进行通信

时间:2012-02-02 22:56:34

标签: android

我的android服务需要有一个后台线程,但我相信我不能使用IntentService,因为服务需要尽可能多地运行,并且它不会被启动和停止。

我希望从UI发送命令到服务后台线程,如何最好地执行此操作。我不能通过StartService(intent)调用来执行此操作,因为我不会启动并停止服务。后台线程将持续执行网络io。其他线程也可能需要向服务的工作线程发送命令。

任何想法都是最受欢迎的 感谢

1 个答案:

答案 0 :(得分:2)

执行此操作的典型方法是使用broadcast receiver。后台线程广播一条消息,该消息包含新数据或指示某些数据已更改。然后,UI可以选择接收这些通知。您的UI还需要能够从可用状态重建自己。

您可以更自由地以更直接的方式调用后台线程,因为Activity的生命周期不在您的控制之下,而后台线程的生命周期是。只要您确保正确同步访问,就可以通过多种方式将数据/消息传输到线程。

在后台线程上工作的一种方法是使用HandlerThread。使用它,您可以将runnables发布到该线程,每个线程将以串行方式运行。除了您的后台工作,您还可以从UI发布请求。这可能不适合你,但这是一种可能性。