Android源码分析
文章平均质量分 92
基于android-11.0.0_r1的Android源码分析
吹白
这个作者很懒,什么都没留下…
展开
-
Android 11 PackageManagerService源码分析(二):Packages.xml详解
1、开篇在上一篇文章中提到Settings类会在PackageManagerService启动过程中对packages.xml等一些列xml文件进行解析。那么有以下问题:这些文件记录了什么内容?为什么需要这些文件?让我们一起通过阅读源码解决这些问题吧。2、packages.xml文件详解要在真机上拿到packages.xml殊为不易,所以我这里是在模拟器上通过adb命令拉取了一份:adb pull /data/system/packages.xml文件内容精简后如下:<?xml原创 2021-06-09 10:34:29 · 1602 阅读 · 0 评论 -
Android 11 PackageManagerService源码分析(一):PMS启动的总体流程
本文并非从上帝视角来描述PMS的总体设计和运行逻辑,而是记录本人阅读源码的一个过程。分析到后面才会出总结性的文章。1、 PMS概述PMS是Android系统中负责安装包管理的服务,它的主要职责如下:管理系统安装的所有应用程序,包括升级、安装、卸载根据Intent匹配相应的Activity、Service、Provider和BroadcastReceiver等,并提供相关信息解析应用权限,在App调用系统接口的时候,检查App是否具有相应的权限这里所指的PMS包括PackageManag.原创 2021-06-08 12:06:51 · 3112 阅读 · 1 评论 -
Android 11 源码分析之View的测绘流程开始时机:如何在onCreate中获取View的宽高?
1、开篇我们在使用Activity的时候,常常会有在onCreate或者onResume方法中获取View的宽高的需求,但是如果我们直接调用View.getWidth()和View.getHeight()获取到的值是0,很明显此时View的测量工作还没有开始。那么问题来了:View的测量、布局和绘制流程是在什么时候进行的?怎么在onCreate或者onResume方法中获取View的正确宽高?注意:本文分析的是android.app.Activity类的源码,不是androidx.appcom原创 2021-05-13 18:03:53 · 315 阅读 · 1 评论 -
ActivityThread源码分析
1、问题Android 11 Launcher启动流程分析说过,Android App进程的入口是“android.app.ActivityThread”,那么:ActivityThread在Android App中充当一个什么样的角色?它是怎么创建Application的?Application的生命周期是怎样的?第一个Activity是怎么启动的?2、ActivityThread#mainAndroid 11 进程启动分析(一)中可以看到,Android进程创建(fork)之后都会调用入原创 2021-05-12 19:45:30 · 884 阅读 · 1 评论 -
Android Context的设计思想和源码分析
原文地址:https://duanqz.github.io/2017-12-25-Android-Context做了好些年Android,终于可以聊一聊既熟悉又陌生的Context了,每个刚入门的Android开发人员都会接触到它;然而要读懂Context的设计哲学,却又要经过好多轮的认知升级。很多时候,大家是感知不到Context的存在的,笔者最开始“被迫”使用Context,是在自定义控件的时候,布局中有一个按钮,点击一次就发送一次广播,其代码片段如下所示:public class Custom.转载 2021-05-09 15:01:47 · 508 阅读 · 0 评论 -
Android 11进程启动分析(二):Launcher启动流程分析
上篇说到,Launcher是在ActivityManagerService#systemReady方法中启动的public void systemReady(final Runnable goingCallback, @NonNull TimingsTraceAndSlog t) { ... if (bootingSystemUser) { mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady");原创 2021-05-08 16:55:02 · 2460 阅读 · 2 评论 -
Android 11 SystemServer源码分析
SystemServer#main上篇说过,system_server进程启动后会调用SystemServer#main方法,SystemServer#main非常的简单public static void main(String[] args) { new SystemServer().run();}我们再看SystemServer#runprivate void run() { try { ... // The system原创 2021-04-30 17:59:41 · 687 阅读 · 1 评论 -
Android 11 进程启动分析(一): Zygote进程
基于Android 11 的进程启动分析原创 2021-04-29 16:28:07 · 1860 阅读 · 3 评论