Android Framework原理
文章平均质量分 87
小小幸运儿
这个作者很懒,什么都没留下…
展开
-
Android 11.0 ActivityManagerService的启动流程
首先推荐一篇文章,ActivityManagerService-AMS启动流程-[Android取经之路]。这篇文章是以Android 10.0源码为基础分析的,写的很详细也很棒,我学习AMS的启动就是看着这篇文章学的,在此先感谢作者的分享。我们都知道,AMS非常重要,关乎着四大组件的启动,同时它也非常非常复杂,如果不是做系统定制开发的想把AMS彻底搞清楚那真的是非常困难的一项巨艰巨的任务。同时,即便是做系统定制开发的人,甚至是Google的开发者也不一定能完全搞清楚。因...原创 2021-07-31 22:42:28 · 635 阅读 · 0 评论 -
Android 11.0 PackageManagerService(三)APK的安装过程
一. APK的安装步骤安装步骤一:把APK的信息通过IO流的形式写入到PackageInstaller.Session中安装步骤二:调用PackageInstaller.Session的commit方法,把APK的信息交给PackageManagerService处理安装步骤三:进行Apk的Copy操作,进行安装二. 点击安装后到完成APK的拷贝流程如下:点击一个未安装的apk后,会弹出安装界面,点击确定按钮后,会进入PacakageInstallerActivity.java的bi原创 2021-07-06 21:32:09 · 4214 阅读 · 8 评论 -
Android 11.0 PackageManagerService(二)APK扫描过程
PackageManagerService的构造函数中调用了scanDirTracedLI方法来扫描某个目录的apk文件。1. 扫描路径在Android 10.0中,PKMS主要扫描以下路径的APK信息:/vendor/overlay/product/overlay/product_services/overlay/odm/overlay/oem/overlay/system/framework/system/priv-app/system/app/vendor/priv-ap原创 2021-06-15 22:56:44 · 3357 阅读 · 11 评论 -
Android 11.0 PackageManagerService(一)工作原理和启动流程
1. 概述 PackageManagerService是Android系统核心服务之一,也是Android中最常用的服务之一。它主要负责的工作如下: 1. 解析AndroidManifest.xml文件,解析清单文件中的所有节点信息。 2. 扫描.apk文件,安装系统应用,本地应用等。 3. 管理本地应用,主要有:安装、卸载、应用信息查询等。2. 核心源码/frameworks/base/core/java/android/app/ApplicationP...原创 2021-03-30 22:40:34 · 5532 阅读 · 2 评论 -
Android 锁屏状态下启动应用很慢的原因分析
最近在工作中遇到一个需求就是,在锁屏状态下直接拨打电话,功能实现之后测试给的反馈是操作之后到电话拨出的时间太长(大概5秒)。希望能优化一下。后来经过分析确定不是应用层的问题。然后就一顿百度、Google,发现了一篇文章专门在分析这个问题。我也是看了人家写的才准备照着这篇文章的思路分析一下源码。首先声明一下,我写的这篇文章是为了记录此问题分析的一个过程,其源码是基于Android 11(Api 30)。话不多说,现在开始。。。拨打电话启动的action为android.intent.action.CA原创 2021-03-12 16:20:54 · 3369 阅读 · 0 评论 -
从源码分析RecyclerView的回收和复用机制
从RecyclerView的名字就可以看出,它的主要作用就是对View的回收。相比较ListView它的优势是它本身不需要关心视图的问题,它不需要关心如何将子View放在合适的位置,不需要关心如何分割这些子View,更不用关心这些子View的外观。它要做的仅仅是回收和复用的工作。现在我们就来看一下如此优秀强大的RecyclerView它负责的工作都是怎样展开的。在开始之前先来看一下关于RecyclerView的灵魂三问,带着这三个问题去源码中找答案,这样可以更好的理解源码,理解它的工作流程。问题一:原创 2020-05-23 23:39:00 · 946 阅读 · 0 评论 -
从源码的角度分析Handler
对于Java开发人员来说多线程和线程间通信是非常重要也是必须要掌握的不可或缺的知识。Android是基于Java语言进行开发的,所以对于Android开发者而言多线程和线程间通信也同样显得极其重要,但是作为Android开发者在开发过程中好像并没有经常的深层次的接触多线程和线程池。这是因为在Android中线程间通信这一重要的知识点已经被Google开发者封装到了Handler中,Handler已...原创 2020-05-09 21:31:20 · 322 阅读 · 0 评论 -
Android Service的绑定过程
本文是《Android进阶解密》一书的读书笔记。书中描述的更加详细再结合其他章节的内容可以更加系统的了解这一部分的内容,所以大家可以移步书本。Service的绑定过程分为两个部分,分别是ContextImpl到AMS的调用过程和Service的绑定过程。在开始学习之前,先将几个相关的类介绍一下。ServiceRecord:跟ActivityRecord功能类似,ActivityRecord用来描述一个Activity,相应的ServiceRecord就是用来描述一个Service。Proce原创 2020-04-22 21:37:28 · 792 阅读 · 0 评论 -
Android Service的启动过程
本文是《Android进阶解密》的读书笔记。所以,可能不会为大家提供多少帮助,我写本文的目的只是为了自己再学习的时候能够有个印象,为自己提供一个方便。Service的启动过程分为两个部分,分别是ContextImpl到ActivityManagerService的调用过程和ActivityThread启动Service的过程。一、ContextImpl到ActivityManagerService的调用过程我们在Activity中启动Service首先调用startService方法,它在Con原创 2020-04-19 21:40:14 · 667 阅读 · 0 评论 -
Android根Activity的启动过程
本文是《Android进阶解密》一书的读书笔记。所以,大家可以直接去买书看看。现在开始记录根Activity的启动过程。该过程很复杂,讲述的是从手机开机进入桌面之后,点击屏幕上App的应用图标开始,直到App启动后显示的第一个应用程序Activity的过程。可以分为三个部分,分别是Launcher请求AMS的过程,AMS到ApplicationThread的调用过程和ActivityThread启动Activity的过程。一、Launcher请求AMS的过程1. 点击应用图标会调用Launche原创 2020-04-18 19:52:08 · 376 阅读 · 0 评论 -
Android-Binder及AIDL基础分析
Android-Binder运行机制总结Binder是Android中的一个类,它实现了IBinder接口。从IPC角度来说,Binder是Android中的一种跨进程通信方式。从Android FrameWork角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等等)和相应ManagerService的桥梁;...原创 2018-11-21 15:27:17 · 321 阅读 · 1 评论 -
Android由滑动冲突看事件分发
在进入正题之前我们先啰嗦点别的东西。想必大家都做过对一个Button同时做Click和Touch事件的监听处理吧,里边出现的情况估计大家也是不陌生的。可是里边的原理至少我没有去看源码弄清楚过,现在我就带着以下问题去源码中找找答案了。问题一:为什么只有View的Touch事件的监听中return false时View的Click事件监听才能得到执行?问题二:View的Click事件到底是什么...原创 2020-02-06 23:50:29 · 198 阅读 · 0 评论