
Framework
文章平均质量分 87
系统讲解Framework相关知识
AD钙奶-lalala
叩首问路 码梦为生
展开
-
Android应用程序进程启动流程
有一点需要注意:本文讲的是应用程序进程的启动流程不是应用程序启动流程,应用程序启动流程(根activity启动流程)后面会有专门文章讲解。原创 2022-10-10 17:45:40 · 1552 阅读 · 0 评论 -
Android系统启动(下篇)
路径:frameworks/base/services/core/java/com/android/server/am/ActivityStackSupervisor.java。路径:frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java。路径:frameworks/base/core/java/com/android/internal/os/ZygoteInit.java。原创 2022-10-10 15:11:52 · 1515 阅读 · 0 评论 -
Android系统启动(上篇)
前面我准备开始讲性能优化,讲到一半发现根本讲不下去。性能优化是基于对Framework深入理解的基础上的应用,如果对Framework没有深入的理解的话,又怎么能去很好的去做性能优化呢?所以,我调整了一下顺序。先讲清楚Framework这一块,然后再去补充性能优化专题。我们也是从开机到应用程序画面显示在我们面前这一流程开始。原创 2022-10-09 22:48:12 · 2156 阅读 · 0 评论 -
你所不知道的WMS
如果有不理解的同学,可以看看我的Framework专栏的其他文章,这里默认大家都是有这方面基础的了。打开我的sublimeText,搜索invalidate(),出来很多东西,然后右击,Gotodefinition。首先我们来看一下invalidate的英文是什么意思,一开始可能大家都会去猜这应该是刷新的意思,但是实际却是废弃的意思。我们知道activity是通过window来管理view的,activity是管理生命周期的,view负责具体显示。这个方法代码非常长,是不是似曾相识了!...原创 2022-07-26 23:29:40 · 398 阅读 · 0 评论 -
深入理解Java Binder
如果对AIDL有不理解的,可以先看看这一篇文章再探AIDL_AD钙奶-lalala的博客-优快云博客我们还是延续前面一篇文章的例子来讲解,我们创建的AIDL文件如下然后Build->MakeProject,会自动在build->generated-注释1和注释2处将Java的Parcel对象转换为Native的Parcel对象,注释3处从BinderProxy获取mObject,也就是BpBinder,注释4处调用BpBinder的transact方法。...原创 2022-07-25 23:29:58 · 1025 阅读 · 0 评论 -
深入理解Native Binder
我在前面的一篇文章中已经对Binder有一个概述,下面就开始来深入研究Binder吧。上一篇文章链接:听宇哥讲Binder(Binder核心原理最全解析)_AD钙奶-lalala的博客-优快云博客前面写了一篇关于AIDL的文章,那我们就从AIDL谈起吧。如果对AIDL有不理解的,可以先看看这一篇文章:再探AIDL_AD钙奶-lalala的博客-优快云博客我们还是延续前面一篇文章的例子来讲解,我们创建的AIDL文件如下:然后Build->Make Project,会自动在build->generated-原创 2022-07-10 23:20:40 · 583 阅读 · 0 评论 -
听宇哥讲Binder(Binder核心原理最全解析)
前面写了一篇关于AIDL的文章,那我们就从AIDL谈起吧。如果对AIDL有不理解的,可以先看看这一篇文章:再探AIDL_AD钙奶-lalala的博客-优快云博客我们还是延续前面一篇文章的例子来讲解,我们创建的AIDL文件如下:然后Build->Make Project,会自动在build->generated->aidl_source_output_dir里面生成固定格式的文件。想了解Binder的原理,就先来了解一下AIDL吧。生成的文件如下:这段生成的代码比较长,我们来拆解分析......原创 2022-07-05 23:50:26 · 874 阅读 · 0 评论 -
再探Handler(下)(Handler核心原理最全解析)
我们都知道可以在主线程直接创建Handler,那么问题来了:我们可以在子线程创建一个Handler吗?如何去做呢?方式1:这种方式肯定是可以实现主线程到子线程的通信的,但是这种方式很不友好。首先我们不确定handler对象何时创建好,第二个这个handler只能用在一个地方。那我们就应该思考如何去改进。系统其实给我们提供了一个类HandlerThread,我们可以参考这个类来优化我们的代码。方式2:我们来思考一下,这个类为什么要这样设计?首先我们要明白notifyAll()和wait()必须要都原创 2022-06-23 23:42:26 · 699 阅读 · 0 评论 -
再探Handler(上)(Handler核心原理最全解析)
很久之前也写过Handler的相关文章,现在回过头去看,理解的还是较为浅薄。于是乎,决定再来深入研究一遍Handler。首先抛出一个问题:子线程到主线程的通信方式有哪些?子线程到主线程通信的原理是什么?你可能会回答:RxJava,Handler,EventBus,广播。但是这些表象背后的本质都是一套机制,就是Handler。可以这么说,Android线程间通信的核心就是Handler。首先我们来看Handler的使用,具体的我就不说的,大家想必都很清楚:子线程:handler.sendMessage()主线原创 2022-06-22 03:18:54 · 344 阅读 · 0 评论 -
Linux虚拟内存和物理内存
最近一直在研究Binder机制,但是Binder机制对一些初学者来说并不是很友好。我分析了一下原因,很多人最基本的问题都没有搞清楚。都知道Binder通信只需要拷贝一次数据,然后又是通过内存映射实现的。那么问题来了,什么是内存映射?大概率很多人都不清楚,知其然而不知其所以然。今天,就带你彻底了解内存映射背后的原理。现代操作系统是有虚拟内存和物理内存的概念区分的,但是并不是一开始就有。比如在80年代,那个时候程序是会被全部加载进内存的,所以只有物理内存的概念。但是只有物理内存很明显有很多弊端,比如说每一个原创 2022-05-02 19:33:18 · 782 阅读 · 0 评论 -
再探AIDL
我记得我前几年写过关于AIDL的文章,但是现在看起来这个文章很有问题。AIDL本质上是要解决IPC的问题,而以前的文章并没有很好的体现这一点。最近也在重新从更深的角度去学习IPC机制,所以决定再探AIDL。IPC,全称Inner-Process Communication。我们一般称为进程间通信。首先,第一步是要解决的是AS如何生成一个AIDL文件?我们按以下步骤操作:我们首先定义一个AIDL接口,鼠标选中main,直接new->AIDL->AIDL File。我们在生成的接口里原创 2022-04-29 22:01:43 · 595 阅读 · 0 评论