PackageManagerService启动流程
PackageManagerService启动流程前面通过APK的构建过程和APK的组成结构两篇铺垫,准备研究Apk的安装过程之前,先需要搞清楚PackageManagerService,也就是平时经常听到的PMS,是由SystemServer进程创建的系统服务之一。用API 30的源码阅读PMS服务的初始化流程,新的源码和目前的书籍资料相差较大(普遍基于API 28),源码看起来就比较费时间,因
分类
深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde
共 356 篇文章
PackageManagerService启动流程前面通过APK的构建过程和APK的组成结构两篇铺垫,准备研究Apk的安装过程之前,先需要搞清楚PackageManagerService,也就是平时经常听到的PMS,是由SystemServer进程创建的系统服务之一。用API 30的源码阅读PMS服务的初始化流程,新的源码和目前的书籍资料相差较大(普遍基于API 28),源码看起来就比较费时间,因

深入理解MeasureSpec在View的绘制流程一文中提及到MeasureSpec,但是并没有涉及太多,只是一带而过。MeasureSpec是View测量过程中重要的测量依据,这一篇中阅读MeasureSpec源码理解其作用。1、MeasureSpec介绍MeasureSpec完整的名称是measure specification,直译为中文叫测量规格。1.1、测量模式掩码在了解View的三种测
Android 系统架构详解Android 是由 Google 主导、AOSP(Android 开源项目)维护的开源移动操作系统。自 2008 年发布以来,它已成长为全球市场份额最大的移动平台,覆盖手机、平板、手表、电视、车载乃至物联网设备。Android 之所以能够适配如此多样的硬件,得益于其清晰分明的分层软件栈架构——每一层都为上一层提供服务,并通过定义良好的接口与硬件实现解耦。本文自上而下逐

DecorView添加到Window的流程在Activity的组成结构一文中,了解了Activity的组成,内部持有Window实例,再由这个Window管理布局。Activity中的Window何时被创建并被添加到Activity中的呢?DecorView是如何被加载到Window中的。1、Window的创建在Activity启动流程全新版本一文中,详细捋清了Activity的启动流程。顺着继续

Activity启动流程全新版本(基于API 30)最新的AOSP源码对Activity的启动流程进行了非常大的改动,更好的支持Lifecycle。现在基于API 30源码熟悉一下全新的Activity启动流程。一年前阅读老版本AOSP写的博客仍然保留,传送门:Activity启动流程源码分析。1、从startActivity开始构造启动的Intent,一般通过Activity或者Context的
小巧的对象池PoolsAndroidX的核心库中有一个util工具包,里面有一个用于创建对象池的帮助类:Pools。简短的一百行代码呈现了一个标准对象池的实现。1、Pool<T>接口从源码中看见官方标准的对象池接口定义Pool<T>。2、实现对象池基于上面定义的Pool接口,实现对象池,这对于程序员来说是基本功。看看框架的是怎么实现的。2.1、SimplePool最简单的对象池实现SimplePo
AsyncLayoutInflater源码颇析别看AsyncLayoutInflater源码只有233行,代码质量非常高。二百行左右的代码,值得开发者好好学习。这就是阅读源码的意义,也要写出这样优秀的代码。1、构造AsyncLayoutInflater实例传入Context构造AsyncLayoutInflater实例:初始化AsyncLayoutInflater内部这几个变量:LayoutInf
AsyncLayoutInflater异步加载布局提到应用性能优化,首先就是布局优化:布局臃肿、层级太深等等会导致绘制卡顿,严重的话影响用户体验。在布局优化一文中,提到布局优化相关的知识。如果你的应用布局实在是太复杂加载很耗时,甚至造成应用的卡顿,该如何优化呢?思路就是将耗时的布局加载放到子线程中,加载完毕再回到主线程显示,这就是AsyncLayoutInflater的做法。1、AsyncLayo

OptionsMenu:选项菜单Android中菜单有三种:OptionsMenu、ContextMenu和PopupMenu。后两种见之前写过两篇博客:ContextMenu:上下文菜单和PopupMenu:弹出菜单。1、OptionsMenu简介OptionsMenu是应用的主菜单,另外两种作为菜单的补充。很早之前的旧Android手机中按物理菜单键会弹出OptionsMenu。一般在状态栏上
Monkey:自动化UI压力测试Monkey 是内置在Android系统中的Shell脚本工具,源码在目录/development/cmds/monkey中,用来生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。测试团队使用 Monkey 对正开发中的应用进行压力测试。一般可以测出空指针异常、内存泄漏等问题,再结合Log、hprof文件进行分析。更高级的UI自动化测试框架可以学习使用

Activity的组成结构开发中我们重写Activity的onCreate()方法,调用setContentView(int layoutResID)方法给当前Activity设置布局,其实设置的就是ContentView。从setContentView(int layoutResID)开始通过源码来了解一下Activity界面的组成结构(在理解Window中也提到过):1、ActivityAnd
“本地广播”LocalBroadcastManager源码解析在BroadcastReceiver:广播的使用一文中总结了关于广播的基础知识,关于本地广播和普通广播的区别总结如下:①BroadcastReceiver一般用于应用间消息;LocalBroadcastManager应用内消息传递。②BroadcastReceiver是Binder进程间通信;LocalBroadcastManager内