
Android
sfdev
这个作者很懒,什么都没留下…
展开
-
《Android内核剖析》读书笔记 第9章 Framework的启动过程
对于Linux内核来说,其实Android系统就是一个普通的Linux应用程序而已,只是在init.rc中被设置为默认启动;Framework运行环境综述任何系统启动过程的本质都是要建立一套系统运行所需的环境;android系统的启动其实就是建立dalvik虚拟机运行所需的环境,总体如下:android系统启动的第一个进程为zygote,意思为“受精卵”,因为接下来所有的D原创 2013-05-16 16:01:39 · 5159 阅读 · 1 评论 -
《Android内核剖析》读书笔记 第13章 View工作原理【触摸消息派发】
相比按键消息,触摸消息也是由ViewRootImpl.WindowInputEventReceiver实例负责接收,然后判断消息类型之后执行不同的方法,对于触摸消息就是执行deliverPointerEvent(.)方法;不同点主要以下几点:触摸消息由消息获取模块InputManagerService直接派发给应用程序,而无需经过Wms内部的预处理,最新的版本中仅仅会对当屏幕关闭时执行原创 2013-06-25 18:43:37 · 5097 阅读 · 1 评论 -
《Android内核剖析》读书笔记 第13章 View工作原理【消息类型与按键消息派发】
View是android系统的三大核心基础组件之一(另外两个分别是Ams和Wms),我们经常提到的Activity/Service/Content Provider/Broadcast Receiver这是应用开发层面的四大组件;View提供了对页面展示各种元素的一种抽象,android系统中用到的所有UI控件(比如按钮、文本框等)都是继承于View类,他主要完成两块核心功能,其一:针对各种按原创 2013-06-25 18:38:00 · 4674 阅读 · 1 评论 -
《Android内核剖析》读书笔记 第13章 View工作原理【View树遍历】
导致View树重新遍历的总体诱因遍历View树意味着整个View需要重新对其包含的子视图分配大小并重绘;一般情况下导致重新遍历的原因有三个:其一,视图本身内部状态发生变化,比如显示属性由GONE到VISIBLE;其二,ViewGroup中添加或删除了视图导致需要重新为子视图分配位置;其三,视图本身的大小发生变化,比如TextView中的文本内容变多变少了;在代码层面这三种情况最后都会直接或间接调用到View中的三个函数:requestLayout/requestFocus/invalidate;由于是V原创 2013-07-09 10:44:47 · 5194 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第13章 View工作原理【View重绘过程】
计算视图大小的过程(Measure)视图大小,准确的来说应该是指视图的布局大小;我们在layout.xml中为每个UI控件设置的layout_width/layout_height两个属性被用来设置父视图给当前视图分配的“窗口”大小,为了开发的方便和对不同屏幕分辨率的兼容适配对这两个参数的赋值一般都使用相对值(也可以使用具体值,比如100dp),比如WRAP_CONTENT/MATCH_PAR原创 2013-07-09 10:58:34 · 5805 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第12章 屏幕绘图基础
Android中的GUI系统是客户端和服务端配合的窗口系统,即后台运行了一个绘制服务,每个应用程序都是该服务端的一个客户端,当客户端需要绘制时,首先请求服务端创建一个窗口,然后在窗口中进行具体的视图内容绘制;对于每个客户端而言,他们都感觉自己独占了屏幕,而对于服务端而言,它会给每一个客户端窗口分配不同的层值,并根据用户的交互情况动态改变窗口的层值,这就给用户造成了所谓的前台窗口和后台窗口的概念;原创 2013-06-20 19:51:34 · 3517 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第8章 创建窗口的过程
本章主要关注的是在APP应用内部页面内容的加载过程,不涉及远程服务端Wms内部逻辑(这部分内容详见《第14章 Wms工作原理》);首先回顾下第6章所介绍过的一些有关窗口相关的内容:对于Wms管理的窗口,具体指的是View,而不是Window类,Window类只是提供对窗口操作的一组抽象API而已;每个Activity都会对应一个窗口IWindow,当Wms收到用户消息之后会将消息派发到原创 2013-06-19 17:11:54 · 4915 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第7章 理解Context
Context在我们实际开发中被广泛用到,比如 startActivity(…)/getResources()/ getSharedPreferences(…)/getSystemService(.)等等;书中把Context理解为一个应用场景,一个Activity实例就是一个应用场景,一个Service实例也是一种应用场景,只是他木有前台界面而已;与Context相关类的继承关系如下:原创 2013-06-09 11:41:28 · 3497 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第6章 应用框架Framework概述
其实android就是基于Linux内核的一个GUI系统,只是他运行在手机上,各种资源都比较有限,而且他不仅处理按键事件,更主要的是处理触控事件;其整体架构可以参考下图(此图来源于网络):本章主要是介绍其中的应用框架层(Application Framework),前面的章节已经提到android是基于多进程设计的,先看看如下手稿图(mac下没找到顺手的UML画图工具),其类名基于4.原创 2013-06-08 18:40:33 · 4267 阅读 · 1 评论 -
《Android内核剖析》读书笔记 第5章 进程间通信核心框架Binder
Binder:英文的意思是别针、回形针。我们经常用别针把两张纸“别”在一起,在android系统中,Binder是用来完成进程间通信IPC的基础框架,即把不同进程“别”在一起,便于各个进程之间可以相互传递消息;如果做过Java服务端开发的话,你也可以理解成一种RPC调用,即在本地直接调用其他进程中的功能;理解该机制将有助于更好的掌握后面的android整体架构设计,因为核心模块之间的通信都是通过B原创 2013-06-05 19:56:51 · 3928 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第18章 Android编译系统
Android编译系统的核心仍然是第1章末尾介绍的Make,基于此建立了一个适合于Android自身的编译框架,该编译框架由各种.mk文件、shell脚本、python脚本共同组成;通过该框架各个系统模块可以单独编译或打包、也可以根据一定的规则进行整合打包输出;框架的核心设计理论有如下几点:建立在Make之上,定义好各类target;并适当引入python、shell脚本;基于COC(原创 2013-05-09 18:53:49 · 5127 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第1章 Linux基础
Android的底层任务管理及驱动都是基于Linux系统的;Linux系统使用的文件系统与Windows(存储类文件系统)差别很大,他采用的是根文件系统(rootfs),特点如下:Linux系统中所有的资源都是文件,比如磁盘、U盘、内存、网络等硬件设备,当然还有磁盘上的数据文件;sys/proc/dev这三个目录他们对应的不是存储空间,而是设备文件,由内核及相应驱动程序维护;存储类文件系统原创 2013-05-08 15:21:00 · 3416 阅读 · 1 评论 -
《Android内核剖析》读书笔记 第3章 源码下载及开发环境配置
有关源码下载与开发环境配置权威的请参见http://source.android.com/source/index.htmlAndroid源码的编译只能在基于Linux的系统中执行,本人是在Mac系统下进行的尝试;Mac系统中开发环境的相关准备Mac系统默认的磁盘文件系统格式是不区分大小写(Case-insensitive)的,而android源码的编译必须基于区分大小写(Ca原创 2013-05-08 15:30:13 · 3445 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第2章 Java基础&异步消息处理模型
dex文件:是对使用标准的Java编译器编译出的class文件内部的各种函数表、变量表等进行优化后重新打包得到的一种文件格式;DexClassLoader:专门用来加载特殊的Class文件格式dex的类装载器;JNI(Java本地接口)调用机制需要使用到JNI的场景主要包括:调用底层驱动、需要高效大量数据处理、复用某些已有代码;Java中调用C函数时,双方的名称需要有一个映原创 2013-05-08 15:26:39 · 3250 阅读 · 0 评论 -
《Android内核剖析》读书笔记 第13章 View工作原理【动画概述】
从动画效果的影响范围角度看,View系统中的动画可以分为三类:窗口动画:窗口对应的动画,其作用对象是Surface;窗口可以是Activity对应的窗口,也可以是对话框这样的子窗口,当然还可以是直接通过WindowManager.addView()添加的任意窗口;布局动画:指ViewGroup容器对象包含的动画,该动画在ViewGroup对象中定义,但实际上影响的却是该容器内的子视图,其本原创 2013-07-15 10:38:51 · 4573 阅读 · 1 评论