前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一张图弄清Activity的启动过程

一张图弄清Activity的启动过程

作者头像
Android技术干货分享
发布2019-03-27 11:28:31
6470
发布2019-03-27 11:28:31
举报
文章被收录于专栏:Android技术分享Android技术分享

Activity启动相关源码比较复杂、涉及到的链路较多,我经常在理清楚一遍之后过一段时间再阅读就和第一次读一样,依旧要费一番功夫才能理清。为了加深对Activity启动过程的理解也方便以后回顾因此我把整个Activity的启动过程总结为一张图。此图基于9.0的Android源码(Activty相关代码虽然在不断重构但核心逻辑还是没变的)。

image.png

图中相关模块的作用

ActivityThread

可以把它理解为应用运行的主线类,它的主要功能有:

包含了应用的入口 : main()

这个函数主要做了下面工作:

  1. 利用ApplicationThread建立了应用与AMS的链接。
  2. 构造了Instrumentation
  3. 创建了应用的Application
  4. 开启了主线程的消息处理模型。
管理应用四大组件的运行

ApplicationThread

它是应用程序在AMS中的Binder对象,AMS利用它可以和ActivityThread通信,四大组件相关回调都是通过它来告诉ActivityThread的。

Instrumentation

这个类伴随着ActivityThread一块诞生,主要用来帮助ActivityThread来管理Activity相关工作。它持有着AMS在应用端的BinderActivityThread主要通过它来和AMS通信。

ActivityManagerService

它是Android最核心的服务,主要管理着Android系统中四大组件的运行,

ActivityStackSupervisor

负责所有Activity栈的管理。内部管理了mHomeStack、mFocusedStack和mLastFocusedStack三个Activity栈。其中,mHomeStack管理的是Launcher相关的Activity栈;mFocusedStack管理的是当前显示在前台Activity的Activity栈;mLastFocusedStack管理的是上一次显示在前台Activity的Activity栈。

ClientLifecycleManager

帮助AMS回调应用程序四大组件生命周期相关方法。

参考文章

(Android 9.0)Activity启动流程源码分析

The End

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图中相关模块的作用
  • ActivityThread
    • 包含了应用的入口 : main()
      • 管理应用四大组件的运行
      • ApplicationThread
        • Instrumentation
        • ActivityManagerService
        • ActivityStackSupervisor
        • ClientLifecycleManager
        • The End
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档