微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android处理程序-线程间通信

如何解决Android处理程序-线程间通信

| 如何在Android中使用Handlers在两个线程之间实现双向通信? 我有一个生成线程B的服务A。从B到A的通信非常容易,只是将Handler传递给B的构造函数,但是如何从A到B呢? B没有自动为其分配任何Looper。 有没有人得到答案?     

解决方法

这是一篇很好的文章,解释了使用处理程序的线程和通信。同样,同一博客上有许多关于Android中各种线程结构的文章     ,要克服为刚创建的线程(但可能尚未初始化)获取处理程序的问题,请参阅如何创建Looper线程,然后立即向其发送消息?     ,在新线程中调用“ 0”,将为您创建该线程的Looper。然后,您可以创建一个处理程序以传递回另一个线程。 也就是说,在调用
Looper.prepare()
之后,语句
Handler h = new Handler()
将在新线程的Looper上创建一个Handler。 http://developer.android.com/reference/android/os/Looper.html     ,您可以按照以下步骤实现双向通信。 1)创建一个扩展Thread Class的工作线程。 2)使用此工作线程初始化Handler。 3)在其run()方法中,通过以下方式为此线程准备循环程序:Looper.prepare()用于将消息队列绑定到该线程,以及Looper.loop()创建一个循环,该循环将从消息队列的Message和Runnable中读取消息这个线程。 4)使用post()和runMessage()和Messages()从UI线程处理程序向该工作线程处理程序发送Messgae和Runnables。 请参考本教程:使用Looper处理后台工作     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。