[置顶] Android6.0Framework源码解析系列[目录]

时间:2021-09-09 17:19:04

看前人在很久以前就达到我现在远远不及的高度,这让我觉得有些无力。也正是他们趟过的坑能指引我即将前进的路。所以我很庆幸。我庆幸有人指引,我庆幸我在前进。

本着向大牛学习以及知其然知其所以然的精神,准备有目的、系统性的Read The Fucking Source Code。既当作自己的笔记,也希望可以帮助部分后来者。

这是一篇已经阅读的Anroid6.0中Framework源码目录,前期会有顺序、有目的的阅读源码,下一篇多多少少都会和上一篇有些关联,建议先马后看。后续应该会组成一个系列。尽管会有些艰难,还是希望自己能坚持下去。Framework,我来了。

Android Zygote启动流程源码解析

本文依据6.0源码,主要分析Zygote进程的启动流程。Zygote进程是Android和Java世界的开创者。在Android系统中,所有的应用进程和SystemServer进程都是由Zygote进程fork而来。其重要性由此可见一斑。

Android SystemServer启动流程源码解析

Zygote进程由init进程启动,SystemServer进程和应用进程由Zygote进程启动。本文依据6.0源码,主要分析SystemServer进程的启动流程。SystemServer进程的作用是启动各种核心服务,例如Installer、ActivityManagerService、WindowManagerService、PowerManagerService等等。

Android Launcher启动应用程序流程源码解析

  1. 点击桌面Launcher图标后做了哪些工作?
  2. 应用程序什么时候被创建的?
  3. Application和MainActivity的onCreate()方法什么时候被调用的?

本文依据Android6.0源码,从点击Launcher图标,直至解析到MainActivity#OnCreate()被调用。

Android setContentView()源码解析

在Activity中一般第一句就是调用setContentView(R.layout.XXX),但这其中系统做了那些工作?我们知道,在ClassLoader装载了MainActivity之后,首先创建了Application,之后依次调用Application对象的onAttach和onCreate()方法。然后顺序调用第一个Activity的onAttach和onCreate()方法。

Android XML布局文件解析过程源码解析

在Activity#setContentView()中会调用PhoneWindow#setContentView()。而在PhoneWindow#setContentView()中有这么一句mLayoutInflater.inflate(layoutResID, mContentParent)。这行代码的作用是将我们的activity_main.xml填充到mContentParent中去。详见:setContentView源码解析。在写adapter的时候,也经常写mInflater.inflate(layoutResID, null)。那么,这行代码怎么就将xml文件转换成了View或者ViewGroup了呢?

Android 高级自定义Toast及源码解析

Toast中你所不知道的那些细节

Android Activity启动流程源码解析

Activity各个方法是什么时候被调用的?史上最简单也是最详细的Activity启动流程源码解析

Android 使用WindowManager实现悬浮窗及源码解析

极度的简单往往是繁琐的假象。

Android 从源码的角度带你完全解析AsyncTask

你真的会用AsyncTask吗?

Android *视图DecorView的前世今生

自定义View必看的*视图DecorView

Android Volley核心源码解析

1、特别适合数据量小,通信频繁的网络操作。
2、扩展性强。Volley 中大多是基于接口的设计,可配置性强。
3、一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处 理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。
4、默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现。
5、提供简便的图片加载工具。总之Volley就是很牛逼啦!

ThreadLocal源码解析

ThreadLocal不是一个具体的线程。它是一个线程内部的数据存储类,通过它可以再指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其它线程来说则无法获取到数据。

Handler、Message、MessageQueue、Looper调用过程源码浅析

Android异步消息机制分析。消息是怎么传递的?异步又是如何实现的?在看此文章之前建议不太了解ThreadLocal的读者先了解下上一篇文章《ThreadLocal源码浅析》,在后文中会有所涉及。