可以从另一个线程调用sendBroadcast()吗?

时间:2012-07-25 19:04:09

标签: android

我有一个创建线程的服务。此线程执行一些操作,然后在sendBroadcast()上调用Service。这意味着从工作线程调用sendBroadcast(),而不是从服务运行的线程调用。{/ p>

这样可以,还是应该确保从与sendBroadcast()相同的主题调用Service(使用HandlerRunnable)?

我在stackoverflow和this找到了Dianne Hackborns post

根据帖子,它应该没问题。我问的原因是因为帖子是2岁,也许有些事情发生了变化。此外,我在Android文档中找不到任何相关内容。

2 个答案:

答案 0 :(得分:18)

没关系。广播被传递到Android操作系统,它实际上是使用操作系统线程发送的,因此发送它的线程并不重要。

答案 1 :(得分:0)

你已经得到了答案,但也许我可以补充一些。

从多个线程调用它似乎没问题。无论你从哪个线程调用sendBroadcast(...),它都是onReceive方法,它会处理它(你可能知道)。默认情况下,它正在处理应用程序的主/ UI线程。您可以通过registerReceiver(...)

更改此行为

就像使用Messenger建立客户端 - 服务器连接一样。记住所有消息,无论它们是从哪个线程发送的,都在一个消息/循环通过单个线程的消息队列中处理。