分类

Android

深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde

共 356 篇文章

Android

PackageManagerService启动流程

PackageManagerService启动流程前面通过APK的构建过程和APK的组成结构两篇铺垫,准备研究Apk的安装过程之前,先需要搞清楚PackageManagerService,也就是平时经常听到的PMS,是由SystemServer进程创建的系统服务之一。用API 30的源码阅读PMS服务的初始化流程,新的源码和目前的书籍资料相差较大(普遍基于API 28),源码看起来就比较费时间,因

4.0k
APK的组成结构
Android

APK的组成结构

APK的组成结构通过上一篇APK的构建过程了解了Apk的构建,通过AAPT、apksigner、zipalign等工具执行一系列流程,最终生成Android应用程序安装包,扩展名为.apk(全称:Android Package,Android应用程序包),对应的MIME类型为application/vnd.android.package-archive,MIME见了解媒体类型MIME一文。1、AP

2.0k
APK的构建过程
Android

APK的构建过程

APK的构建过程每当编译项目的时候,看着AS执行一系列的task并输出一堆build日志,就非常好奇AndroidStudio做了哪些工作?抽空了解一下Android APK的构建过程,这其中涉及到的内容非常多。应用开发者只需要知道大概的流程,了解一些底层工作原理。不是专业的集成构建开发工程师不需要花时间钻太深,深挖的话每一步都能挖出一本书。从AndroidStudio官方文档 Android S

2.6k
深入理解MeasureSpec
Android

深入理解MeasureSpec

深入理解MeasureSpec在View的绘制流程一文中提及到MeasureSpec,但是并没有涉及太多,只是一带而过。MeasureSpec是View测量过程中重要的测量依据,这一篇中阅读MeasureSpec源码理解其作用。1、MeasureSpec介绍MeasureSpec完整的名称是measure specification,直译为中文叫测量规格。1.1、测量模式掩码在了解View的三种测

1.9k
Android

Android 系统架构详解

Android 系统架构详解Android 是由 Google 主导、AOSP(Android 开源项目)维护的开源移动操作系统。自 2008 年发布以来,它已成长为全球市场份额最大的移动平台,覆盖手机、平板、手表、电视、车载乃至物联网设备。Android 之所以能够适配如此多样的硬件,得益于其清晰分明的分层软件栈架构——每一层都为上一层提供服务,并通过定义良好的接口与硬件实现解耦。本文自上而下逐

167
View的绘制流程
Android

View的绘制流程

View的绘制流程要成为一个优秀的Android开发者就必须要了解View的绘制流程。在DecorView添加到Window中的流程一文我们了解了DecorView添加到Window的整个过程,同时在最后留下了伏笔:View添加到Window的同时,也开启了View的绘制流程。现在继续跟着源码熟悉View的绘制流程。1、接上回--View添加到Window上回说到View添加到Window的流程,

2.0k
DecorView添加到Window的流程
Android

DecorView添加到Window的流程

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

1.9k
Activity启动流程全新版本(基于API 30)
Android

Activity启动流程全新版本(基于API 30)

Activity启动流程全新版本(基于API 30)最新的AOSP源码对Activity的启动流程进行了非常大的改动,更好的支持Lifecycle。现在基于API 30源码熟悉一下全新的Activity启动流程。一年前阅读老版本AOSP写的博客仍然保留,传送门:Activity启动流程源码分析。1、从startActivity开始构造启动的Intent,一般通过Activity或者Context的

2.8k
Android

小巧的对象池Pools

小巧的对象池PoolsAndroidX的核心库中有一个util工具包,里面有一个用于创建对象池的帮助类:Pools。简短的一百行代码呈现了一个标准对象池的实现。1、Pool<T>接口从源码中看见官方标准的对象池接口定义Pool<T>。2、实现对象池基于上面定义的Pool接口,实现对象池,这对于程序员来说是基本功。看看框架的是怎么实现的。2.1、SimplePool最简单的对象池实现SimplePo

1.8k
Android

AsyncLayoutInflater源码颇析

AsyncLayoutInflater源码颇析别看AsyncLayoutInflater源码只有233行,代码质量非常高。二百行左右的代码,值得开发者好好学习。这就是阅读源码的意义,也要写出这样优秀的代码。1、构造AsyncLayoutInflater实例传入Context构造AsyncLayoutInflater实例:初始化AsyncLayoutInflater内部这几个变量:LayoutInf

1.8k
Android

AsyncLayoutInflater异步加载布局

AsyncLayoutInflater异步加载布局提到应用性能优化,首先就是布局优化:布局臃肿、层级太深等等会导致绘制卡顿,严重的话影响用户体验。在布局优化一文中,提到布局优化相关的知识。如果你的应用布局实在是太复杂加载很耗时,甚至造成应用的卡顿,该如何优化呢?思路就是将耗时的布局加载放到子线程中,加载完毕再回到主线程显示,这就是AsyncLayoutInflater的做法。1、AsyncLayo

3.7k
OptionsMenu:选项菜单
Android

OptionsMenu:选项菜单

OptionsMenu:选项菜单Android中菜单有三种:OptionsMenu、ContextMenu和PopupMenu。后两种见之前写过两篇博客:ContextMenu:上下文菜单和PopupMenu:弹出菜单。1、OptionsMenu简介OptionsMenu是应用的主菜单,另外两种作为菜单的补充。很早之前的旧Android手机中按物理菜单键会弹出OptionsMenu。一般在状态栏上

2.0k
Android

Monkey:自动化UI压力测试

Monkey:自动化UI压力测试Monkey 是内置在Android系统中的Shell脚本工具,源码在目录/development/cmds/monkey中,用来生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。测试团队使用 Monkey 对正开发中的应用进行压力测试。一般可以测出空指针异常、内存泄漏等问题,再结合Log、hprof文件进行分析。更高级的UI自动化测试框架可以学习使用

1.8k
Activity的组成结构
Android

Activity的组成结构

Activity的组成结构开发中我们重写Activity的onCreate()方法,调用setContentView(int layoutResID)方法给当前Activity设置布局,其实设置的就是ContentView。从setContentView(int layoutResID)开始通过源码来了解一下Activity界面的组成结构(在理解Window中也提到过):1、ActivityAnd

1.9k
Android

“本地广播”LocalBroadcastManager源码解析

“本地广播”LocalBroadcastManager源码解析在BroadcastReceiver:广播的使用一文中总结了关于广播的基础知识,关于本地广播和普通广播的区别总结如下:①BroadcastReceiver一般用于应用间消息;LocalBroadcastManager应用内消息传递。②BroadcastReceiver是Binder进程间通信;LocalBroadcastManager内

1.8k