随笔分类 -  Android 内核分析与学习

分析和学习android架构设计 深入理解Android内核设计思想 Android 源码设计模式解析与实战
Android触摸事件传递机制,这一篇就够了
摘要:整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制。 这个触摸事件就是从外层往内层一层层的传递。 整个传递机制,分为3个步骤:分发,拦截,和消费。 1. 触摸事件的类型 事件类型是MotionEvent类:看下最新的sdk29的源码,一堆的Action,我们常用的其 阅读全文

posted @ 2020-02-11 14:22 Joyfulmath 阅读(4728) 评论(0) 推荐(1)

Android binder机制---概述
摘要:1.进程间通讯的原因 目前操作系统都使用虚拟存储技术,管理内存。 假设是32位机器,0-3G是用户空间,3-4G是系统使用。虚拟内存和逻辑内存都按4K分页。这样虚拟内存和逻辑内存就存在对应关系。 一个进程只能操作自己的内存,无法直接访问其他的进程的物理页。 系统进程可以访问所有的物理应用空间。 进程 阅读全文

posted @ 2017-09-05 09:20 Joyfulmath 阅读(798) 评论(0) 推荐(0)

Gui系统之View体系(2)---View的setContent
摘要:1.从SetContentView讲起 1.1Activty的setContentView里面的内容 首先这个getWindow是什么? mWindow, 作用: 在attach@ativity 方法里面定义的。默认就是PhoneWindow.也就是Activity里面包含的window实例。 @O 阅读全文

posted @ 2016-09-17 09:00 Joyfulmath 阅读(1072) 评论(0) 推荐(0)

Android 热修复技术(1)---原理
摘要:热修复技术分为几部分: 原理介绍 Android HotFix源码分析 自定义框架 1.Android分包MultiDex原理 首先Dex是什么东西? Dex就是Window里面的exe文件 也就是可执行问题。 Android没有用传统的Java虚拟机,而是使用dalvik虚拟机。当APK安装到手机 阅读全文

posted @ 2016-08-28 10:20 Joyfulmath 阅读(6463) 评论(0) 推荐(0)

android 事件分发机制
摘要:1.View的事件分发机制 一个button,简单一点就是onTouch,还有onclick事件,我们一个一个来分析 首先响应的是dispatchTouchEvent public boolean dispatchTouchEvent(MotionEvent event) { if (mOnTouc 阅读全文

posted @ 2016-08-28 08:31 Joyfulmath 阅读(18363) 评论(0) 推荐(0)

android Gui系统之WMS(2)----窗口的添加
摘要:Android系统很多,但是最常用的就两类,一类是有系统进场管理的,系统窗口。还有一类就是由应用程序产生的,应用窗口。 1.系统窗口的添加流程 1.1 addStatusBarWindow PhoneStatus.java中 getStatusBarHeight() 获取状态栏的高度 可以看到,高度 阅读全文

posted @ 2016-08-10 15:22 Joyfulmath 阅读(2720) 评论(0) 推荐(2)

android Gui系统之WMS(1)----window flags & view flags
摘要:SurfaceFlinger 前面说的,就是一个surface的合成。SurfaceFlinger就是一个默默的记录着,它不会对surface的内容有什么改动。 WMS(WindowsManagerService)就是对surface的管理,或者说是一个大管家。它负责协调各方面资源。 ViewRoo 阅读全文

posted @ 2016-07-23 09:21 Joyfulmath 阅读(3008) 评论(0) 推荐(0)

android Gui系统之SurfaceFlinger(5)---Vsync(2)
摘要:9.Vsync第二部分 在上一篇中我们讲到,视图的刷新需要很多步骤, 本文将继续分析这些过程。 9.1 handlerMessageInvalidate invalidate 字面意思就是使无效,更进一步就是当前的buffer已经无限,请刷新界面。 啥也没干,buffer已经无效,我换下一个,就是h 阅读全文

posted @ 2016-06-30 22:00 Joyfulmath 阅读(5016) 评论(0) 推荐(2)

android Gui系统之SurfaceFlinger(4)---Vsync(1)
摘要:8.Vsync 8.1概论 VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。 “垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是 阅读全文

posted @ 2016-06-23 14:07 Joyfulmath 阅读(4441) 评论(0) 推荐(0)

android Gui系统之SurfaceFlinger(3)---SurfaceFlinger
摘要:7.SurfaceFlinger SurfaceFlinger在前面的篇幅了,多有涉及。 SurfaceFlinger是GUI刷新UI的核心,所以任何关于SurfaceFlinger的改进都会对android UI系统有重大影响。 SurfaceFlinger主要分为4个部分 1)黄油计划 proj 阅读全文

posted @ 2016-06-17 17:02 Joyfulmath 阅读(4581) 评论(0) 推荐(0)

android Gui系统之SurfaceFlinger(2)---BufferQueue
摘要:6 BufferQueue 上一篇已经说到,BufferQueue是SurfaceFlinger管理和消费surface的中介,我们就开始分析bufferqueue。 每个应用 可以由几个BufferQueue? 应用绘制UI 所需的内存从何而来? 应用和SurfaceFlinger 如何互斥共享资 阅读全文

posted @ 2016-06-15 15:31 Joyfulmath 阅读(6722) 评论(0) 推荐(0)

android Gui系统之SurfaceFlinger(1)---SurfaceFlinger概论
摘要:GUI 是任何系统都很重要的一块。 android GUI大体分为4大块。 1)SurfaceFlinger 2)WMS 3)View机制 4)InputMethod 这块内容非常之多,但是理解后,可以触类旁通,其实现在主流的系统,包括andorid,ios在构架上,都是有很多相识之处。 我们先来讲 阅读全文

posted @ 2016-06-14 18:03 Joyfulmath 阅读(5103) 评论(1) 推荐(0)

android activity 管理器AMS----概述
摘要:AMS & WMS,应该是app端打交道最多的2个framwork层的service。 ActivityManagerService 是android提供给用于管理Activity运行状态的系统进程。 本系列共分3个部分,概述,ActivityStatck & Activiy Task. AMS 主 阅读全文

posted @ 2016-06-06 17:48 Joyfulmath 阅读(5052) 评论(0) 推荐(0)

Android 启动过程简析
摘要:首先我们先来看android构架图:android系统是构建在linux系统上面的。所以android设备启动经历3个过程。Boot Loader,Linux Kernel & Android 系统服务。1.基本启动过程系统引导bootloader 加载boot.img由bootloader 加载内... 阅读全文

posted @ 2015-11-03 17:04 Joyfulmath 阅读(5903) 评论(0) 推荐(1)

android 进程间通信---Service Manager(2)
摘要:关于servicemanager的设计:还是这张结构图,由于ProcessState & IPCThreadState是与binder deriver交互的,所以对于client端来说BpBinder以下的部分是透明的。我们从Activity的getsystemservice来一步步分析整个serv... 阅读全文

posted @ 2015-09-20 09:47 Joyfulmath 阅读(1530) 评论(1) 推荐(0)

android 进程间通信---Service Manager(1)
摘要:Bind机制由4个部分组成。bind驱动,Client,ServiceManager &Service 1.Bind其实是一个基于linux系统的驱动,目的是为了实现内存共享。 bind驱动的东西,由于偏向内核,并且bind机制的内容非常庞大,所以我们暂时略去这个部分。 2.ServiceManag 阅读全文

posted @ 2015-09-04 10:52 Joyfulmath 阅读(4180) 评论(0) 推荐(1)

android 进程间通信---bind的前世
摘要:在分析bind机制之前,我发现已经有一篇文章讲解的非常清晰,并且提出了很多问题。 地址:http://my.oschina.net/keeponmoving/blog/64218 一.Linux系统进程间通信有哪些方式? 1.socket; 2.name pipe命名管道; 3.message qu 阅读全文

posted @ 2015-08-25 14:31 Joyfulmath 阅读(1854) 评论(0) 推荐(0)

android 进程间通信数据(二)------parcel的实现
摘要:Serialize是java原生就自带的东西,我们可以看到android的源码 所以看看android是如何实现parcel的,这对我们自己代码设计有什么启发。 Parcel: 在android中,parcel的源码如下: Frameworks/base/core/java/android/os/P 阅读全文

posted @ 2015-08-25 14:26 Joyfulmath 阅读(2001) 评论(0) 推荐(0)

android 进程间通信数据(一)------parcel的起源
摘要:关于parcel,我们先来讲讲它的“父辈” Serialize。 Serialize 是java提供的一套序列化机制。但是为什么要序列化,怎么序列化,序列化是怎么做到的,我们将在本文探讨下。 一:java 中的serialize 关于Serialize这个东东,think in java其实说的很详 阅读全文

posted @ 2015-08-21 15:34 Joyfulmath 阅读(993) 评论(0) 推荐(0)

android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
摘要:继续分析handler 和looper 先看看handler的 所以消息的处理分层三种,就是 1.传入一个runnable让handler处理。 2.传入要处理的hanglemessage 3.或者子类复写handlermessage。 其实本质是一样的,就是把怎么处理的这个方法,在dispatch 阅读全文

posted @ 2015-08-09 22:32 Joyfulmath 阅读(978) 评论(0) 推荐(0)

导航