2012-02-02 79 views
0

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

我希望从UI发送命令到服务后台线程,如何做到最好。我不能用StartService(intent)调用来做到这一点,因为我不会启动和停止服务。后台线程将连续执行网络io。其他线程也可能需要将命令发送到服务的工作线程。

任何想法非常欢迎 感谢

+0

你认为AIDL? – 2012-02-02 23:02:57

回答

2

做到这一点,典型的方法是使用一个broadcast receiver。后台线程广播包含新数据或指示某些数据已更改的消息。用户界面可以选择接收这些通知。您的UI还需要能够从可用状态重建自己。

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

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