android Handler机制详解

MessageQueue (消息队列):是looper中的一个消息队列;
classLooperThreadextendsThread{
publicHandler mHandler; publicvoid run(){
Looper.prepare(); mHandler =newHandler(){
publicvoid handleMessage(Message msg){
// process incoming messages here
}
}; Looper.loop();
}
}
Looper方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | dump(Printer pw, String prefix) | ||||||||||
synchronized static Looper | getMainLooper() 获得主线程的Looper Returns the application's main looper, which lives in the main thread of the application.
|
||||||||||
Thread | getThread()
Return the Thread associated with this Looper.
|
||||||||||
static void | loop()
Run the message queue in this thread.
|
||||||||||
static Looper | myLooper() 获得当前线程关联的Looper Return the Looper object associated with the current thread.
|
||||||||||
static MessageQueue | myQueue() 获得当前线程关联的消息队列 Return the
MessageQueue object associated with the current thread. |
||||||||||
static void | prepare()
Initialize the current thread as a looper.
|
||||||||||
static void | prepareMainLooper()
Initialize the current thread as a looper, marking it as an application's main looper.
|
||||||||||
- 安排消息或者可执行对象在未来的某个时间点执行。
- 将一个在子线程执行的动作放到消息队列中
Handler 方法介绍 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | dispatchMessage(Message msg)
Handle system messages here.
|
||||||||||
final void | dump(Printer pw, String prefix) | ||||||||||
final Looper | getLooper() | ||||||||||
String | getMessageName(Message message)
Returns a string representing the name of the specified message.
|
||||||||||
void | handleMessage(Message msg) 子类必须实现这个方法来接收消息 |
||||||||||
final boolean | hasMessages(int what, Object object)
Check if there are any pending posts of messages with code 'what' and whose obj is 'object' in the message queue.
|
||||||||||
final boolean | hasMessages(int what)
Check if there are any pending posts of messages with code 'what' in the message queue.
|
||||||||||
final Message | obtainMessage(int what, int arg1, int arg2)
Same as
obtainMessage() , except that it also sets the what, arg1 and arg2 members of the returned Message. |
||||||||||
final Message | obtainMessage()
Returns a new
Message from the global message pool. |
||||||||||
final Message | obtainMessage(int what, int arg1, int arg2, Object obj)
Same as
obtainMessage() , except that it also sets the what, obj, arg1,and arg2 values on the returned Message. |
||||||||||
final Message | obtainMessage(int what)
Same as
obtainMessage() , except that it also sets the what member of the returned Message. |
||||||||||
final Message | obtainMessage(int what, Object obj)
Same as
obtainMessage() , except that it also sets the what and obj members of the returned Message. |
||||||||||
final boolean | post(Runnable r) 使可执行的r被添加到消息队列 Causes the Runnable r to be added to the message queue.
|
||||||||||
final boolean | postAtFrontOfQueue(Runnable r)
Posts a message to an object that implements Runnable.
|
||||||||||
final boolean | postAtTime(Runnable r, Object token, long uptimeMillis) 在规定的时间点执行 Causes the Runnable r to be added to the message queue, to be run at a specific time given by uptimeMillis.
|
||||||||||
final boolean | postAtTime(Runnable r, long uptimeMillis)
Causes the Runnable r to be added to the message queue, to be run at a specific time given by uptimeMillis.
|
||||||||||
final boolean | postDelayed(Runnable r, long delayMillis) 延迟执行规定的时间长度 Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
|
||||||||||
final void | removeCallbacks(Runnable r)
Remove any pending posts of Runnable r that are in the message queue.
|
||||||||||
final void | removeCallbacks(Runnable r, Object token)
Remove any pending posts of Runnable r with Object token that are in the message queue.
|
||||||||||
final void | removeCallbacksAndMessages(Object token)
Remove any pending posts of callbacks and sent messages whose obj is token.
|
||||||||||
final void | removeMessages(int what)
Remove any pending posts of messages with code 'what' that are in the message queue.
|
||||||||||
final void | removeMessages(int what, Object object)
Remove any pending posts of messages with code 'what' and whose obj is 'object' that are in the message queue.
|
||||||||||
final boolean | sendEmptyMessage(int what)
Sends a Message containing only the what value.
|
||||||||||
final boolean | sendEmptyMessageAtTime(int what, long uptimeMillis)
Sends a Message containing only the what value, to be delivered at a specific time.
|
||||||||||
final boolean | sendEmptyMessageDelayed(int what, long delayMillis)
Sends a Message containing only the what value, to be delivered after the specified amount of time elapses.
|
||||||||||
final boolean | sendMessage(Message msg) 将一个消息添加到消息队列的末尾 Pushes a message onto the end of the message queue after all pending messages before the current time.
|
||||||||||
final boolean | sendMessageAtFrontOfQueue(Message msg) 将一个消息添加到消息队列的最前面 Enqueue a message at the front of the message queue, to be processed on the next iteration of the message loop.
|
||||||||||
boolean | sendMessageAtTime(Message msg, long uptimeMillis) 在规定的时间点添加消息到队列 Enqueue a message into the message queue after all pending messages before the absolute time (in milliseconds) uptimeMillis.
|
||||||||||
final boolean | sendMessageDelayed(Message msg, long delayMillis) 延迟规定的时间再消息添加到消息队列 Enqueue a message into the message queue after all pending messages before (current time + delayMillis).
|
||||||||||
String | toString()
Returns a string containing a concise, human-readable description of this object.
|
android Handler机制详解的更多相关文章
- Android Binder机制详解:手写IPC通信
想要掌握一样东西,最好的方式就是阅读理解它的源码.想要掌握Android Binder,最好的方式就是写一个AIDL文件,然后查看其生成的代码.本文的思路也是来自于此. 简介 Binder是Andro ...
- Android Download机制详解(一)DocumentUI部分
在Android中Google为我们集成了一套十分便利的Download机制,用来下载网络上的资源文件.以此省去了我们编写和维护大量与Download相关的代码. 组成 Android中Downloa ...
- [转]android Intent机制详解
转自:http://blog.csdn.net/t12x3456/article/details/7688154 1.什么是Intent Intent是一种运行时绑定(run-time binding ...
- android Intent机制详解
http://www.oschina.net/question/565065_67909 http://www.cnblogs.com/hummersofdie/archive/2011/02/12/ ...
- android binder机制详解
摘要 Binder是android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2 ...
- android Handler机制之ThreadLocal详解
概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Messa ...
- Android应用AsyncTask处理机制详解及源码分析
1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个知识点.前面我们分析了Handler异步机制原理(不了解的可以阅读我的<Android异步消息处理机 ...
- 【转载】Android应用AsyncTask处理机制详解及源码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个 ...
- Android事件传递机制详解及最新源码分析——ViewGroup篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴 ...
随机推荐
- PAT - 测试 01-复杂度2 Maximum Subsequence Sum (25分)
1, N2N_2N2, ..., NKN_KNK }. A continuous subsequence is defined to be { NiN_iNi, Ni+1N_{i ...
- kaggle& titanic代码
这两天报名参加了阿里天池的’公交线路客流预测‘赛,就顺便先把以前看的kaggle的titanic的训练赛代码在熟悉下数据的一些处理.题目根据titanic乘客的信息来预测乘客的生还情况.给了titan ...
- Spark的数据存储
Spark本身是基于内存计算的架构,数据的存储也主要分为内存和磁盘两个路径.Spark本身则根据存储位置.是否可序列化和副本数目这几个要素将数据存储分为多种存储级别.此外还可选择使用Tachyon来管 ...
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
最近在写一个写日志文件的线程时,调用了HeapAlloc/HeapFree 申请/释放堆缓冲内存.调用HeapFree释放有个条件就是,日志的空闲缓冲队列中内存块超过100个.在测试的时候,发现调用H ...
- Xcode7中你一定要知道的炸裂调试神技
转自:http://www.cocoachina.com/ios/20151020/13794.html Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. ...
- Kibana安装与基本用法
Kibana也是一个开源和免费的工具,他可以帮助您汇总.分析和搜索重要数据日志并提供友好的web界面.他可以为Logstash 和ElasticSearch 提供日志分析的Web界面 它是一个基于浏览 ...
- Winform 窗体单例
有窗体Form1和窗体Form2,单击Form1上按钮,只弹出一个Form2. Form2里自定义一个方法,里面判断是否弹出Form2,没有时弹出Form2. public static Form2 ...
- 如何写一个简单的http服务器
最近几天用C++写了一个简单的HTTP服务器,作为学习网络编程和Linux环境编程的练手项目,这篇文章记录我在写一个HTTP服务器过程中遇到的问题和学习到的知识. 服务器的源代码放在Github. H ...
- splinter(python操作浏览器魔魁啊)
from splinter import Browser def main(): browser = Browser() browser.visit('http://google.com') brow ...
- laravel(一):如何安装laravel
1.前提条件 本文针对想从零开始开发 Laravel 程序的初学者,不需要预先具备任何的 Laravel 使用经验.不过,为了能顺利阅读,还是需要事先安装好一些软件: PHP 5.4 及以上版本 包管 ...