Message、Handler、Message Queue、Looper、Thread之间的关系(未完成)

1. 请解释下在单线程模型中Message、Handler、Message Queue、Looper、Thread之间的关系

2. 什么是IntentService?有何优点?

1) 它是对单线程消息模型的封装

2)IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。

3. Main线程机制(单线程消息处理模型)

创建、更新UI、用户输入事件(User Input Event)处理

分析ANR机制的实现原理,有哪些对象

1) Thread

2) MessageQueue   容器保存事件   FIFO

3) Looper                监控Main线程是否空闲,同时监控事件队列中如果有事件,

将事件交给main线程处理

4) Message

5) Handler

4. 模拟Main线程实现单线程消息处理模型

1) 查看Looper类的文档,创建Thread、Looper、MessageQueue和Handler对象

2) 在Activity的onCreate()方法中启动线程

3) 在按钮点击事件中从Main线程向自定义线程发送消息

时间: 2024-10-17 01:14:17

Message、Handler、Message Queue、Looper、Thread之间的关系(未完成)的相关文章

handler looper messageQueue 之间的关系笔记

handler 主要用于发送消息和接收消息,handler可以更新ui延时更新uilooper 主要用于从消息队列中循环读取消息并把消息发送给handlermessageQueue 是一个消息队列,用来存储消息. 下面从源码的角度分析三者的关系: Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; handler.sen

在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系

Message,信息的载体,用来传递数据给Handler. Handler (Handler处理者,是 Message 的主要处理者,负责 Message 的发送,Message 内容的执行处理)发送和处理Message和Runable对象,这些对象和一个线程的MessageQueue相关联.每一个线程实例和一个单独的线程以及该线程的 MessageQueue 相关联.Handler和创建它的线程绑定在一起,把 Message和Runable 对象传递给 MessageQueue,这些对象离开

Message、Handler、Message Queue、Looper 之间的关系

单线程模型中Message.Handler.Message Queue.Looper之间的关系 1.Message Message即为消息,可以理解为线程间交流的信息.处理数据后台线程需要更新UI,你可以发送Message内含一些数据给UI线程. 2.Handler Handler 即为处理者,是Message的主要处理者,负责Message的发送,Message内容的执行处理. 后台线程就是通过传进来的Handler对象引用来sendMessage(Message).而使用Handler,需要

android的handler、looper、Message之间的关系

handler:绑定到一个线程上,一个线程可以有多个handler looper:线程跟looper是一一对应的,所以looper不能被调用两次否则会抛出异常 messge:handler利用message来携带消息 messagQueue:用来状态message,一个looper对应一个消息队列 如何来判断一个消息队列对应一个handler呢,在sendmessage中获取到一个消息队列的持有者looper looper的两个方法:prepare()和loop() 1. public stat

单线程模型中Message、Handler、MessageQueue、Looper之间的关系

Handler简介: 一个Handler允许你发送和处理Message和Runable对象,这些对象和一个线程的MessageQueue相关联.每一个线程实例和一个单独的线程以及该线程的MessageQueue相关联.当你创建一个新的Handler时,它就和创建它的线程绑定在一起了.这里,线程我们也可以理解为线程的MessageQueue.从这一点上来看,Handler把Message和Runable对象传递给MessageQueue,而且在这些对象离开MessageQueue时,Handler

Handler Message MessageQueue Looper 之间的联系

Handler Message MessageQueue Looper 之间的联系

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,Message,MessageQueue,Looper

本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文< Android中Handler的使用>,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解. 概括来说,Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制.我们在使用Handler的时候与Message打交道最多,Message是Hanlder机制向开发人员暴露出来的相关类,可以通过Message类完成大部分操作Handler的功能.但

从Handler+Message+Looper源代码带你分析Android系统的消息处理机制

PS一句:不得不说CSDN同步做的非常烂.还得我花了近1个小时恢复这篇博客. 引言 [转载请注明出处:http://blog.csdn.net/feiduclear_up CSDN 废墟的树] 作为Android开发人员,相信非常多人都使用过Android的Handler类来处理异步任务. 那么Handler类是怎么构成一个异步任务处理机制的呢?这篇 博客带你从源代码分析Android的消息循环处理机制.便于深入的理解. 这里不得不从"一个Bug引发的思考"開始研究Android的消息