【发布时间】:2011-06-23 14:12:18
【问题描述】:
我在理解这个想法时遇到了一些麻烦,我想要一些意见。我从我的初始活动开始一项服务,该活动在onCreate() 中运行一个新线程(在这种情况下实现 Runnable 的类,而不是扩展线程)。该线程首先创建一个 TCP 客户端套接字,然后随着应用程序运行、活动切换等在后台每隔 X 秒开始发送请求和接收响应。但是,我需要能够从我的所有活动中访问该线程,以告知它在触发 UI 元素时发送自定义请求。可以从静态上下文访问该服务,但是当我尝试访问正在运行的线程实例时,我收到与在主线程上执行网络操作相关的错误,这意味着它不是实际实例,而是我正在访问的 UI 线程。我想过在共享的Application 类中实现一个消息队列,该服务可以轮询新消息,但这看起来很难看。也许我正在解决这个问题,并且有更好/更清洁的方法来解决这个问题?任何建议或帮助将不胜感激。
【问题讨论】:
-
不,你正朝着正确的方向前进。使用该消息队列 (
BlockingQueue) 与线程进行通信。 -
您可以使用 AIDL (developer.android.com/guide/developing/tools/aidl.html) 与服务通信
标签: android multithreading service android-activity