首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主服务线程上的BlockingQueue

主服务线程上的BlockingQueue
EN

Stack Overflow用户
提问于 2014-08-14 07:00:12
回答 1查看 772关注 0票数 1

我的android应用程序有一个长期运行的后台服务,我也理解在应用程序的主线程中运行,因此,任何耗时或阻塞的任务都应该移动到一个单独的线程中。

现在,情况是这样的,我不明白/不明白:

当我从一个活动绑定到服务时,我收到一个对服务的引用,它允许我从我的活动中调用服务方法。其中一种方法允许我将字符串对象从活动传递到服务,然后将服务添加到BlockingQueue中。在服务的onCreate方法中启动的一个单独的工作线程检查队列中的可用数据,然后执行所需的任务。

我想要了解的是,如果在某一时刻,队列变得满,并且尝试队列块,它会影响服务运行的主线程吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-14 13:33:29

是。在这种情况下,如果队列已满,则调用线程将阻塞(在您的情况下是主线程)。所以这是个糟糕的设计。

来自Activity字段的生成数据并不强迫您在主线程上使用它。我建议您为在自己的线程上运行的生产者使用一些Handler,这将允许您在主线程之外进行处理(并最终等待队列)。

这也有利于与Service通信,因为您可以使用HandlersService通信(参见Android服务指南)。

最后,如果应用生成的数据可以使用HandlerHandler.post(Runnable)直接传递给Handler.send(Message)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25301913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档