`
xuela_net
  • 浏览: 494443 次
文章分类
社区版块
存档分类
最新评论

Handler学习总结

 
阅读更多

有那些方法加入到主UI线程中运行

1.Activity.runonUiThread(Runnable)

2.View.post(Runnable); View.postDelay(Runnable,long)

3.Handler

4.AsyncTask

Handler的作用
1)执行计划任务,你可以在预定的实现执行某些任务,可以模拟定时器。

2)线程间通信,在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面。因此可以通过该方法在其它线程中更新界面。

3)确保操作始终在某个特定的线程中运行。例如当我们从数据库加载数据时,除了程序启动时需要加载外,每当我们接收数据改变时也需要重新加载。为了确保数据的有效性(始终使用最后一次查询得到的数据),并减小不必要的查询操作,我们应当确保他们在同一个线程中运行。

角色描述

1.Looper:(相当于隧道) 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(车队,消息隧道)

2.Handler:你可以构造Handler对象来与Looper沟通

3.Message Queue(消息队列):用来存放线程放入的消息

4.线程:UI thread通常是main thread,而Android启动程序时会替它建立一个Message Queue


其实Looper的实现和Windows编程的消息机制非常相似

对于正在执行的Message,调用removeMessage会有什么后果?

1.调用removeMessage移除一个还没有开始执行的message,看看会有什么效果?

那么这个message就不会执行了

2.移除一个正在执行的message,观察有什么效果

这个message如果被处理了,移除就没有效果了


Handler其实很简单

1.Handler实例与消息处理是关联的,发送和接收要匹配

2.只能依附在HandlerThread

3.可以通过设置Looper来选择依附的线程

4.所有的操作都是在同一个线程中

5.removeMessage只能移除队列中的Message


同一个HandlerThread可以有多个Handler么? Yes

同一个HandlerThread中使用多个Handler Message会混淆么? 为什么?

No 每一条消息都有一个target字段,这个target字段就标识了是哪个handler



考核目标

1.使用Handler是异步的,它会建立新线程吗?

No 依附在线程的Looper中

2.Handler是在主线程内?

不一定 可以通过Looper选择依附的线程

3.Handler的post和sendMessage方法,使用的是一个队列还是两个

1个

4.子线程建立一个Handler,然后sendMessage会怎样

报错

5.Handler中不同的消息有可能被同时处理吗?

不可能 因为他们运行在同一个线程中

6.当Handler在处理消息时,如果收到removeMessage(),会中断这个处理么?

不会




分享到:
评论

相关推荐

    Handler用法整理总结

    Handler用法的整理总结,有代码。是学习Handler的好资料,分享给大家。

    handler全面分析

    最近总结了一下handler的使用,handler是Android中要的消息机制之一,在面试和实际开发中尤为重要,所以总结了一下,传到这里,和大家交流学习

    Handler.pptx

    根据代码实例总结的关于Android Handler的理解,适合刚刚接触Handler的小白,描述的都是看代码需要的关键点,没有额外的赘述,适合新手,通俗易懂。

    Android学习资料

    收集的一些关于Android的学习资料,一些常用组件的介绍,和一些难点的资料.包括:android gravity 和 android layout_Gravity,Bundle,ContentResolver,cursor,Fragments ,Fragments,inflater ,Fragment,数据查询query...

    Android开发基础知识总结

    最近系统学习了Android开发基础知识,并对其进行了总结。主要包含Android的UI组件、初高级资源、网络编程及Internet应用、多线程以及Service等后台操作、Handler消息处理机制、Handler和looper的关系、Android的数据...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。  《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...

    linux常用命令集

    学习linux常用的命令集 总结常用的命令

    Android新闻客户端

    新闻客户端案例共有四个界面,分别是新闻、贴吧、知道和图库。... 新闻客户端案例使用百度提供的接口获取百度数据。...该案例是一个综合性较为全面的应用,通过该案例的学习可以对基础只是做一个总结并掌握更深的知识。

    《深入理解Android》卷Ⅰ

    2.2 学习JNI的实例:MediaScanner 2.3 Java层的MediaScanner分析 2.3.1 加载JNI库 2.3.2 Java的native函数和总结 2.4 JNI层MediaScanner的分析 2.4.1 注册JNI函数 2.4.2 数据类型转换 2.4.3 JNIEnv介绍 2.4.4 通过...

    深入理解Android卷1全

    2.2 学习JNI的实例:MediaScanner / 15 2.3 Java层的MediaScanner分析 / 16 2.3.1 加载JNI库 / 16 2.3.2 Java的native函数和总结 / 17 2.4 JNI层MediaScanner的分析 / 17 2.4.1 注册JNI函数 / 18 2.4.2 数据类型转换...

    Java弱引用实现源码-DataStructure::kiss_mark::kiss_mark:数据结构、算法总结、学习算法的时间复杂度、空间复杂度、分析算法特点以及应用、Java面

    数据结构与算法学习之路 下面的算法都打包在一个应用当中,你只需要下载安装即可,里面有算法的介绍,时间复杂度,空间复杂度,代码示例 二叉树的遍历 二叉排序树 红黑树 AVL树 图的邻接表存储构成图 有向图的创建 ...

    面试题面试宝典.zip

    handler消息机制.png 2011Android技术面试整理 培训机构学习资源.txt 面试整理.txt 参加百度Android的面试经历和面试题 android知识图谱.png 使用过哪些框架和平台,自定义组合控件.txt 知识点.txt 50道面试题.txt ...

    learning-technology-code:此项目是本人在平时的日常技术学习,笔记,博客中的代码的汇总,欢迎访问我的博客:http:blog.imyzt.top

    例外演示这个项目是对我平时开发时,对异常处理的总结,是在MVC开发模式下下,在众多项目的开发过程中总结出来的,针对MVC项目的异常处理规范 聊天室这个项目是学习慕课网上课程的代码汇总以及笔记。 MQ系列消息...

    深入理解Android:卷I--详细书签版

    第5章讲解了android系统中常用的类,包括sp、wp、refbase、thread等类,同步类,以及java中的handler类和 looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以mediaserver为切入点,对...

    JavaScript 学习笔记 Black.Caffeine 09.11.28

    1. 之前写的一直都是分散的函数,用到什么功能,就写什么函数,觉得不够整洁,所以这次写的是封装的类,用起来还不错,但是传递参数的时候遇到了不少问题,所以,查阅了很多资料,总结如下: 1)动态绑定事件问题: ...

    Netty学习笔记

    Netty解决JDK空轮询BUG 1、创建一个新的Selector ... ... Netty的总结 Netty定位: 1 ....SpringBoot内置的容器(Tomcat/Jerry) ...2、直接做服务器(消息推送服务,游戏后台) ...Netty中大文件上传的那个handler是怎么

    前端笔记.zip

    这个文档包含了HTML/css的一些基础,还有JavaScript中的基础语法、DOM、BOM还有一些学习js中面向对象、和移动web开发、AJAX、jQuery的一些总结,还有些Web前端与移动开发面试宝典; 6、什么是事件冒泡/捕获? 事件...

    javascript Promise简单学习使用方法小结

    解决回调函数嵌套太深,并行逻辑必须串行执行,一个Promise代表一个异步操作的最终结果,跟Promise交互的主要方式是通过他的then()方法来注册回调函数,去接收Promise的最终结果值 Promise相关的协议有PromiseA和...

    Android 消息机制问题总结

    Android的消息机制几乎是面试必问的话题,当然也并不是因为面试,而去学习,更重要的是它在Android的开发中是必不可少的,占着举足轻重的地位,所以弄懂它是很有必要的。下面就来说说最基本的东西。 Looper 作用: ...

    Android学习系列教程实例.pdf

    Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................

Global site tag (gtag.js) - Google Analytics