目录

  • 前言
  • 分析
    • ActivityThread 的消息分发机制
  • 总结

前言

前面分析了 Activity 的启动流程,ActivityThread 作为一个非常重要的角色发挥了非常重要的作用,为了对启动流程有更好的理解,所以单独梳理一下 ActivityThread 这个类。

注:整理记录用,非常多不完善之处!

分析

ActivityThread 主要作为 server 端,管理了应用程序的主线程的执行工作,而 ActivityThread 最大的客户端就是 AMS,IApplicationThread 就是 ActivityThread 在 AMS 端的代理。

ActivityThread 的消息分发机制

ActivityThread 中有个类 H 继承了 Handler,用于控制各种消息的分发和处理。

/*
frameworks/base/core/java/android/app/ActivityThread.java
*/class H extends Handler {......public static final int RELAUNCH_ACTIVITY = 160;......@Overridepublic void handleMessage(Message msg) {......switch(msg.what) {......case RELAUNCH_ACTIVITY:handleRelaunchActivityLocally((IBinder) msg.obj);break;......}......}
}

Activity 生命周期的控制,都是由 AMS 通过 IApplicationThead 调用到 ActivityThread 来具体执行。

总结

ActivityThread 源码分析相关推荐

  1. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 源码分析 )

    文章目录 一.ActivityThread 源码分析 二.ActivityThread 部分代码示例 dex 解密时 , 需要将 代理 Application 替换为 真实 Application ; ...

  2. 2-APP启动过程2+ActivityThread源码分析

    下面看下app初始化的主要步骤,app的初始化时从ActivityThread的main()开始的.首先,ActivityThread并不是一个线程,但它从main()跑起来后,它是程序运行的当前环境 ...

  3. ActivityThread源码分析

    1.问题 Android 11 Launcher启动流程分析说过,Android App进程的入口是"android.app.ActivityThread",那么: Activit ...

  4. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )

    文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...

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

    文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...

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

    文章目录 前言 一.ClientTransactionHandler.scheduleTransaction 二.ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 ...

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

    文章目录 前言 一.热启动与冷启动选择 二.AMS 进程中执行的相关操作 三.通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 [Android 启动过 ...

  8. 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 | 源码分析 )

    文章目录 一.获取对象类型分析 二.获取 ContextImpl 类型对象 三.获取 ActivityThread.LoadedApk 类型对象 dex 解密时 , 需要将 代理 Applicatio ...

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

    文章目录 一.Activity 启动源码分析 ( AMS | ActivityManagerService ) 1.Instrumentation 调用 AMS 方法 2.ActivityStarte ...

最新文章

  1. 洛谷P3966 [TJOI2013]单词(后缀自动机)
  2. Golang之空结构体和零长数组的实践
  3. Linux解压rar、zip、war、tar文件
  4. IOS swift项目的单例模式.swift5以后的单例模式
  5. android service交互,Android Activity与Service的交互方式
  6. 手机腾讯视频软件如何开启护眼功能
  7. dart开发Android服务,关于android:在Flutter应用中使用由swagger生成的Dart代码生成的Web服务...
  8. python通过ip池爬_python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会...
  9. [转]OC与JS的交互详解
  10. Facebook人工智能实验室的前世今生
  11. SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别
  12. NIUDAY 七牛美图 AI 共享日 | 大咖云集 邀您共同探索各场景下的 AI 应用与落地...
  13. 音频音量控制工具SoundSource 5 for Mac
  14. 360与百度的竞争分析
  15. 给非天才准备的 GRE 单词背诵方案
  16. Scrum敏捷开发流程
  17. python模拟B-S期权定价模型
  18. 数论—乘法逆元—费马小定理
  19. linux格式化叫大硬盘命令,Linux_format命令 参数说明,格式化 格式化指定卷中的磁盘 - phpStudy...
  20. 人口空间分布格局(1)

热门文章

  1. Python pyecharts绘制词云图
  2. 一篇来自火星的营养减肥技巧
  3. [vue] 解决vue-router在3.0版本以上重复点菜单报错的问题
  4. 读《人人都能用英语》
  5. seo技术:四处一词究竟是什么?怎么运用到网站
  6. echarts饼图显示百分比和显示内容字体及大小属性设置
  7. 如何应用知识管理,成就高绩效项目?
  8. javascript 内置对象Math总结及其案例
  9. openGPS.cn - 如何防范被高精度IP定位采集数据
  10. vuex-mapGetters使用案例解析