android源码解析
主要用于解析android framework层源码,干货满满;
一片枫叶_
专注
展开
-
Android源码解析系列
知乎上看了一篇非常不错的博文:<a href="http://zhuanlan.zhihu.com/kaede/20563936">有没有必要阅读ANDROID源码</a>看完之后痛定思过,平时所学往往是知其然然不知其所以然,所以为了更好的深入android体系,决定学习android framework层源码。这篇文章就是源码学习的汇总篇,包含学习源码的流程,文章列表等等,会根据学习的进度不定时更新。原创 2016-02-19 10:33:42 · 32903 阅读 · 8 评论 -
Android源码解析(三十)-->触摸事件分发流程
前面一篇文章中我们分析了App返回按键的分发流程,从Native层到ViewRootImpl层到DocorView层到Activity层,以及在Activity中的dispatchKeyEvent方法中分发事件,最终调用了Activity的finish方法,即销毁Activity,所以一般情况下假如我们不重写Activity的onBackPress方法或者是onKeyDown方法,当我们按下并抬起原创 2016-05-29 15:59:06 · 12320 阅读 · 3 评论 -
Android源码解析(二十九)-->应用程序返回按键执行流程
从这篇文章中我们开始分析android系统的事件分发流程,其实网上已经有了很多关于android系统的事件分发流程的文章,奈何看了很多但是印象还不是很深,所以这里总结一番。android系统的事件分发流程分为很多部分:- Native层 --> ViewRootImpl层 --> DecorView层 --> Activity层 --> ViewGroup层 --> View层原创 2016-05-27 23:13:30 · 15008 阅读 · 1 评论 -
Android源码解析(二十八)-->电源开关机按键事件流程
和截屏按键、HOME按键的处理流程类似,电源按键由于也是系统级别的按键,所以对其的事件处理逻辑是和截屏按键、HOME按键类似,不在某一个App中,而是在PhoneWindowManager的dispatchUnhandledKey方法中。所以和前面两篇类似,这里我们也是从PhoneWindowManager的dispatchUnhandledKey方法开始我们今天电源开关机按键的事件流程分析。原创 2016-05-25 23:39:05 · 16733 阅读 · 1 评论 -
Android源码解析(二十七)-->HOME事件流程
上一篇文章中我们介绍了android系统的截屏事件,事件的处理逻辑不是在App中执行而是在PhoneWindowManager中执行,而本文我们现在主要讲解android系统中HOME按键的事件处理,和截屏事件类似,这里的HOME按键应该都是系统级别的按键事件监听,所以其处理事件的逻辑也应该和截屏事件处理流程类似,HOME按键的处理逻辑也是在PhoneWindowManager的dispatchU原创 2016-05-23 23:43:43 · 18537 阅读 · 0 评论 -
Android源码解析(二十六)-->截屏事件流程
今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程。用过android系统手机的同学应该都知道,一般的android手机按下音量减少键和电源按键就会触发截屏事件(国内定制机做个修改的这里就不做考虑了)。那么这里的截屏事件是如何触发的呢?触发之后android系统是如何实现截屏操作的呢?带着这两个问题,开始我们的源码阅读流程。我们知道这里的截屏事件是通过我们的按键操作触发的,所以这原创 2016-05-22 16:59:59 · 13662 阅读 · 3 评论 -
Android源码解析(二十五)-->onLowMemory执行流程
上篇文章中我们分析了Activity的onSaveInstanceState方法执行时机,知道了Activity一旦执行了onStop方法就会执行onSaveInstanceState方法,具体的信息,可以参见onSaveInstanceState方法执行时机:http://blog.csdn.net/qq_23547831/article/details/51464535 这里我们分析一下Act原创 2016-05-22 00:41:41 · 13427 阅读 · 2 评论 -
Android源码解析(二十四)-->onSaveInstanceState执行时机
我们已经分析过Activity的启动流程,从中也分析了Activity的生命周期。而其中有一个生命周期方法:onSaveInstanceState方法,今天我们主要讲解一下onSaveInstanceState方法的执行时机。 可能部分同学对Activity的onSaveInstanceState方法不是特别熟悉,这里我们简单介绍一下。onSaveInstanceState方法是Activity的原创 2016-05-20 22:51:13 · 30189 阅读 · 11 评论 -
Android源码解析(二十三)-->Android异常处理流程
前面的几篇文章都是讲解的android中的窗口显示机制,包括Activity窗口加载绘制流程,Dialog窗口加载绘制流程,PopupWindow窗口加载绘制流程,Toast窗口加载绘制流程等等。整个Android的界面显示的原理都是类似的,都是通过Window对象控制View组件,实现加载与绘制流程。这篇文章休息一下,不在讲解Android的窗口绘制机制,穿插的讲解一下Android系统的异原创 2016-05-13 22:52:44 · 15935 阅读 · 0 评论 -
Android源码解析(二十二)-->Toast加载绘制流程
前面我们分析了Activity、Dialog、PopupWindow的加载绘制流程,相信大家对整个Android系统中的窗口绘制流程已经有了一个比较清晰的认识了,这里最后再给大家介绍一下Toast的加载绘制流程。其实Toast窗口和Activity、Dialog、PopupWindow有一个不太一眼的地方,就是Toast窗口是属于系统级别的窗口,他和输入框等类似的,不属于某一个应用,即不属于某原创 2016-05-11 23:39:44 · 11233 阅读 · 0 评论 -
Android源码解析(二十一)-->PopupWindow加载绘制流程
在前面的几篇文章中我们分析了Activity与Dialog的加载绘制流程,取消绘制流程,相信大家对Android系统的窗口绘制机制有了一个感性的认识了,这篇文章我们将继续分析一下PopupWindow加载绘制流程。在分析PopupWindow之前,我们将首先说一下什么是PopupWindow?理解一个类最好的方式就是看一下这个类的定义,这里我们摘要了一下Android系统中PopupWindo原创 2016-05-10 23:29:21 · 10357 阅读 · 0 评论 -
Android源码解析(二十)-->Dialog取消绘制流程
上几篇文章中我们分析了Dialog的加载绘制流程,也分析了Acvityi的加载绘制流程,说白了Android系统中窗口的展示都是通过Window对象控制,通过ViewRootImpl对象执行绘制操作来完成的,那么窗口的取消绘制流程是怎么样的呢?这篇文章就以Dialog为例说明Window窗口是如何取消绘制的。有的同学可能会问前几篇文章介绍Activity的加载绘制流程的时候为何没有讲Activ原创 2016-05-04 21:27:32 · 12930 阅读 · 1 评论 -
Android源码解析(十九)-->Dialog加载绘制流程
其实Android系统中所有的显示控件(注意这里是控件,而不是组件)的加载绘制流程都是类似的,包括:Dialog的加载绘制流程,PopupWindow的加载绘制流程,Toast的显示原理等,上一篇文章中,我说在介绍了Activity界面的加载绘制流程之后,就会分析一下剩余几个控件的显示控制流程,这里我打算先分析一下Dialog的加载绘制流程。原创 2016-05-02 00:20:22 · 25742 阅读 · 3 评论 -
Android源码解析(十八)-->Activity布局绘制流程
这篇文章是承接上一篇文章来写的,大家都知道Activity在Android体系中扮演者一个界面展示的角色,通过上一篇文章的分析,我们知道Activity是通过Window来控制界面的展示的,一个Window对象就是一个窗口对象,而每个Activity中都有一个相应的Window对象,所以说一个Activity对象也就可以说是一个窗口对象,而Window只是控制着界面布局文件的加载过程,那么界面布局原创 2016-05-01 00:28:13 · 19588 阅读 · 1 评论 -
Android源码解析(十七)-->Activity布局加载流程
好吧,终于要开始讲讲Activity的布局加载流程了,大家都知道在Android体系中Activity扮演了一个界面展示的角色,这也是它与android中另外一个很重要的组件Service最大的不同,但是这个展示的界面的功能是Activity直接控制的么?界面的布局文件是如何加载到内存并被Activity管理的?android中的View是一个怎样的概念?加载到内存中的布局文件是如何绘制出来的?原创 2016-04-30 00:09:33 · 23556 阅读 · 2 评论 -
Android源码解析(十六)-->应用进程Context创建流程
今天讲讲应用进程Context的创建流程,相信大家平时在开发过程中经常会遇到对Context对象的使用,Application是Context,Activity是Context,Service也是Context,所以有一个经典的问题是一个App中一共有多少个Context?所以这个问题的答案是Application + N个Activity + N个Service。还有就是我们平时在使用Contex原创 2016-04-27 22:55:59 · 10638 阅读 · 1 评论 -
Android源码解析之(十五)-->Activity销毁流程
继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是: onPause(a) –> onCreate(b) –> onStart(b) –> onResume(b) –> onStop(a) 而我们根据源码也验证了这样的生命周期调用序列,那么Activity的销毁流程呢?它的生命周期原创 2016-04-24 16:29:25 · 20240 阅读 · 4 评论 -
Android源码解析之(十四)-->Activity启动流程
好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等,首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍: An activity represents a single screen原创 2016-04-23 19:17:31 · 47873 阅读 · 16 评论 -
Android源码解析之(十三)-->apk安装流程
上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定目录,解析apk文件并安装的过程,这个安装过期实际上是没有图形界面的,底层调用的是我们平时比较熟悉的adb命令,那么我们平时安装apk文件的时候大部分是都过图形界面安装的,那么这种方式安装apk具体的流程是怎样的呢?下面我们就来具体看一下apk的具体安装过程,相信大家都知道如果我们想原创 2016-04-22 19:23:43 · 14703 阅读 · 4 评论 -
Android源码解析之(十二)-->系统启动并解析Manifest的流程
最近有同学问我关于Manifest何时被系统解析的问题,正好也分析到这一块了,索性这一章就讲解一下android系统何时解析Manifest吧,这里的Manifest指的是android安装文件apk中的androidManifest.xml文件是何时被解析的。 大家应该都知道,Android系统启动之后,我们就可以在一个应用中打开另一个从未打开过的应用,或者是在一个应用中发送广播,如果另外一个原创 2016-04-21 10:11:17 · 12464 阅读 · 7 评论 -
Android源码解析之(十一)-->应用进程启动流程
在android guide中有这样的一段关于android应用程序进程的描述:By default, every application runs in its own Linux process. Android starts the process when any of the application's components need to be executed, then shuts原创 2016-04-14 21:15:01 · 12305 阅读 · 1 评论 -
Android源码解析之(十)-->Launcher启动流程
Launcher程序就是我们平时看到的桌面程序,它其实也是一个android应用程序,只不过这个应用程序是系统默认第一个启动的应用程序,这里我们就简单的分析一下Launcher应用的启动流程。不同的手机厂商定制android操作系统的时候都会更改Launcher的源代码,我们这里以android23的源码为例大致的分析一下Launcher的启动流程。通过上一篇文章,我们知道SystemSe原创 2016-04-10 20:16:24 · 18633 阅读 · 7 评论 -
Android源码解析之(一)-->Android项目构建过程
平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run ‘app’就可以在build/outputs/apk生成可以在android设备中安装的apk文件了,那么整个android源码的构建过程是怎么样的呢?我们可以根据Google官方提供的流程图来具体了解构建的过程: 通常的构建过程就是如上图所示,下面是具体描述:1.AAPT(Android Asset原创 2016-02-04 11:50:40 · 18268 阅读 · 7 评论 -
Android源码解析之(九)-->SystemServer进程启动流程
上面一文中我们讲过android系统中比较重要的几个进程:init进程,Zygote进程,SystemServer进程已经各种应用进程,其中Zygote进程是整个android系统的根进程,包含SystemServer进程已经各种应用进程在内的进程都是通过Zygote进程fork出来的,具体可参见:http://blog.csdn.net/qq_23547831/article/details/51原创 2016-04-09 17:40:39 · 19875 阅读 · 6 评论 -
Android源码解析之(八)-->Zygote进程启动流程
大家都知道android系统的Zygote进程是所有的android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的。Zygote(孵化)进程相当于是android系统的根进程,后面所有的进程都是通过这个进程fork出来的,而Zygote进程则是通过linux系统的init进程启动的,也就是说,android系统中各种进程的启动方式init进程 –>原创 2016-04-09 14:42:03 · 11975 阅读 · 3 评论 -
Android源码解析之(七)-->LruCache缓存类
android开发过程中经常会用到缓存,现在主流的app中图片等资源的缓存策略一般是分两级,一个是内存级别的缓存,一个是磁盘级别的缓存。作为android系统的维护者google也开源了其缓存方案,LruCache和DiskLruCache。从android3.1开始LruCache已经作为android源码的一部分维护在android系统中,为了兼容以前的版本android的support-原创 2016-04-09 11:54:50 · 5641 阅读 · 1 评论 -
Android源码解析之(六)-->Log日志
首先说点题外话,对于想学android framework源码的同学,其实可以在github中fork一份,具体地址:https://github.com/android/platform_frameworks_base 这里面基本都是android framework层的源码了。而且最近发现了一个比较不错的github插件:OctoTree,它 是一个浏览器插件,它可以让你在Github 看代码原创 2016-03-23 14:53:28 · 7538 阅读 · 8 评论 -
Android源码解析之(五)-->IntentService
什么是IntentService?简单来说IntentService就是一个含有自身消息循环的Service,首先它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中,废话不多说,我们来看其简单的使用方法:定义一个IntentS原创 2016-03-22 21:39:23 · 7724 阅读 · 2 评论 -
Android源码解析之(四)-->HandlerThread
HandlerThread是个什么东西?查看类的定义时有这样一段话:Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.意思就是说:这个类的作用是创建一原创 2016-03-20 16:04:07 · 8181 阅读 · 0 评论 -
Android源码解析之(二)-->异步消息机制
目前已经有许多针对Handler的解析文章,本文主要是针对自己学习android源码的过程。(一)Handler的常规使用方式public class MainActivity extends AppCompatActivity { public static final String TAG = MainActivity.class.getSimpleName();原创 2016-03-04 16:39:06 · 14238 阅读 · 7 评论 -
Android源码解析之(三)-->异步任务AsyncTask
android的异步任务体系中还有一个非常重要的操作类:AsyncTask,本文主要解析AsyncTask的的使用与源码。首先我们来看一下AsyncTask的基本使用:class MAsyncTask extends AsyncTaskInteger, Integer, Integer> { @Override protected void onPreE原创 2016-03-20 14:47:43 · 8592 阅读 · 6 评论