ViewDraw 第一篇 setContentView 流程分析
本篇文章基于 Android N(7.1.1)主要分析下 View 的加载 setContentView 的流程,以对 View 架构有更好的理解。 1 概述setContentView 这个方法用于设置视图布局文件,在 Activity 的 onCreate 方法中,我们会通过该方法传入一个资源 id: 123456789101112public class SplashActivity ext ...
阅读更多
PMS 第 7 篇 - 通过 pm 指令分析 Install 过程
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现! 0 综述本篇文章总结下 install package 的过程,在 Abdroid 7.1.1 上安装一个应用有如下的方式: adb install(根据情况转为 cmd package install 或者 pm install) adb shell cmd package ...
阅读更多
PMS 第 6 篇 - PMS_READY 阶段
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现,本文是作者原创,转载请说明出处! 0 综述最后我们会进入 PMS 初始化的最后阶段: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535 ...
阅读更多
Java 基础 - SPI 机制原理分析
本篇文章简要总结和分析下 Java 的 SPI 机制的原理。 1 概述SPI,全称为 Sevice Provider Interface,是 JDK 内置的一种服务提供发现机制,用于框架扩展和代码替换,主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是解耦; Android 中的 dagger 依赖注入框架的内部就有 SPI 的应用! 2 基本使用 首先要定 ...
阅读更多
ContentProvider篇 2 - ContentProvider 的启动
[toc] 基于 Android 7.1.1,分析 ContentProvider 的架构和原理。 0 综述ContentProvider 是进程间通信的利器之一,充当数据存储和出具共享的中间者,其和核心是 Binder 和匿名共享内存! 我们在访问一个 ContentProvider 的时候,一般情况下都会先拉起该 ContentProvider 所在的进程,然后对其的增删改查: 12Conte ...
阅读更多
PMS 第 5 篇 - PMS_SCAN_END 阶段
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现,本文是作者原创,转载请说明出处! 0 综述system 分区和 data 分区的扫描过程到这里就结束了,下面我们来分析下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344 ...
阅读更多
PMS 第 4 篇 - PMS_DATA_SCAN_START 阶段
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现,本文是作者原创,转载请说明出处! 0 综述通过扫描 system 分区阶段,我们得到如下的几个集合: mExpectingBetter:用来存放那些在 data 分区有更高版本的系统 app! possiblyDeletedUpdatedSystemApps:用来存储那些不存在的 ...
阅读更多
PMS 第 3 篇 - PMS_SYSTEM_SCAN_START 阶段
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现,本文是作者原创,转载请说明出处! 0 综述我们进入第二阶段系统目录扫描来分析,代码比较长,我们来回顾下该阶段的流程:12345678910111213141516171819202122232425262728293031323334353637383940414243444546 ...
阅读更多
PMS 第 2 篇 - PMS_START 阶段
[toc] 基于 Android 7.1.1 源码分析 PackageManagerService 的架构和逻辑实现,本文是作者原创,转载请说明出处! 0 综述我们进入第一阶段来分析,代码比较长,我们先来个总体的阶段回顾: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484 ...
阅读更多
PMS 第 1 篇 - PackageManagerService 初始化
[toc] 本文基于 Android 7.1.1 系统源码,分析 PackageManagerService 的架构和主要业务实现,本文是作者原创,转载请说明出处! 前言PMS 用来管理所有的 package 信息,包括安装、卸载、更新以及解析 AndroidManifest.xml 以组织相应的数据结构,这些数据结构将会被 其他 service 和 application 使用到。 1 PMS ...
阅读更多