2011-06-23 60 views
1

我在绕过这个想法时遇到了一些麻烦,我想要一些输入。我从我的初始活动开始一个服务,它运行一个新线程(在这种情况下实现Runnable的类,不扩展Thread),它的onCreate()。线程首先创建一个TCP客户端套接字,然后随着应用程序运行,活动切换等等,在后台每隔X秒开始发送请求并接收响应。但是,我需要能够从我的所有活动中访问线程,以告诉它在UI元素被触发时发送自定义请求。该服务可以从静态上下文访问,但是当我尝试访问正在运行的线程实例时,出现与在主线程上执行网络操作有关的错误,这意味着它不是实际实例,而是我正在访问的UI线程。我想过在共享的Application类中实现一个消息队列,该服务可以轮询新消息,但这看起来很难看。也许我正在解决这个问题,并且有更好的方法来解决这个问题?任何意见或帮助将不胜感激。访问线程开始于服务

+1

不,你正朝着正确的方向前进。使用该消息队列('BlockingQueue')与线程进行通信。 –

+0

您可以使用AIDL(http://developer.android.com/guide/developing/tools/aidl.html)与服务进行通信 – ethrbunny

回答

1

您可以使用Looper/Handler机制将消息发送到线程。

+0

谢谢,这是我最终进入的方向,它看起来很完美。出于某种原因,我最初忽略了它。 – Matt