android之线程的使用(handler,messageQueue)
来源:互联网 发布:java基础教程视频教程 编辑:程序博客网 时间:2024/05/29 15:43
Handler允许你去处理和一个线程的消息队列相关联的Message和Runnable对象。
每一个Handler只和一个单独的线程以及那个线程的消息队列相关联。
当你创建一个Handler时,它被绑定到正在创建他的线程的消息队列和线程上面,
从这一点看,它传递消息消息和runnable到消息队列,并且执行他们当他们从
消息队列中出来时。
handler主要有两方面的用途:
1):调度消息和Runnable的执行。
2):确保一个动作在一个线程中必定会得到执行。
调度消息主要是用,post(Runnable r),postAtTime(Runnable r,Long l),
postDelayed(Runnable,Long),sendEmptyMessage(int),sendMessage(Message);
sendMessageAtTime(Message,long),还用sendMessageDelayed(Message,long).
post版本的发送方法:确保runnable在消息队列收到后会得到执行。
sendMessage版本的方法:可以携带一个bundle存储的信息由handleMessage()
处理。前提是你必须先要实现一个handler的子类并且实现handlemessage方法。
下面是使用handler的方法:
MyHandler extends Handler {
public MyHandler(Looper looper) {
super(looper);
}
public void handleMessage(Message msg) {
/** 处理接收到的消息*/
}
}
class UpdateRunnable implements Runnable {
public void run() {
Message msg = mHandler.obtainMessage();
msg.what = 10000;
msg.sendToTarget();
}
}
//在需要调用的地方,加入下面代码即可
HandlerThread handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
mHandler = new MyHandler(handlerThread.getLooper());
//add to MessageQueue
mHandler.post(new UpdateRunnable());
每一个Handler只和一个单独的线程以及那个线程的消息队列相关联。
当你创建一个Handler时,它被绑定到正在创建他的线程的消息队列和线程上面,
从这一点看,它传递消息消息和runnable到消息队列,并且执行他们当他们从
消息队列中出来时。
handler主要有两方面的用途:
1):调度消息和Runnable的执行。
2):确保一个动作在一个线程中必定会得到执行。
调度消息主要是用,post(Runnable r),postAtTime(Runnable r,Long l),
postDelayed(Runnable,Long),sendEmptyMessage(int),sendMessage(Message);
sendMessageAtTime(Message,long),还用sendMessageDelayed(Message,long).
post版本的发送方法:确保runnable在消息队列收到后会得到执行。
sendMessage版本的方法:可以携带一个bundle存储的信息由handleMessage()
处理。前提是你必须先要实现一个handler的子类并且实现handlemessage方法。
下面是使用handler的方法:
MyHandler extends Handler {
public MyHandler(Looper looper) {
super(looper);
}
public void handleMessage(Message msg) {
/** 处理接收到的消息*/
}
}
class UpdateRunnable implements Runnable {
public void run() {
Message msg = mHandler.obtainMessage();
msg.what = 10000;
msg.sendToTarget();
}
}
//在需要调用的地方,加入下面代码即可
HandlerThread handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
mHandler = new MyHandler(handlerThread.getLooper());
//add to MessageQueue
mHandler.post(new UpdateRunnable());
- android之线程的使用(handler,messageQueue)
- Android-Handler 总结(Handler 的使用 ,Looper , MessageQueue , HandlerThread )
- Android-Handler 总结(Handler 的使用 ,Looper , MessageQueue , HandlerThread )
- Android Handler/Looper/MessageQueue 在新线程中使用Handler
- Android异步消息处理线程之----Looper+MessageQueue+Handler
- Android开发之单线程模型中Message、Handler、MessageQueue、Looper之间的关系
- Android--Handler+Looper+MessageQueue+Thread线程之间的通信
- Android:Handler+Looper+MessageQueue+Thread(线程间的通信)随记
- Android线程通信机制,handler,looper,messageQueue的关系
- Android基于Handler、Looper、MessageQueue、ThreadLocal的跨线程通信
- Android 线程4件套 MessageQueue Message Looper Handler之MessageQueue
- 1.Android内核 异步线程的实现(Looper、MessageQueue、Handler)
- Android之Handler子线程的简单使用(二)
- Android线程 异步 asynctask Looper MessageQueue handler
- Android线程间通信 Handler、Looper、MessageQueue
- Android线程—Handler、Looper、Message、MessageQueue
- 线程 (Handler、Looper、MessageQueue和Thread的理解)
- Android中的Handler、Looper和MessageQueue的使用以及原理
- 看《赛德克·巴莱》有感!
- 研究生
- 单例模式之内部静态类
- PHP_slashes
- IO操作 对已有文件的数据续写
- android之线程的使用(handler,messageQueue)
- Java虚拟机学习 - 对象内存分配与回收
- <action>标签中的相关属性
- 《wxWidgets》wxSizer 使用 入门
- action标签
- FlexPaper 使用入门——在线PDF显示
- <bean:message>标签
- hdu 3627 Giant For
- char与wchar_t的区别