我对Android服务在哪里运行感到困惑。我知道标记为“远程”的服务在它们自己的进程中运行,但是普通的本地服务呢?
我问的原因是,我希望两个本地服务能够合作,但不会被对方阻止。例如,Service1管理网络连接并接收数据包。在接收到包时,我需要该服务将包传递给Service2,后者处理信息并采取一些操作,包括可能发送返回消息。我需要接收、移交和处理异步发生,这样网络服务才能在应用程序服务处理数据包的同时继续接收数据包。我如何确保这种情况发生?
我知道一种解决方案是广播意图,但我如何在意图中包括自定义数据对象(即数据包)?我不想实现parcelable接口(本地服务的过度杀伤力),但我确实需要能够在服务之间传递复杂的数据对象。
谢谢
发布于 2010-07-29 21:37:04
清单文件中定义为在同一进程中运行的所有内容也共享同一主线程。如果该进程中有正在运行的活动,则此线程有时也是UI线程。因此,如果您有两个本地服务,并且它们在同一进程中运行,则它们将共享相同的主执行线程。为了让它们同时工作(在多核android设备出现之前,所有的执行都是按顺序执行的),那么处理网络连接的服务将需要在一个单独的线程中执行。你的另一个服务也需要另一个线程。
您的问题通常称为生产者-消费者模式。下面是一个使用阻塞队列的简单实现的a link快速示例。
https://stackoverflow.com/questions/3362325
复制相似问题