`
fxxd1212
  • 浏览: 26406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android深入浅出系列课程---Lesson14Handler-不可缺少的异步

阅读更多
大家好,上一讲我们介绍了虚拟机概述,JIT概述,这一讲我们将进入Handler-不可缺少的异步.
课程目标:
熟悉Handler的概念Handler的实现原理Handler 异步实现方法Handler与线程的关系
重点难点:        Handler与线程的关系Handler消息队列的实现
考核目标:
使用Handler是异步的,它会建立新线程么?noHandler是在主线程内么?Handler的post 和 sentMessage方法,使用的是一个队列还是两个?子线程中建立一个handler,然后sendMessage会怎样?子线程建立handler , 构造的时候传入主线程的,Looper?
Yes  
课后练习:
用Handler实现图片更新的例子去研究Music app控制palyer controller时候的Handler应用
从一道问题开始研究
Handler是做什么的,既然是异步任务处理, 他本身是多线程的么?
Handler是什么,作用以及为何要引入Handler的概念?
Hanlder作用:
1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器
2)线程间通信。在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。

一、    角色描述

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

2.Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里;或者接收Looper( 从Message Queue 取出) 所送来的消息。

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

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

每一个线程里可含有一个Looper 对象以及一个MessageQueue 数据结构。在你的应用程序里,可以定义Handler 的子类别来接收Looper 所送出的消息。
Message
MessageQueue
Looper
当前线程中有一个Looper这样的循环在监听消息队列,但又不是额外的线程,这不是和我们学习的常理相悖么?
Thinking...
Looper 又系统来控制的循环 。
Handler

        我们来做几个实验
一、实验一:验证子线程中用主线程Handler实例操作主线程MessageQueue
1、Handler1.sendMessage,Handler1接收
2、Handler1.sendMessage,
Handler2能接收么?No
3、主线程就一个消息队列,为什么不同Handler实例之间不能共享消息(What Flag)?
二、实验二:验证用子进程默认是没有消息队列的
1、子线程中new Handler(),发消息
2、子线程中用HandlerThread,默认有消息队列
三、子线程的Handler可以使用于子线程的消息队列
1、子线程中得到主线程的Looper,发消息
2、使用Looper.prepare(),Looper.loop()
加载器(Loader):加载到内存:execve().
        实验总结
1、Handler实例与消息处理是关联的,发送和接收要匹配
2、Handler操作队列,主要是在子线程操作主线程消息队列
3、子线程默认是没有消息队列的

本讲对Handler-不可缺少的异步做了简单的介绍,下一讲将进入Dalvik虚拟机概述,内容预告:LLY110602_Dalvik虚拟机概述,敬请期待。


特别推荐新课程:Android开发高端课程
http://www.mobidever.com/forum.php?mod=viewthread&tid=2098
本课视频地址1:http://www.tudou.com/programs/view/61h8EVjtzFI/  (土豆网)
本课视频地址2:http://www.tudou.com/programs/view/Z_0Hilc8Yts/   (土豆网)
课程下载地址:http://www.verycd.com/topics/2900036/ (VeryCD电驴)
作者博客:http://www.mobidever.com/forum.php (Sundy-Android开发联盟)

  • 大小: 91.7 KB
分享到:
评论

相关推荐

    深入浅出Android--Google手持设备应用程序设计(PDF版).rar

    《深入浅出Android--Google手持设备应用程序设计》是一本针对Android开发者的权威指南,它以易懂的语言和实例深入解析了Android系统的核心概念和技术。这本书是PDF格式,适合电子阅读和学习,对于初学者和想要提升...

    深入浅出 Android Google手持设备应用程序设计 电子书 pdf

    《深入浅出 Android Google手持设备应用程序设计》这本书是Android开发者必备的参考资料,它全面而深入地探讨了在Google手持设备上构建应用程序的各种技术和策略。以下将详细解析书中的关键知识点: 1. **Android...

    深入浅出Android--Google手持设备应用程序设计

    《深入浅出Android--Google手持设备应用程序设计》这本书是Android开发者深入理解平台和技术的重要参考资料。它涵盖了Android应用程序开发的各个方面,旨在帮助读者从基础到高级,全面掌握Android应用设计和实现的...

    深入浅出Android--Google手持设备应用程序

    《深入浅出Android--Google手持设备应用程序》这本书是Android开发者必备的参考资料,它全面而深入地探讨了在Google手持设备上构建应用程序的各种技术和实践。在这个技术日新月异的时代,Android作为全球最大的移动...

    深入浅出Android--Google手持设备应用程序设计.pdf

    《深入浅出Android--Google手持设备应用程序设计》这本书旨在为读者提供全面且深入的Android应用开发知识,通过实例解析,让读者逐步掌握Android平台上应用程序的设计与实现。Android系统作为全球最受欢迎的移动操作...

    深入浅出Android--Google手持设备应用程序设计(解压后大小27.9MB)

    《深入浅出Android--Google手持设备应用程序设计》是一本针对Android开发者的权威指南,它涵盖了Android平台的基础到高级概念,旨在帮助读者理解并掌握在Google手持设备上构建应用程序的全面知识。这本书的内容丰富...

    玩转Android---组件篇---Handler的使用

    Handler是Android系统中用于线程间通信的重要工具,它允许开发者在不同的线程间传递消息并执行相应的处理。在Android应用开发中,由于主线程(UI线程)负责处理用户交互,因此耗时操作如网络请求、文件下载不应在...

    Android开发深入浅出

    《Android开发深入浅出》是一本专为Android开发者量身打造的专业指南,无论你是初涉Android开发的新手,还是在该领域有一定经验的开发者,都能从中受益匪浅。这本书全面覆盖了Android平台的基础知识和高级技术,旨在...

    Android深入浅出

    根据提供的信息,我们可以总结出以下关于“Android深入浅出”的知识点: ### 一、概览 **标题**:“Android深入浅出” **描述**:该资源包含一系列与Android开发相关的视频教程下载链接,旨在帮助学习者更好地...

    Android异步更新UI-线程池-Future-Handler实例分析

    Demo-实例讲解线程池里面的UI如何刷新,处理两个开发者头疼的问题: 1. 数据经常需要读取更新,并且比较耗时,需要分步刷新UI. 2. UI界面切换后,如何停止掉子线程里面正在读取的数据而不会将旧数据刷新到新UI界面上...

    Android代码-android-weak-handler

    Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or...

    Android高级应用源码-Android-异步图片加载器.rar

    学习这个源码,我们可以深入理解如何利用Handler、AsyncTask或者更现代的RxJava、LiveData等工具来处理异步任务。同时,还可以学习到如何结合使用BitmapFactory和 Glide的API进行图片的解码和显示。 此外,源码中...

    netty-handler-4.1.68.Final-API文档-中文版.zip

    赠送jar包:netty-handler-4.1.68.Final.jar; 赠送原API文档:netty-handler-4.1.68.Final-javadoc.jar; 赠送源代码:netty-handler-4.1.68.Final-sources.jar; 赠送Maven依赖信息文件:netty-handler-4.1.68....

    超级Android深入浅出课程思维导图 sundy

    ### 超级Android深入浅出课程思维导图 sundy #### 一、思维导图概览 本思维导图由特级Android工程师sundy老师亲自制作,旨在帮助学习者全面掌握Android架构及其核心技术,从宏观到微观进行全方位剖析。 #### 二、...

    Android Handler AsyncTask 异步加载

    在Android应用开发中,Handler、AsyncTask和异步加载是三个关键的概念,它们主要用于解决UI线程阻塞问题,提高应用程序的响应速度和用户体验。下面将详细解释这三个概念及其相互关系。 **Handler(处理器)** ...

    android NDK实现的Hanlder-消息队列-native多线程实例

    本实例关注的是如何在Android NDK环境下实现一个类似Java层的消息队列(Message Queue)和Handler机制,以及如何在原生代码中创建和管理多线程。 首先,我们要理解Java层的Handler和消息队列的工作原理。在Java中,...

    android 线程池 handler异步刷新 双缓存

    总之,理解并熟练运用Android的线程池、Handler、异步刷新以及双缓存机制,是开发高效、稳定、用户体验良好的应用必不可少的基础。在实际项目中,通过封装和模块化这些技术,可以进一步提升开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics