Android中有多种方法可以实现其他线程与Main线程通讯
来源:互联网 发布:淘宝拍卖字画是真的吗 编辑:程序博客网 时间:2024/05/17 07:23
如何实现线程间通讯
在Android中有多种方法可以实现其他线程与Main线程通讯,我们这里介绍常见的两种。
1) 使用AsyncTask
AsyncTask是Android框架提供的异步处理的辅助类,它可以实现耗时操作在其他线程执行,而处理结果在Main线程执行,对于开发者而言,它屏蔽掉了多线程和后面要讲的Handler的概念。你不了解怎么处理线程间通讯也没有关系,AsyncTask体贴的帮你做好了。不过封装越好越高级的API,对初级程序员反而越不利,就是你不了解它的原理。当你需要面对更加复杂的情况,而高级API无法完成得很好时,你就杯具了。所以,我们也要掌握功能更强大,更自由的与Main线程通讯的方法:Handler的使用。
AsyncTask的使用方法见示例工程《EX10_02AsyncTask》
2) 使用Handler
这里需要了解Android SDK提供的几个线程间通讯的类。
2.1 Handler
Handler在android里负责发送和处理消息,通过它可以实现其他线程与Main线程之间的消息通讯。
2.2 Looper
Looper负责管理线程的消息队列和消息循环
2.3 Message
Message是线程间通讯的消息载体。两个码头之间运输货物,Message充当集装箱的功能,里面可以存放任何你想要传递的消息。
2.4 MessageQueue
MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。
它们四者之间的关系是,在其他线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调Handler的handlerMessage()方法。
Handler的使用方法见示例工程《EX10_03HandlerAndMsg》
除了以上两种常用方法之外,还有几种比较简单的方法
3) Activity.runOnUiThread(Runnable)
4) View.post(Runnable)
View.postDelayed(Runnable, long)
5) Handler.post
Handler.postDelayed(Runnable, long)
http://www.cnblogs.com/suiyc/archive/2011/06/04/2073218.html
- Android中有多种方法可以实现其他线程与Main线程通讯
- android在其他线程中访问UI线程的方法
- android中 多种启动线程的书写方式及方法
- java中可以实现一个线程的方法
- 支持多线程的日志类,可以在线程中使用,用来与主窗口通讯
- android 中异步线程的实现方法
- Android中UI线程与后台线程交互方法
- Android中UI线程与后台线程交互设计方法
- android提供了几种在其他线程中访问UI线程的方法。
- Android多线程中UI线程和其他线程进行交互的几种方法小结
- Android主线程与子线程通讯
- 线程间通讯方法
- 解析Android中的main线程与子线程
- 解析Android中的main线程与子线程
- Android中线程通讯类Handler
- Android中线程通讯类Handler
- Android中线程通讯类Handler
- Android中线程通讯类Handler
- Windows多线程程序设计之线程同步分析(结合互斥对象)(中)
- 树莓派作品2_莫尔斯电码
- 如何设置xcode中的Base SDK 和 iOS Deployment Target ?
- Asp.net总结(一)
- 代码和数据的拼接
- Android中有多种方法可以实现其他线程与Main线程通讯
- Linux命令之while - Bash中的While循环
- 树莓派_字母板的使用
- RDBMS 总结
- android 图片视图居中
- 黑马程序员——java学习6(九九乘法表)
- 《θ电脑硬件之处理器cpu基础知识详解θ》
- Code Sign error: Provisioning profile ‘XXXX'can't be found_Mark
- 基本UDP套接字编程