Android规定 访问UI只能在主线程中进行,但又建议不要在主线程中进行耗时的操作 ,所以handler 提供了子线程访问主线程的方式。
loop:
UI线程默认生成Looper ,其他线程必须有Looper
Looper.prepare();
//中间new Handler 进行消息的获取操作
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
进行操作的代码
}
Looper.prepare();
//中间new Handler 进行消息的获取操作
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
进行操作的代码
}
Looper.loop;//调用loop后进入循环状态。
Looper.quit
MessageQueue:
enqueueMessage 插入消息
next 取出数据
MessageQueue收到信息后,最终会交给handler处理
UI的更新必须在主线程中完成,所以不管上述那种方法,都是将更新UI的消息发送到了主线程的消息对象,让主线程做处理
MessageQueue:
enqueueMessage 插入消息
next 取出数据
MessageQueue收到信息后,最终会交给handler处理