
FrameWork
文章平均质量分 89
FrameWork层代码学习
今晚打老虎666
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Laucher中activtyA启动APP进程中的ActivityB
然后获取socket命令,拿到发送过来的要fork的进程的相关信息,最后通过fork操作得到两个pid。Launcher通过Instrumentation类,在Instrumentation中通过ServiceManager拿到AMS的Binder和AMS通信,调用AMS里面的startActivity方法,同时把Launcher进程的包名和所对应的ApplicationThread(Binder),intent里面所包含的信息全部传递给AMS的ActivityStart里面的静态的Request。原创 2024-02-03 21:37:56 · 932 阅读 · 0 评论 -
Activity启动流程分析四 ActivtyB的生命周期执行和ActivityA的生命周期执行
我们可以看到onStart生命周期并不是AMS去控制App进程去执行的,AMS只是给了App进程一个ClientTranstion事务,这个事务里面规定了Activity的开始生命周期和结束生命周期,分别是LaunchActivityItem和ResumeActivityItem。AMS在ClientTransaction里面添加了一个起始生命周期和结束生命周期,那么对应的在我们App进程里面的TransactionExecutor事务处理器里面,也是分两步进行。原创 2024-01-31 16:54:16 · 1044 阅读 · 0 评论 -
Activity启动流程分析三 ActivityStackSupervisor启动Activity ClientTransaction在AMS和App之间的通信
ClientTransaction必须要实现Parcelable接口,ClientTransaction里面包含AMS希望App进程的Activity执行的生命周期事件的集合,这些生命周期事件会通过AMS和App进程跨进程通信,把ClientTransaction传递给App进程,最后由App进程执行这些Activity的生命周期事件。在这个函数里面根据栈里面的各种情况去管理启动流程,然后执行源Activity的onPase方法,把onPase包装成一个事务,让源Activity处于可见但不可交互状态;原创 2024-01-31 14:56:32 · 1124 阅读 · 0 评论 -
Activity启动流程分析二 解析Activity启动参数
通过ActivityStartController创建ActivityStarter,并且在ActivityStarter的Request里面保存下来相应的参数后,接下来执行ActivityStart的execute函数,execute会执行executeRequest函数//拿出Request记录的Activity的相关参数//检测判断这些参数是否合规......//创建出我们的目标 ActivityRecord对象,存到传入数组0索引上。原创 2024-01-30 17:37:47 · 1035 阅读 · 0 评论 -
Activity启动流程分析一 总体流程步骤分析
第二步就是在栈中启动activty。Launcher.startActivitySafely()内部调用了Launcher.startActivity()方法,Launcher.startActivity()内部调用了Launcher的父类Activity的startActivity()方法。我们要启动的activity的生命周期肯定是在App进程中执行的,这涉及到AMS和App进程的通信。我们不能直接启动一个activity,首先第一步就是解析要启动activity的启动参数,包括栈信息,启动模式等。原创 2024-01-30 16:18:54 · 963 阅读 · 0 评论 -
Application启动流程分析二 AMS如何拿到App的Binder,Application生命周期怎么启动的
在存储App的Binder到进程对应的ProcessRecord之前,会执行ActivityThread里面ApplicationThread的bindApplication函数,ApplicationThread就是Binder线程池里面的一个子线程,需要通过sendMessage把相关信息发送到主线程里面去创建Application。可以看到在主线程的handleBindApplication方法里面,通过makeApplication函数,在内部通过反射来创建Application。原创 2024-01-30 15:27:09 · 492 阅读 · 0 评论 -
Application启动流程分析一 Zygote是如何fork进程的
一个App启动另外一个App不会直接启动Application,而是启动另外一个App的MainActivity。原创 2024-01-29 22:21:53 · 1122 阅读 · 0 评论 -
AMS简单解析
所有在SystemServiceManager启动的服务都需要继承SystemService是因为方便管理,这里的SystemService只是一个普通的java类,不是SystemService进程。还有App运行时的信息,进程信息,图像信息,内存信息,数据库信息,cpu信息,权限管理信息等等(所以AMS在启动的时候会把这一些列信息对应的服务添加到ServiceManager,当App出现问题的时候,我们可以使用adb命令收集这一系列服务的信息,adb调用服务里面的dump方法)。原创 2024-01-28 23:38:56 · 953 阅读 · 0 评论