首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解Activity启动流程AMS框架(一)

一、前言 一个App是怎么启动起来的? App的程序入口到底是哪里? Activity生命周期到底是什么时候调用的?被谁调用的? 听说还有个AMS的东西,它是做什么的?...它是怎样管理启动Activity的? ActivityThread、ApplicationThread、ActivityRecord、ActivityStack、TaskRecord都是些什么鬼?...我们项目中遇到的关于Activity启动流程的例子? 等等... 你是不是还有很多类似的疑问一直没有解决?...本篇知识框架: ? 二、Activity的生命周期 Activity是最复杂的一种组件,它负责UI的显示以及处理各种输入事件。...程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client、ActivityThread.ApplicationThread为Server)负责调度执行四大组件

1.8K20

深入理解Activity启动流程AMS框架(三)

续: 深入理解Activity启动流程AMS框架(一) 深入理解Activity启动流程AMS框架(二) 5、TaskLauncherMode (1)、如何才能开始一个新的Task?...除了FLAGACTIVITYNEWTASK标志以外,Intent中还定义几个Activity相关的标志: - FLAGACTIVITYCLEARTOP:如果启动Activity已经存在,则把该Activity...的方法处理Activity的显示切换动画。...7、框架图 通过上面AMS启动Activity所调用到的方法分析,这样Activity启动中涉及的所有回调接口我们都找到哦啊了调用的地方,整个流程也就非常清晰。...分析Activity启动流程,无非就是牢牢把握住两条主线:应用进程(ActivityThread)和服务端进程(AMS) ?

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )

文章目录 前言 一、热启动与冷启动选择 二、AMS 进程中执行的相关操作 三、通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 【Android 启动过程...】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 ) 分析的分支是启动 Activity 时 , 没有 Activity 对应的进程 , 需要先调用 Zygote...启动相应进程 , 然后再启动 Activity , 属于冷启动 ; 本篇博客补充下 " 热启动 " 的流程 ; 一、热启动与冷启动选择 ---- 在 ActivityStackSupervisor.startSpecificActivityLocked...// 我们不希望在确保配置尝试恢复重点堆栈的顶级活动的同时,重复启动同一记录。...这包括回调列表最终生命周期状态。

1K10

【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )

插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 ) 【Android 插件化】Hook 插件化框架 ( hook 插件化原理...插件化】Hook 插件化框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取...IActivityManager 对象 ) 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类...AMS 会干掉没有注册过的 Activity , 这里先 在启动 AMS 之前 , 设置一个已经 注册过的 占坑 Activity ( StubActivity ) 执行启动流程 , 在主线程生成...AMS 之前 , 设置一个已经 注册过的 占坑 Activity ( StubActivity ) 执行启动流程 // 在主线程生成 Activity 实例对象时 , 还需要恢复插件包中的

52630

【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )

文章目录 一、Activity 启动源码分析 ( Activity -> AMS 阶段 ) 一、Activity 启动源码分析 ( Activity -> AMS 阶段 ) ---- 调用 startActivity...(new Intent()); 方法启动 Activity , 调用方法原型如下 : public class Activity extends ContextThemeWrapper...因为这个额外的 * 信息,{@link Intent#FLAG_ACTIVITY_NEW_TASK}启动标志不可用 * 必修的;如果未指定,则新活动将添加到 * 调用方的任务...例如,如果您选择的活动 * 如果启动使用{@link Intent#FLAG_ACTIVITY_NEW_TASK},则不会 * 运行您的任务,您将立即收到取消结果。...Application Activity // 插件化时 , 此处是一个 Hook 点 Instrumentation.ActivityResult ar =

2.5K30

Activity启动流程

Activity启动流程很多文章都已经说过了,这里说一下自己的理解。 Activity启动流程分两种,一种是启动正在运行的app的Activity,即启动Activity。...后边启动Activity流程是一样的,区别是前边判断进程是否存在的那部分。 Activity启动的前提是已经开机,各项进程AMS等服务已经初始化完成,在这里也提一下那些内容。...Instrumentation:仪表盘,负责调用ActivityApplication生命周期。测试用到这个类比较多。 流程图 这个图来源自网上,之前也看过很多类似讲流程的文章,但是大都是片段的。...如果是启动Activity,那么就只涉及AMS进程app所在进程。 具体流程 1. Launcher:Launcher通知AMS启动activity。...参考函数流程 Activity启动流程(从Launcher开始): 第一阶段: Launcher通知AMS启动新的Activity(在Launcher所在的进程执行) Launcher.startActivitySafely

79740

Activity启动流程

Activity启动流程很多文章都已经说过了,这里说一下自己的理解。 Activity启动流程分两种,一种是启动正在运行的app的Activity,即启动Activity。...后边启动Activity流程是一样的,区别是前边判断进程是否存在的那部分。 Activity启动的前提是已经开机,各项进程AMS等服务已经初始化完成,在这里也提一下那些内容。...Instrumentation:仪表盘,负责调用ActivityApplication生命周期。测试用到这个类比较多。 流程图 这个图来源自网上,之前也看过很多类似讲流程的文章,但是大都是片段的。...如果是启动Activity,那么就只涉及AMS进程app所在进程。 具体流程 1. Launcher:Launcher通知AMS启动activity。...参考函数流程 Activity启动流程(从Launcher开始): 第一阶段: Launcher通知AMS启动新的Activity(在Launcher所在的进程执行) Launcher.startActivitySafely

1.1K31

Activity启动流程

考察要点: 启动Activity会经历哪些生命周期回调 冷启动大致流程,涉及哪些组件,通信过程是怎么样的? Activity启动过程中,生命周期回调的原理?...进程A与AMS的交互过程 此处以跨进程启动Activity分析一下源码流程: A调用startActivity时,需要与AMS交互,此时需要需要获取到AMS的代理对象Binder也就是上图的AMP,通过...如果上述条件不满足时,会去调用mService.startProcessLocked(r.processName,...)方法启动进程。 2. AMS启动目标进程B !...,并告知Zygote进程启动之后,加载ActivityThread这个类的入口main函数,启动完成后返回进程的pid,并向AMS的Handler发送一个延迟消息,为的是要求目标进程启动后,10秒钟内需要向...); //给activity绑定上下文一些初始化的工作,如createPhoneWindow activity.attach(appContext,...); mInstrumentation.callActivityOnCreate

58750

Android | Activity 启动流程分析

前言 Activity 类是 android 应用的关键组件,在日常开发中,绝对少不了组件。既然用了这么久,你知道他的启动流程?...app 显示在桌面上,等到点击某一个 app 的时候就会 fock 一个新的进程,然后启动 Activity 这篇文章主要来看一下应用内启动 Activity 是一个怎样的流程 一,Activity...中,在 AMS 中回保存他的 client(客户端),这样 AMS 就可以与应用进程进行通信了 IBinder token:Binder 对象,指向了服务端一个 ActivityRecord 对象 Activity...总结一下流程 调用 Activity 的 startActivity 方法来启动目标 Activity 接着就会调用到 Instrunmentation 的 execStartActivity 方法,通过获取...参考 Activity 启动流程 Android 深入研究之 ✨ Activity启动流程 ramework | Activity启动流程(android-31) 最后 文章到这里就结束了,本文主要是分析了一下应用内

66420

说说Activity启动流程

Activity是一个组件,组件的启动是要通过AMS的,Application的启动一样,Activity启动也会涉及到AMS、Zygote以及应用进程之间的socket通信以及Binder调用。...上图就是Activity组件启动流程,当我们通过startActivity启动一个Activity组件的时候,系统首先会向AMS发起调用,AMS会首先检查当前Activity组件所在的应用进程是否已经被启动...之后AMS会在此通过应用进程的Binder调用,调用应用进程创建Activity组件,如上图中的scheduleLaunchActivity 要是应用进程已经启动,就是有上面的6,AMS直接通过应用的Binder...上面的跨进程通信的过程中,除了AMSZygote的通信方式是本地socket,其他的跨进程通信都是通过Binder机制完成的。...经历上面的流程之后,就会调用Activity实例的生命周期onCreate、onResume、onStart

54420

Android Activity启动流程分析

启动绘制流程就必须的熟悉,本文将从Activity启动流程来分析Activity。...启动Activity的方式大致有两种:一种是在桌面点击应用程序的图标,进入应用程序的主界面;另一种是在应用程序中,进入一个新的Activity。...前者属于launcher启动的范畴,本文不做具体的深入分析,后面会具体的分析,不过它的实质是从一个应用的Activity进入另一个应用Activity。...值得注意的是,Android 5.0,7.0等版本中启动Activity流程略微有一些细小的改变,但这并不妨碍我们理解Activity启动流程。...为了满足进程间的通信,Android系统将进程分为了用户(Zygote)进程系统(SystemServer)进程以及各种应用进程等,为了能够实现各种进程之间的通讯,Android系统采用了自己的进程间通讯方式

31430

【Android 启动过程】Android 应用启动流程 | Activity 启动流程

文章目录 一、Android 系统启动流程 二、Activity 启动流程 一、Android 系统启动流程 ---- 打开 Android 手机电源键后 , 先运行 BootLoader , 然后使用...进程 SystemServer 进程 ; Zygote 进程通过 fork() 创建应用进程 ; 整理成如下框图 : 二、Activity 启动流程 ---- Android 应用启动方式有...2 种 , 分为冷启动启动 ; 冷启动 : 后台没有应用进程 , 需要先创建进程 , 然后启动 Activity ; 热启动 : 后台有应用进程 , 不创建进程 , 直接启动 Activity ;...中的相关代码创建 Activity B ; 阶段 3 : 在应用 ActivityThread 主线程中 , 启动 Activity B 页面 ; 简要流程 : Activity A -> ActivityManagerService...方法启动 Activity , 首先获取 system_server 进程中的 ActivityManagerService ( AMS ) , 如果是冷启动 , 执行路线如下 : Launcher

3.8K10
领券