我有一个创建线程的服务。此线程执行一些操作,然后在sendBroadcast()
上调用Service
。这意味着从工作线程调用sendBroadcast()
,而不是从服务运行的线程调用。{/ p>
这样可以,还是应该确保从与sendBroadcast()
相同的主题调用Service
(使用Handler
和Runnable
)?
我在stackoverflow和this找到了Dianne Hackborns post。
根据帖子,它应该没问题。我问的原因是因为帖子是2岁,也许有些事情发生了变化。此外,我在Android文档中找不到任何相关内容。
答案 0 :(得分:18)
没关系。广播被传递到Android操作系统,它实际上是使用操作系统线程发送的,因此发送它的线程并不重要。
答案 1 :(得分:0)
你已经得到了答案,但也许我可以补充一些。
从多个线程调用它似乎没问题。无论你从哪个线程调用sendBroadcast(...)
,它都是onReceive方法,它会处理它(你可能知道)。默认情况下,它正在处理应用程序的主/ UI线程。您可以通过registerReceiver(...)
就像使用Messenger建立客户端 - 服务器连接一样。记住所有消息,无论它们是从哪个线程发送的,都在一个消息/循环通过单个线程的消息队列中处理。