Android处理程序 - 线程间通信

时间:2011-04-14 02:42:54

标签: android multithreading handler

如何在Android中使用处理程序实现两个线程之间的双向通信?

我有一个产生线程B的服务A.从B到A的通信相当容易,只是将Handler传递给B的构造函数,但是如何从A到B呢? B没有自动分配任何Looper。

有没有人得到答案?

4 个答案:

答案 0 :(得分:32)

Here是使用处理程序解释线程和通信的好帖子。此外,同一个博客有很多关于Android

中各种线程结构的帖子

答案 1 :(得分:5)

要解决为刚刚创建的线程获取Handler的问题(但可能尚未初始化),请参阅How to create a Looper thread, then send it a message immediately?

答案 2 :(得分:1)

在新线程中调用Looper.prepare(),将为您创建该线程的Looper。然后你可以创建一个Handler来传回另一个线程。

也就是说,在调用Looper.prepare()之后,语句Handler h = new Handler()将在新线程的Looper上创建一个Handler。

http://developer.android.com/reference/android/os/Looper.html

答案 3 :(得分:-1)

您可以按照以下步骤实施双向沟通。

1)创建一个扩展Thread Class的工作线程 2)使用此工作线程初始化处理程序 3)在其run()方法中,为此线程准备looper:Looper.prepare()用于将消息队列绑定到此线程,而Looper.loop()用于创建一个循环,该循环将从Message Queue中读取消息和runnables这个帖子。

4)使用针对runnables&的post(),将UI线程处理程序中的Messgae和Runnables发送到此工作线程处理程序。 sendMessage()用于消息。

请参阅本教程:Handle background work using Looper