安卓Handler和Looper的假想

if (Looper.myLooper() != Looper.getMainLooper()) {

// If we finish marking off of the main thread, we need to

// actually do it on the main thread to ensure correct ordering.

Handler mainThread = new Handler(Looper.getMainLooper());

mainThread.post(new Runnable() {

@Override

public void run() {

mEventLog.add(tag, threadId);

mEventLog.finish(this.toString());

}

});

return;

}

handler里面持有一个Looper,Looper里面持有一个消息队列MessageQueue

handler首先会把消息Post到它所持有的Looper的消息队列之中,

Looper循环者从消息队列中拿到消息后进行处理

时间: 2024-07-31 06:50:58

安卓Handler和Looper的假想的相关文章

安卓中的消息循环机制Handler及Looper详解

我们知道安卓中的UI线程不是线程安全的,我们不能在UI线程中进行耗时操作,通常我们的做法是开启一个子线程在子线程中处理耗时操作,但是安卓规定不允许在子线程中进行UI的更新操作,通常我们会通过Handler机制来完成该功能,即当子线程中耗时操作完成后,在子线程中通过Handler向主线程发送消息,在主线程中的Handler的handleMessage方法中处理接受到的消息.这就是安卓中的消息机制,安卓中的消息机制主要是指Handler的运行机制,但是Handler的运行需要底层的MessageQu

Handler、Looper消息传递机制

一.Handler消息传递机制初步认识: (一).引入: 子线程没有办法对UI界面上的内容进行操作,如果操作,将抛出异常:CalledFromWrongThreadException 为了实现子线程中操作UI界面,Android中引入了Handler消息传递机制,目的是打破对主线程的依赖性. 什么是Handler? handler通俗一点讲就是用来在各个线程之间发送数据的处理对象.在任何线程中,只要获得了另一个线程的handler,则可以通过  handler.sendMessage(messa

handler与looper的关系及HandlerThread

做了也快2年的android了,发现android的机制还不是很了解,这几天看了一下这方面的介绍,总结一下handler的用法和机制. handler就是用来线程之间通信的,主线程与子线程.一般的用法是,子线程通知ui主线程的handler去刷新ui操作.最近遇到一些人,问能不能主线程去通知子线程的handler. 当然是可以的.贴一个例子 package cc.c; import android.app.Activity; import android.os.Bundle; import an

Android开发之Handler和Looper的关系

关于Handler的总结. Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理. Handler:处理者,负责Message的发送及处理.使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等. MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行.当然,存放Message并非实际意义的保存,而

Handler,Looper,MessageQueue,Message总结

转载部分来自: http://gundumw100.iteye.com/blog/858233 转载部分对于应用层非常简洁明了 原创部分是基于Android4.4源代码,有什么错误或不足,欢迎指正 转载部分: 一.几个关键概念 1.MessageQueue:是一种 数据 结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动 创建其MessageQueue.通常使用一个Looper对象对该线程的Messag

Android Handler,Looper,Message

做一个简单的关于Handler,Looper,Message的小演示,代码主界面一个Button按钮,点击发送消息(累计)给线程的Looper循环,然后在LogCat中打印出来: package zhangphil.looper; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; imp

android handler、looper、message、messageQueue、

一:handler,looper,message,messagequeue,thread handler: 消息处理着,负责Message消息的发送(handler.sendMessage(....))以及处理消息,对于handler处理消息则需要实现handlerMessage(Message msg)该方法,通过该方法处理特定的消息,例如ui的更细 looper:消息泵,用来从messageQueue中抽取消息,所以一个looper对应一个messageQueue: message:消息,m

Android 之异步任务(AsyncTask,Handler,Message,looper)

AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate(Progress…), onPostExecute(Result) ) Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异

谈谈我对Android中的消息机制的理解之Handler,Looper和MessageQueue的解释

Handler的作用是:发送Message和处理Message,handler发送的Message其实就是发送给自己的对象进行处理,所以谁发送就是谁处理,但是这个绝对有意义,以为这样我们就可以通过Handler将消息的处理从一个线程转到另一个线程了,这个Message几经转手之后,处理它的对象虽然是同一个,但是处理它的线程就变了,变成了创建Handler对象的线程,而不是产生Message对象的线程(当然,这个两个线程可能是一个,但是这样使用handler就是第二个目的了),使用handler的