
android source code
xu_song
专注于前端及移动端开发
展开
-
Android深入浅出之Surface
Android深入浅出之Surface一 目的本节的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复杂性,我们依然将采用情景分析的办法,找到合适的切入点。一个Activity是怎么在屏幕上显示出来的呢?我将首先把这个说清楚。接着我们把其中的关键调用抽转载 2013-07-04 18:47:33 · 597 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService的简要介绍和学习计划
在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架。事实上,如果我们从整体的角度来看,Android应用程序窗口的实现要更复杂,因为它们的类型和作用不同,且会相互影响。在Android系统中,对系统中的所有窗口进行管理是窗口管理服务WindowManagerService的职责。在本文中,我们就将简要介绍WindowManagerService的职能以及制定学习计划。转载 2014-06-15 23:06:45 · 622 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService对窗口的组织方式分析
我们知道,在Android系统中,Activity是以堆栈的形式组织在ActivityManagerService服务中的。与Activity类似,Android系统中的窗口也是以堆栈的形式组织在WindowManagerService服务中的,其中,Z轴位置较低的窗口位于Z轴位置较高的窗口的下面。在本文中,我们就详细分析WindowManagerService服务是如何以堆栈的形式来组织窗口的。转载 2014-06-16 19:31:26 · 665 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析
在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口。这个启动窗口可以看作是Activity组件的预览窗口,是由WindowManagerService服务统一管理的,即由WindowManagerService服务负责启动和结束。在本文中,我们就详细分析WindowManagerService服务启动和结束Activity组件的启动窗口的过程。转载 2014-06-16 19:38:22 · 1951 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService切换Activity窗口(App Transition)的过程分析
在Android系统中,同一时刻只有一个Activity组件是处于激活状态的,因此,当ActivityManagerService服务激活了一个新的Activity组件时,它就需要通知WindowManagerService服务将该Activity组件的窗口显示出来,这会涉及到将焦点和屏幕等资源从前一个激活的Activity组件切换到后一个激活的Activity组件的过程,本文就详细分析这个过程。转载 2014-06-16 19:39:59 · 2076 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService对输入法窗口(Input Method Window)的管理分析
在Android系统中,输入法窗口是一种特殊类型的窗口,它总是位于需要使用输入法的窗口的上面。也就是说,一旦WindowManagerService服务检测到焦点窗口需要使用输入法,那么它就会调整输入法窗口在窗口堆栈中的位置,使得输入法窗口位于在焦点窗口的上面,这样用户可以通过输入法窗口来录入字母或者文字。本文就将详细分析WindowManagerService服务是如何管理系统中的输入法窗口的。转载 2014-06-16 19:32:58 · 1617 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService对壁纸窗口(Wallpaper Window)的管理分析
在Android系统中,壁纸窗口和输入法窗口一样,都是一种特殊类型的窗口,而且它们都是喜欢和一个普通的Activity窗口缠绵在一起。大家可以充分地想象这样的一个3W场景:输入法窗口在上面,壁纸窗口在下面,Activity窗口夹在它们的中间。在前面一篇文章中,我们已经分析过输入法窗口是如何压在Activity窗口上面的了。在这篇文章中,我们就将继续分析壁纸窗口是如何贴在Activity窗口下面的。转载 2014-06-16 19:34:32 · 1657 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService显示窗口动画的原理分析
在前一文中,我们分析了Activity组件的切换过程。从这个过程可以知道,所有参与切换操作的窗口都会被设置切换动画。事实上,一个窗口在打开(关闭)的过程中,除了可能会设置切换动画之外,它本身也可能会设置有进入(退出)动画。再进一步地,如果一个窗口是附加在另外一个窗口之上的,那么被附加窗口所设置的动画也会同时传递给该窗口。本文就详细分析WindowManagerService服务显示窗口动画的原理。转载 2014-06-16 19:44:37 · 1097 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分
在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity窗口的大小。一个Activity窗口只有知道自己的大小之后,才能对它里面的UI元素进行测量、布局以及绘制。本文将详细分析WindowManagerService服务计算Activity窗口大小的过程。转载 2014-06-16 19:29:19 · 1531 阅读 · 0 评论 -
Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
通过前面几篇文章的学习,我们知道了在Android系统中,无论是普通的Activity窗口,还是特殊的输入法窗口和壁纸窗口,它们都是被WindowManagerService服务组织在一个窗口堆栈中的,其中,Z轴位置较大的窗口排列在Z轴位置较小的窗口的上面。有了这个窗口堆栈之后,WindowManagerService服务就可以按照一定的规则计算每一个窗口的Z轴位置了,本文就详细分析这个计算过程。转载 2014-06-16 19:37:12 · 879 阅读 · 0 评论 -
android的消息处理机制(图+源码分析)——Looper,Handler,Message
作为一个大三的预备程序员,我学习android的一大乐趣是可以通过源码学习google大牛们的设计思想。android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了。这不,前几天为了了解android的消息处理机制,我看了Looper,Handler,Message这几个类的源码,结果又一次被g转载 2013-12-18 19:34:35 · 537 阅读 · 0 评论 -
Android View的绘制流程
View的绘制和事件处理是两个重要的主题,上一篇《图解 Android事件分发机制》已经把事件的分发机制讲得比较详细了,这一篇是针对View的绘制,View的绘制如果你有所了解,基本分为measure、layout、draw 过程,其中比较难理解就是measure过程,所以本篇文章大幅笔地分析measure过程,相对讲得比较详细,文章也比较长,如果你对View的绘制还不是很懂,对measure过程...转载 2018-06-10 10:26:27 · 237 阅读 · 0 评论 -
从源码看invalidate和requestLayout的区别
从源码看invalidate和requestLayout的区别invalidate和requestLayout经常被用来刷新界面,有的时候2个一起用,TextView的源码里也经常看到2者一起用的情况。什么时候该用哪个呢?为什么有的时候2个要一起用呢?本文所从源码是6.0.1来研究下2者的原理和区别以及如何使用。测试工程InvalidateDemoInvalidatePFLAG_DRAWING_C...转载 2018-06-10 11:11:24 · 412 阅读 · 0 评论 -
Android PackageManagerService详细分析
本篇主要分析了系统启动阶段包管理服务的启动流程,其中的几个接口在 apk 安装时也会被调用。包管理服务启动时主要做的工作大致有如下几方面: 1. 建立 java 层的 installer 与 c 层的 installd 的 socket 联接,使得在上层的 install,remove,dexopt等功能最终由 installd 在底层实现 2. 建 立 Packa转载 2014-06-01 22:30:29 · 813 阅读 · 0 评论 -
Android系统启动过程
Android系统启动过程首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。启动的过程如下图所示:(图片来自网上,后面有地址) 下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解转载 2014-06-03 20:23:24 · 620 阅读 · 0 评论 -
Android源码分析-Activity的启动过程
转载请注明出处:http://blog.youkuaiyun.com/singwhatiwanna/article/details/18154335前言Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢。不过本文的侧重点不是它们,我要介绍的是一个Activi转载 2014-04-17 22:13:15 · 662 阅读 · 0 评论 -
Android核心分析 Android应用框架之Activity
Android核心分析Android应用框架之Activity3 Activity设计框架3.1 外特性空间的Activity 我们先来看看,Android应用开发人员接触的外特性空间中的Activity,对于AMS来讲,这个Activity就是客服端的Activity。应用程序员在建立Android应用时,构建Activi转载 2013-09-08 17:42:02 · 839 阅读 · 0 评论 -
Andriod 从源码的角度详解View,ViewGroup的Touch事件的分发机制
转载请注明本文出自xiaanming的博客(http://blog.youkuaiyun.com/xiaanming/article/details/21696315),请尊重他人的辛勤劳动成果,谢谢!今天这篇文章主要分析的是Android的事件分发机制,采用例子加源码的方式让大家深刻的理解Android事件分发的具体情况,虽然网上很多Android的事件分发的文章,有些还写的不错,但是我还是决定转载 2014-04-08 22:17:36 · 589 阅读 · 0 评论 -
Android中View绘制流程以及invalidate()等相关方法分析
转载请注明出处:http://blog.youkuaiyun.com/qinjuning 前言: 本文是我读《Android内核剖析》第13章----View工作原理总结而成的,在此膜拜下作者 。同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 。转载 2013-08-28 23:09:00 · 617 阅读 · 0 评论 -
ActivityThread分析
1. 入口。以前一直都说Activity的人口是onCreate方法。其实android上一个应用的入口,应该是ActivityThread。和普通的java类一样,入口是一个main方法。public static final void main(String[] args) { SamplingProfilerIntegration.start();转载 2013-09-08 16:51:33 · 694 阅读 · 0 评论 -
android2.3 View视图框架源码分析之一:android是如何创建一个view的?
View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类。只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已。 这一篇文章把所有的layout和widget都统称为view,那么android是如何创建一个view的呢? 一。在代码中直接new出来。 比如说你要创建一个TextView的实转载 2013-08-28 23:01:05 · 994 阅读 · 0 评论 -
Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
本文主要内容是讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的。 下文中提到的窗口可泛指我们能看到的界面,包括一个Activity呈现的界面(我们可以将之理解为应用程序窗口),一个Dialog, 一个Toast,一个Menu菜单等。 首先对相关类的作用进行一下简单介绍:转载 2013-09-12 23:14:24 · 963 阅读 · 0 评论 -
Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程。Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态。在本文中,我们就详细分析Activity组件与WindowManagerService的连接过程。转载 2013-07-05 18:30:07 · 989 阅读 · 0 评论 -
ActivityManager和PackageManager框架简介
1.ActivityManager是android框架的一个重要部分,它负责一新ActivityThread进程创建,Activity生命周期的维护,本blog就是着手对ActivityManager框架作一个整体的了解 2.先看一个静态类结构图: 上图很清楚地描述了ActivityManager框架的几个主要类之间的关系,我们做应用开发接触很多的转载 2013-12-23 21:50:31 · 1284 阅读 · 0 评论 -
Android 之ActivityThead、ActivityManagerService 与activity的管理和创建
在android中,Activity是四大组件中比较重要的一个(当然其他的也比较重要),那么android中是怎样管理这些activity的?应用的进程和主线程是怎么创建的,应用的消息循环又是在什么时候创建的?在这篇文章中将详细介绍: 先来看下涉及到的类,通过以下类图对整体先有个大概的印象: ActivityThread:ActivityT转载 2013-03-18 18:56:33 · 852 阅读 · 0 评论 -
ActivityManager框架解析
ActivityManager在操作系统中有重要的作用,本文利用操作系统源码,逐步理清ActivityManager的框架,并从静态类结构图和动态序列图两个角度分别进行剖析,从而帮助开发人员加强对系统框架及进程通信机制的理解。 ActivityManager的作用 参照SDK的说明,可见ActivityManager的功能是与系统中所有运行着的Activity交互提供了接口,主转载 2013-07-20 15:14:51 · 796 阅读 · 1 评论 -
ActivityThread运行框架
http://www.embeddedlinux.org.cn/Androidkernel/77.htm在分析中,我们可以看到真正对应应用进程的不是Application而是ActivityThread。我们从实际的应用堆栈可以看到:NaiveStart.main() ZygoteInit.main ZygoteInit$Metho转载 2013-09-08 16:45:07 · 761 阅读 · 0 评论 -
Android事件分发机制详解:史上最全面、最易懂
前言Android事件分发机制是Android开发者必须了解的基础网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全、思路不清晰、无源码分析、简单问题复杂化等等今天,我将全面总结Android的事件分发机制,我能保证这是市面上的最全面、最清晰、最易懂的本文秉着“结论先行、详细分析在后”的原则,即先让大家感性认识,再通过理性分析从而理解问题;所以,请各位读者先记住结论,再往下继...转载 2018-06-10 16:03:46 · 347 阅读 · 0 评论