如何在Android中使用处理程序实现两个线程之间的双向通信?
我有一个产生线程B的服务A.从B到A的通信相当容易,只是将Handler传递给B的构造函数,但是如何从A到B呢? B没有自动分配任何Looper。
有没有人得到答案?
答案 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()用于消息。