Android的Handler类应该是常用到的,多用于线程间的通信,以及子线程发送消息通知UI线程刷新View等等.这里我主要总结下我对整个消息传递机制,包括Handler,Looper,Message,MessageQueue类的理解. Looper类:每一个线程都只能拥有一个Looper对象,这里Android是通过将Looper对象设置为当前线程的线程局部变量(这里涉及到ThreadLocal类),可以通过调用Looper.prepare()方法来使当前线程拥有一个Looper对象(主线程…
一.Looper Looper对象,顾名思义,直译过来就是循环的意思,从MessageQueue中不断取出message. Class used to run a message loop for a thread. Threads by default do not have a message loop associated with them; to create one, call prepare() in the thread that is to run the loop, and…
不要心急,一点一点的进步才是最靠谱的. 读完本文你将了解: 前言 Message 如何获取一个消息 Messageobtain 消息的回收利用 MessageQueue MessageQueue 的属性 何时初始化 消息入队的过程 消息出队的过程 Looper 线程相关 ThreadLocal 无限循环调度 如何停止 Handler Handler 的属性 发送消息 处理消息 移除消息 主线程消息机制 总结 Thanks 前言 本来我以为自己很了解 Handler,在印象中 Android 消息…
Android中的Veiw从内存中到呈现在UI界面上需要依次经历三个阶段:量算 -> 布局 -> 绘图,关于View的量算.布局.绘图的总体机制可参见博文< Android中View的布局及绘图机制>.量算是布局和绘图的基础,所以量算是很重要的一个环节.本文将从源码角度解析View的量算过程,这其中会涉及某些关键类以及关键方法. 对View进行量算的目的是让View的父控件知道View想要多大的尺寸. 量算过程概述 如果要进行量算的View是ViewGroup类型,那么ViewGr…
本文主要分享Netty中事件循环机制的实现. 源码分析基于Netty 4.1 EventLoop 前面分享服务端和客户端启动过程的文章中说过,Netty通过事件循环机制(EventLoop)处理IO事件和异步任务,简单来说,就是通过一个死循环,不断处理当前已发生的IO事件和待处理的异步任务.示例如下 while(true) { process(selector.select()); process(getTask()); } 这种事件循环机制也是一种常用的IO事件处理机制,包括Redis,Mys…
本文来分享Netty中的零拷贝机制以及内存缓冲区ByteBuf的实现. 源码分析基于Netty 4.1.52 Netty中的零拷贝 Netty中零拷贝机制主要有以下几种 1.文件传输类DefaultFileRegion#transferTo,调用FileChannel#transferTo,直接将文件缓冲区的数据发送到目标Channel,减少用户缓冲区的拷贝(通过linux的sendfile函数). 使用read 和 write过程如下 使用sendfile 可以看到,使用sendfile函数可…
Handler的主要用途有两个:(1).在将来的某个时刻执行消息或一个runnable,(2)把消息发送到消息队列. 主要依靠post(Runnable).postAtTime(Runnable, long).postDelayed(Runnable, long).sendEmptyMessage(int).sendMessage(Message).sendMessageAtTime(Message).sendMessageDelayed(Message, long)这些方法来来完成消息调度.p…
It's time to start living the life you've only imagined. 读完本文你将了解: IntentService 简介 IntentService 源码分析 IntentService 的使用 创建 IntentService 的子类 布局界面 调用方代码 运行效果 总结 代码地址 Thanks 在前面两篇文章 源码解读 Android 消息机制( Message MessageQueue Handler Looper) 和 HandlerThre…
Android 开源项目源码解析(第二期) 阅读目录 android-Ultra-Pull-To-Refresh 源码解析 DynamicLoadApk 源码解析 NineOldAnimations 源码解析 SlidingMenu 源码解析 Cling 源码解析 BaseAdapterHelper 源码分析 Side Menu.Android 源码解析 DiscreteSeekBar 源码解析 CalendarListView 源码解析 PagerSlidingTabStrip 源码解析 公共…
眼睛困得要死,但今天的计划不完成又怎么能睡呢?明日复明日,明日何其多啊! 读完本文你将了解: HandlerThread 简介 HandlerThread 源码 HandlerThread 的使用场景 举个栗子 运行结果 总结 代码地址 为了避免 ANR,我们常常需要在线程中做耗时操作,然后把结果抛到主线程进行处理. Android 提供了多种用于这种场景的组件,其中一种就是本篇文章要介绍的 HandlerThread. HandlerThread 简介 源码解读 Android 消息机制( M…