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

Activity启动流程和AMS框架

Activity启动流程是指在Android应用中,一个Activity从创建到启动的整个过程。AMS(Activity Manager Service)框架是Android系统中负责管理Activity的框架。下面是完善且全面的答案:

Activity启动流程主要包括以下几个步骤:

  1. 调用startActivity()方法:在应用代码中调用startActivity()方法,向系统发起启动Activity的请求。
  2. 创建Intent对象:在startActivity()方法中,创建一个Intent对象,用于描述要启动的目标Activity。
  3. 启动模式匹配:AMS根据Intent的信息,匹配启动模式,确定目标Activity的启动方式(例如,standard、singleTop、singleTask、singleInstance)。
  4. 启动Activity生命周期:如果目标Activity不存在,则创建新的Activity对象;如果目标Activity已经存在,则根据启动模式进行相应的生命周期处理。
  5. 调用onCreate()方法:创建Activity实例,并调用其onCreate()方法进行初始化。
  6. 调用onStart()方法:执行完onCreate()方法后,调用onStart()方法,Activity进入可见但不可交互的状态。
  7. 调用onResume()方法:当Activity准备好和用户交互时,调用onResume()方法,Activity进入运行状态。
  8. 显示Activity界面:将Activity的布局渲染到屏幕上,用户可以看到Activity界面。
  9. Activity可交互:用户可以与Activity进行交互,响应用户的输入事件。
  10. 调用onPause()方法:当用户离开当前Activity时,调用onPause()方法,Activity进入暂停状态。
  11. 调用onStop()方法:当Activity完全被覆盖、不可见时,调用onStop()方法,Activity进入停止状态。
  12. 调用onDestroy()方法:当Activity被销毁时,调用onDestroy()方法,释放资源和回收内存。

AMS框架是Android系统中的核心组件之一,负责管理和调度所有的Activity。它提供了以下功能:

  1. Activity的启动和管理:AMS负责管理Activity的生命周期,包括启动、停止、恢复、销毁等操作。
  2. 任务栈管理:AMS维护着一个任务栈(Task Stack),用于存储和管理正在运行的Activity实例。
  3. 启动模式管理:AMS根据Activity的启动模式,决定如何启动一个新的Activity实例或复用已存在的实例。
  4. 进程间通信:AMS支持不同进程之间的通信,使得跨进程的Activity启动成为可能。
  5. 权限管理:AMS负责检查和管理应用程序的权限,并确保只有具有相应权限的应用才能启动相应的Activity。

推荐的腾讯云相关产品和产品介绍链接地址如下:

  • 云服务器(CVM):提供灵活可扩展的云服务器实例,支持各类应用部署。链接:https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):提供多种类型的数据库服务,包括关系型数据库和非关系型数据库。链接:https://cloud.tencent.com/product/cdb
  • 腾讯云音视频处理(VOD):提供高效可靠的音视频处理、转码和分发服务,适用于各种音视频应用场景。链接:https://cloud.tencent.com/product/vod
  • 腾讯云人工智能(AI):提供一系列人工智能服务,如语音识别、图像识别、自然语言处理等。链接:https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):提供可靠安全的物联网连接、设备管理和数据处理服务,支持构建物联网解决方案。链接:https://cloud.tencent.com/product/iot
  • 腾讯云移动应用推送(PUSH):提供全球范围的消息推送服务,帮助开发者实现精准推送和消息管理。链接:https://cloud.tencent.com/product/tpns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解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.2K10

深入理解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.9K20
  • 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )

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

    1.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 实例对象时 , 还需要恢复插件包中的

    61330

    【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.6K30

    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

    81940

    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.2K31

    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

    61650

    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) 最后 文章到这里就结束了,本文主要是分析了一下应用内

    78520

    说说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

    56720

    【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

    4K10

    Android Activity启动流程分析

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

    34730
    领券